• MYSQL分布式集群使用主从复制


    要达到分布式布局,需要满足2个条件:

    1. 框架程序的支持,如Thinkphp、YII2。

    > TP的支持文档:http://document.thinkphp.cn/manual_3_2.html#distributed_database
    

    2. 数据库的配置,使其支持主从或主主关系拷贝。

    > 主从复制(亦叫 读写分离)
    > 主主复制(亦叫 互为主从,主主互备或双机热备)

    主从复制,亦可称为读写分离

    假设:
    主服务器 -> 192.168.1.110
    从服务器 -> 192.168.1.111

    • 主服务器配置

      • A) 修改配置文件 (开启bin-log)

      • B) 创建授权帐号

    • 从服务器配置

      • A) 修改配置文件 (另置server-id)

      • B) 使用命令开启slave

      • C) 检查从服务器复制功能状态

    主服务器配置

    A) 修改配置文件 (开启bin-log)

    开启日志记录文件

    vim /etc/my.cnf
    server-id=1      #[必须]服务器唯一ID,同步的时候,根据此ID判断,如果server_id是自己就不需要同步
    log-bin=mysql-bin   #[必须]启用二进制日志
    sync_binlog=1    #sync_binlog=n,每n次写入binlog缓存时交换到硬盘里。默认为0,就是根据系统周期进行交换,效率最高,但安全性低,如果要做同步,设置为1。
      
    #保存后,重启数据库
    service mysqld restart
    

    B) 创建授权帐号

    mysql>GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456'; //此处可用具体客户端IP代替,如192.168.1.111,加强安全。
    mysql>flush privileges;  
    

    C) 查看MASTER状态

    mysql>show master status;  
    +------------------+----------+--------------+------------------+  
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
    +------------------+----------+--------------+------------------+  
    | mysql-bin.000004 |      308 |              |                  |  
    +------------------+----------+--------------+------------------+  
    1 row in set (0.00 sec)  
    注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
    

    从服务器配置

    A) 修改配置文件 (另置server-id)

    vim /etc/my.cnf
    server-id=2      #[必须]服务器唯一ID
      
    #保存后,重启数据库
    service mysqld restart
    

    B) 使用命令开启slave

    mysql>change master to master_host='192.168.1.110',master_user='backup',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=308;  
    mysql>start slave; #启动从服务器复制功能
    

    C) 检查从服务器复制功能状态

    mysql> show slave status\G
      
    *************************** 1. row ***************************  
      
               Slave_IO_State: Waiting for master to send event
               Master_Host: 192.168.2.222  //主服务器地址
               Master_User: mysync   //授权帐户名,尽量避免使用root
               Master_Port: 3306    //数据库端口,部分版本没有此行
               Connect_Retry: 60  
               Master_Log_File: mysql-bin.000004  
               Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
               Relay_Log_File: ddte-relay-bin.000003  
               Relay_Log_Pos: 251  
               Relay_Master_Log_File: mysql-bin.000004  
               Slave_IO_Running: Yes    //此状态必须YES
               Slave_SQL_Running: Yes     //此状态必须YES
                     ......  
      
    lave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
    

    以上操作过程,主从服务器配置完成,可以开始测试了。
    在主服务器上插入一条数据,就可以看看从服务器的数据库是否已更新就OK了。

  • 相关阅读:
    模拟器安装.apk包_夜神模拟器
    SDK安装报错_2019
    Jenkins安装插件方法
    Jenkins安装
    Python项目第三方库安装_pip freeze命令
    深入理解Java虚拟机—内存分配
    深入理解Java虚拟机—垃圾回收 下
    深入理解Java虚拟机—垃圾回收 上
    深入理解Java虚拟机—OutOfMemoryError异常
    深入理解Java虚拟机—Java内存区域
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452933.html
Copyright © 2020-2023  润新知