• 配置mysql5.5主从复制、半同步复制、主主复制



    mysql主服务器 192.168.8.40
    mysql从服务器 192.168.8.41


    全新配置过程(主和从数据库都没有数据):

       主从复制主服务器设置:

         1.改server-id
         2.启用二进制日志
         # mkdir /data/binlog

         # chown -R mysql.mysql /data/binlog


         3.创建有复制权限的账号
         mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.8.41' IDENTIFIED BY 'replpass2014';
         mysql> FLUSH PRIVILEGES;


      主从复制 从服务器设置:

          1.给server-id

          2.启用中继日志
          # mkdir /data/relaylog/
          # chown -R mysql.mysql /data/relaylog


          vim /etc/my.cnf
          relay-log = /data/relaylog/relay-bin


          重启服务使之生效
          # service mysqld restart
          3.连接主服务器
          mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014';
          mysql> START SLAVE;


    若主服务器运行了一段时间,并且产生了大量的数据

    则需要先将主从服务器数据保持一致

          
    将主数据库的数据库导出,导入到从服务器中
         # mysqldump --all-databases --flush-logs --master-data=2 --lock-all-tables > /root/all.sql
    从服务器上恢复
         # mysql < all.sql

         mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014',MASTER_LOG_FILE='master-bin.000007',MASTER_LOG_POS=107;


    通过从服务器的状态观察

    mysql > show slave status;


    验证是否一致

    通过在主服务器上添加删除、数据查看slave服务器是否一致


    限制从服务器只读

          在从服务器上启动read-only=ON


          注意:仅能限制那不具有super权限的用户无法执行写操作


    半同步复制


        半同步主服务器设置

    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    mysql> show global variables like '%semi%';
    +------------------------------------+-------+
    | Variable_name                      | Value |
    +------------------------------------+-------+
    | rpl_semi_sync_master_enabled       | OFF   |  (是否启动半同步功能) 
    | rpl_semi_sync_master_timeout       | 10000 |  (连接从节点的超时时间)
    | rpl_semi_sync_master_trace_level   | 32    |(是否检测半同步从节点上线)
    | rpl_semi_sync_master_wait_no_slave | ON    |
    +------------------------------------+-------+


    mysql> set global rpl_semi_sync_master_enabled=1;
    mysql> set global rpl_semi_sync_master_timeout=2000;



    半同步从服务器配置

    mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
    mysql> set global rpl_semi_sync_slave_enabled=1;
    mysql> show global variables like '%semi%';


    mysql> STOP SLAVE IO_THREAD;
    mysql> START SLAVE IO_THREAD;




    在主服务器验证半同步
    mysql> show global status like '%semi%';


    卸载插件:
    uninstall 

    一旦某次等待超时,会自动降级为异步


    双主复制:


    1)、在两台服务器上各自建立一个具有复制权限的用户;

    mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.%.%' IDEnTIFIED BY 'replpass2014';
    mysql> FLUSH PRIVILEGES;

    2)、修改配置文件:

    # 主服务器A上
    [mysqld]
    server-id = 10
    log-bin = mysql-bin
    relay-log = relay-mysql
    # 步长
    auto-increment-increment = 2
    # 起始值
    auto-increment-offset = 1
    #不要自动启用slave
    skip_slave_start


    # 主服务器B上
    [mysqld]
    server-id = 11
    log-bin = mysql-bin
    relay-log = relay-mysql
    # 步长
    auto-increment-increment = 2
    # 起始值
    auto-increment-offset = 2 
    #不要自动启用slave
    skip_slave_start


    说明:
    auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535
    auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535


    创建二进制日志和中继日志目录并授权给mysql用户
    # mkdir /data/relaylog
    # chown -R mysql.mysql /data/relaylog


    # mkdir /data/binlog
    # chown -R mysql.mysql /data/binlog


    重启两台主服务器的mysql服务
    # service mysqld restart

    3)、如果此时两台服务器均为新建立,且无其它写入操作,各服务器只需记录当前自己二进制日志文件及事件位置,以之作为另外的服务器复制起始位置即可



    serverA|mysql> SHOW MASTER STATUSG
    ************************** 1. row ***************************
               File: mysql-bin.000008
           Position: 107
       Binlog_Do_DB: 
    Binlog_Ignore_DB: 
    1 row in set (0.00 sec)


    server2|mysql> SHOW MASTER STATUSG
    mysql> SHOW MASTER STATUSG
    *************************** 1. row ***************************
               File: mysql-bin.000003
           Position: 107
       Binlog_Do_DB: 
    Binlog_Ignore_DB: 
    1 row in set (0.00 sec)

    4、各服务器接下来指定对另一台服务器为自己的主服务器即可:

    主服务器A:
    mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.41',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014',MASTER_LOG_FILE='master-bin.000003',MASTER_LOG_POS=107;



    主服务器B:
    mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass2014',MASTER_LOG_FILE='master-bin.000008',MASTER_LOG_POS=107;

    5.启动复制

    分别在两台服务器中执行
    mysql> start slave;
    通过查看slave状态查看设置是否生效
    mysql> show slave statusG


    6.验证

    分别在两个服务器之间创建数据库,表,插入、删除数据,看是否能够同步并按照指定的步长依次增加数据


  • 相关阅读:
    new
    如何在win7上面安装python的包
    进程
    网络编程模块的使用
    面向对象基础与实例
    类与对象的属性与使用方法
    基础面向对象与面向过程
    RE模块垃圾回收机制
    常用函数模块
    thinkphp6 find_in_set使用实例
  • 原文地址:https://www.cnblogs.com/reblue520/p/6239869.html
Copyright © 2020-2023  润新知