AB复制:主服务器通过修改mysql配置文件,搭建同步环境,使从服务器能够同步主服务器的数据库。

    注意:主从服务器都需要关闭防火墙。

主服务器:

    修改mysql配置文件,永久产生日志

    #vim /etc/my.cnf

        log-bin='masterlog'

        server-id=1

     创建账户:

        mysql>grant replication slave,reload,super on *.* to 'slave'@'%' identified by '123';

        mysql>flushreplication slave;


replication slave:

        拥有此权限可以查看从服务器,从主服务器读取二进制日志。
    super权限:
        允许用户使用修改全局变量的SET语句以及CHANGE  MASTER语句
    reload权限:
        必须拥有reload权限,才可以执行flush  [tables | logs | privileges] privileges;


slave:用户名,可以自己本身定义

%:工作环境中,一般写从服务器的ip,或者做了本地解析之后,直接写域名。

    #systemctl restart mysqld

 

从服务器:

 修改mysql配置文件:

 #vim /etc/my.cnf

    [mysqld]

        server-id=2

        log-bin=slavelog    //写不写看需求(双主的时候必须写,使用gtid复制方式必须写)

#systemctl restart mysqld

指定主服务器信息

mysql>help change master to  
        mysql>CHANGE MASTER TO
                      MASTER_HOST='master2.example.com',  //主服务器ip
                      MASTER_USER='replication',                      //主服务器用户
                      MASTER_PASSWORD='password',              //用户密码
                      MASTER_PORT=3306,                                  //端口
                      MASTER_LOG_FILE='master2-bin.001',      //binlog日志文件名称
                      MASTER_LOG_POS=4,                                  //日志位置
                      MASTER_CONNECT_RETRY=10;                 //如果同步失败的尝试次数

  mysql>start slave;

  mysql>show slave status\G


同步完成之后,进行测试,如果没有成功,删除从binlog日志,重启服务


但是此方法,需要指定主配置文件的日志名称,日志位置,比较繁琐。

可以采用gtid方式,让其自动寻找同步点:

需要在主从服务器配置文件中开启gtid功能:

主动配置都需要添加:

#vim /etc/my.cnf

gtid_mode=on

enforce_gtid_consistency=1

从服务器只需要以下配置:

mysql>CHANGE MASTER TO
                      MASTER_HOST='master2.example.com',  //主服务器ip
                      MASTER_USER='replication',                      //主服务器用户
                      MASTER_PASSWORD='password',              //用户密码
                      MASTER_PORT=3306,                                  //端口
                      MASTER_AUTO_POSITION=1

完成以后,进行测试,如果不能同步,删除从服务器的binlog,重启服务。