开发者社区> 余二五> 正文

MySQL5.7配置基于GTID的复制及GTID回退到传统模式的方法

简介:
+关注继续查看

MySQL5.7下配置GTID复制的方法:

环境:

CentOS6.8X86_64

MySQL Community 5.7.17

 

node1:192.168.2.171 主库

node2:192.168.2.172 从库

 

修改主库和从库的配置文件,加入红色部分的配置项:

主库:

[mysqld]

log-bin=mysql-bin

binlog_format= ROW

gtid-mode = ON

enforce_gtid_consistency = ON

master-info-repository=TABLE

relay-log-info-repository=TABLE

 

从库:

[mysqld]

log-bin=mysql-bin

binlog_format= ROW

log_slave_updates = ON

gtid-mode = ON

enforce_gtid_consistency = ON

master-info-repository=TABLE

relay-log-info-repository=TABLE


重启主库和从库,使上面的配置生效。

 

然后在node1上导出全量的数据并传到node2:

mysqldump -uroot -proot -q--single-transaction -A  > /root/all.sql

scp /root/all.sql root@192.168.2.172:/root


node2上导入: mysql -uroot -proot < /root/all.sql

 

然后,还要在node1的主库创建个复制权限的账号:

> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.2.%' IDENTIFIED BY 'Abcd@1234';

 

slave上配置change master to指向(如下6行代码):

> change master to

  master_HOST='192.168.2.171',

  master_PORT=3306,

  master_USER='repluser',

  master_PASSWORD='Abcd@1234',

  master_AUTO_POSITION=1;

 

> start slave;

 

> show slave status\G  结果如下:

***************************1. row ***************************

               Slave_IO_State: Waiting formaster to send event

                  Master_Host: 192.168.2.171

                  Master_User: repluser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql.000006

          Read_Master_Log_Pos: 786

               Relay_Log_File:node2-relay-bin.000002

                Relay_Log_Pos: 991

        Relay_Master_Log_File: mysql.000006

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           Replicate_Do_Table:

       Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table:

                   Last_Errno: 0

                   Last_Error:

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 786

              Relay_Log_Space: 1198

              Until_Condition: None

               Until_Log_File:

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File:

           Master_SSL_CA_Path:

              Master_SSL_Cert:

            Master_SSL_Cipher:

               Master_SSL_Key:

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert:No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

             Master_Server_Id:101

                  Master_UUID:e2deedc8-ed36-11e6-b826-000c29f17302

             Master_Info_File:mysql.slave_master_info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has readall relay log; waiting for more updates

           Master_Retry_Count: 86400

                  Master_Bind:

      Last_IO_Error_Timestamp:

     Last_SQL_Error_Timestamp:

               Master_SSL_Crl:

           Master_SSL_Crlpath:

           Retrieved_Gtid_Set:e2deedc8-ed36-11e6-b826-000c29f17302:1-3

            Executed_Gtid_Set:e2deedc8-ed36-11e6-b826-000c29f17302:1-3

                Auto_Position: 1

         Replicate_Rewrite_DB:

                 Channel_Name:

           Master_TLS_Version:


这样,我们的基于GTID的复制就配置完成了。


 

GTID复制转成传统模式的方法:

如果之前启用过了GTID,那么就不能不能再使用传统的change master to的方式了,会报错,如下:

ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS,RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION isactive.

 

要转换成传统模式,需要在my.cnf里面注释掉下面2行:

gtid-mode=ON

enforce_gtid_consistency = ON

然后重启MySQL

 

解决方法:

> stop slave;

> show slave status\G

记录下当前复制到哪里了,如下图红色部分:

wKioL1ihuimyWmntAAAndWA_VBM825.png


> change master to MASTER_AUTO_POSITION=0;      # 设置为0关闭这个选项,这个选项是GTID复制才用到的。

> CHANGE MASTER TO

    MASTER_HOST = '192.168.2.171',

    MASTER_USER='repluser',

    MASTER_PASSWORD='Abcd@1234',

    MASTER_PORT=3306,

    MASTER_LOG_FILE='mysql.000006',

    MASTER_LOG_POS=786,

    MASTER_CONNECT_RETRY=10;

> start slave;

> show slave status\G 验证下是否IO/SQL都是YES状态。如下图,我们已经将GTID复制的转成传统模式了。


wKioL1ihuinAQsQXAABEWafOVnw584.png










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1897447,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
centos6下mysql的主从复制的配置
2015年9月17日 23:00:36 update 想要好好了解mysql复制,还是去看看《高性能MySQL》(第三版)好了,上面说的比较详细。 =========== 在本地用virtualbox安装了两台centos6.7服务器,配置了主从复制。
806 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29290 0
CentOS7 64位下MySQL5.7安装与配置(YUM)
CentOS7 64位下MySQL5.7安装与配置(YUM)http://www.bieryun.com/3277.html 1、配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.
1292 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20766 0
手把手教你MySQL主从复制,配置不成功你找我!(一)
之前很多小伙伴想知道MySQL主从复制的配置步骤,今天它来了。带着你可能碰到的各种异常来了。
24 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23604 0
mysql配置完半同步复制之后报错[ERROR] The server quit without updating PID file
修改配置,MySQL启动报:[ERROR] The server quit without updating PID file     [root@localhost mysql]# /etc/init.
1641 0
jcr
使用 RDS for MySQL 配置到自建数据库的主从复制
场景 出于数据容灾、ETL、异地数据访问等目的,可能需要基于 RDS for MySQL 实例,搭建到自己线下MySQL实例的主从复制。这篇文章将给出简单的操作步骤,供大家参考。由于要使用GTID特性,因此要求MySQL版本>=5.6. 前提条件 操作步骤 配置主实例 登录 RDS 控制台
20905 0
+关注
20377
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载