切换-5.7-GTID复制切换成传统复制

mysql5.7 gtid和传统复制在线切换,5.7.6 之后 不用重启可以直接在线切换

基本环境

  Master Slave
MySQL版本 MySQL-5.7.16-X86_64 MySQL-5.7.16-X86_64
IP 192.168.56.156 192.168.56.157
Port 3306 3306

gtid_mode 几种状态的说明:

off            : 不产生GTID,基于binlog+position ,slave也不能接受GTID的日志

off_permissive : 不产生GTID,但作为slave可以识别到GTID事物,也可以识别非GTID事物

on_permissive  : 产生GTID事物,Slave可以处理GTID事物和非GTID事物

on             : 产生GTID事物,slave只接受GTID事物

1.停止slave

mysql>stop slave;

2. 查看slave状态,记录master_log_file和position信息。

mysql> show slave status \G;

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

Slave_IO_State:

Master_Host: 192.168.56.156

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 428

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 641

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: No

Slave_SQL_Running: No

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: 428

Relay_Log_Space: 842

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: NULL

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: 1563306

Master_UUID: 4dc90770-e120-11e6-9fd7-000c29355816

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 4dc90770-e120-11e6-9fd7-000c29355816:1

Executed_Gtid_Set: 4dc90770-e120-11e6-9fd7-000c29355816:1

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

3.根据上面记录的信息 change master

change master to master_log_file=‘mysql-bin.000001‘,master_log_pos=428,master_auto_position=0;

参数解释:

master_log_file = Relay_Master_Log_File: mysql-bin.000001

master_log_pos = Exec_Master_Log_Pos: 428

master_auto_position=0 禁用: master_auto_position

mysql>start slave;

mysql> show slave status \G;

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.56.156

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 428

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 320

Relay_Master_Log_File: mysql-bin.000001

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: 428

Relay_Log_Space: 561

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: 1563306

Master_UUID: 4dc90770-e120-11e6-9fd7-000c29355816

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all 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:

Executed_Gtid_Set: 4dc90770-e120-11e6-9fd7-000c29355816:1

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

数据测试

略。

4. 更改gtid模式(master和slave都执行)

4.1 master 和 slave都要修改

mysql> set @@global.gtid_mode=on_permissive;

mysql>  show variables like ‘gtid_mode‘;

+---------------+---------------+

| Variable_name | Value         |

+---------------+---------------+

| gtid_mode     | ON_PERMISSIVE |

+---------------+---------------+

on_permissive  产生GTID事物,Slave可以处理GTID事物和非GTID事物

可以在主库上insert数据,show master查看信息。(步骤略)

4.2 master和slave都要修改

mysql> set @@global.gtid_mode=off_permissive;

mysql> show variables like ‘gtid_mode‘;

+---------------+----------------+

| Variable_name | Value          |

+---------------+----------------+

| gtid_mode     | OFF_PERMISSIVE |

+---------------+----------------+

off_permissive 不产生GTID,但作为slave可以识别到GTID事物,也可以识别非GTID事物

可以测试一下 insert into 一条数据, show master status;(具体步骤略)

4.3 master和slave端都要修改

mysql>set @@global.gtid_mode=off;

mysql>show variables like ‘gtid_mode‘;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| gtid_mode     | OFF   |

+---------------+-------+

1 row in set (0.01 sec)

OFF : 不产生GTID,基于binlog+position ,slave也不能接受GTID的日志

5.查看更改是否有效

5.1先记录slave的相关信息

mysql> show slave status\G;

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.56.156

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 194

Relay_Log_File: relay-bin.000008

Relay_Log_Pos: 407

Relay_Master_Log_File: mysql-bin.000004

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: 194

Relay_Log_Space: 695

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: 1563306

Master_UUID: 4dc90770-e120-11e6-9fd7-000c29355816

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all 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: 4dc90770-e120-11e6-9fd7-000c29355816:2-4

Executed_Gtid_Set: 4dc90770-e120-11e6-9fd7-000c29355816:1-4

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

在master做一些数据操作:

略。

如果看到pos的信息变化了,而gtid的信息没有变。说明现在已经转换成了传统复制。

mysql> show slave status \G;

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.56.156

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 469

Relay_Log_File: relay-bin.000008

Relay_Log_Pos: 682

Relay_Master_Log_File: mysql-bin.000004

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: 469

Relay_Log_Space: 970

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: 1563306

Master_UUID: 4dc90770-e120-11e6-9fd7-000c29355816

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all 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: 4dc90770-e120-11e6-9fd7-000c29355816:2-4

Executed_Gtid_Set: 4dc90770-e120-11e6-9fd7-000c29355816:1-4

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

6.最后一步:修改配置文件my.conf

[mysqld]

gtid_mode=off

enforce_gtid_consistency=off

时间: 2024-10-09 14:00:47

切换-5.7-GTID复制切换成传统复制的相关文章

【MySQL】MySQL5.7传统复制切换为GTID复制

赞赏支持 [MySQL]MySQL5.7传统复制切换为GTID复制 前言:最近还是在做MariaDB10.1.12升级为MySQL5.7的升级方案,其中有一个环节涉及到传统复制到GTID复制的在线切换,本文就介绍下如何是现在线切换. 一.参数解析 下面对GTID_MODE变量如下解释: 值 解释 OFF 新事务是非GTID, Slave只接受不带GTID的事务,传送来GTID的事务会报错 OFF_PERMISSIVE 新事务是非GTID, Slave即接受不带GTID的事务也接受带GTID的事务

与MySQL传统复制相比,GTID有哪些独特的复制姿势

前言 GTID(Global Transaction ID)是MySQL5.6引入的功能,可以在集群全局范围标识事务,用于取代过去通过binlog文件偏移量定位复制位置的传统方式.借助GTID,在发生主备切换的情况下,MySQL的其它Slave可以自动在新主上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制位置发生误操作的风险.另外,基于GTID的复制可以忽略已经执行过的事务,减少了数据发生不一致的风险. GTID虽好,要想运用自如还需充分了解其原理与特性,特别要注

linux使用su切换用户提示 Authentication failure的解决方法& 复制文件时,报cp: omitting directory `XXX'

linux使用su切换用户提示 Authentication failure的解决方法:这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码Retype new UNIX password:重复root的密码然后会提示成功的信息. 在说明一点,使用su和sudo是有区别的,使用su切换用户需要

SQLServer 数据库镜像+复制切换方案

目标: 主机做了Mirror和Replication,当主机出现问题时,Replication和Mirror实现自动的故障转移(Mirror 和Replication都切换到备机,而当主机 重新启动后,自动充当备机的角色). 环境: 五台虚拟机,配置均为Windows2008 Enterprise + SQLServer2008R2 Enterprise 08R201:Mirror 见证机(WITNESS)           IP:192.168.56.101 08R202:主机(Rep+Mi

MySQL5.7不停业务将传统复制变更为GTID复制

由于GTID的优势,我们需要将传统基于file-pos的复制更改为基于GTID的复制,如何在线变更成为我们关心的一个点,如下为具体的方法: 目前我们有一个传统复制下的M-S结构: port 3301 master port 3302 slave master上(3301): [zejin] 3301>select * from t_users; +----+------+ | id | name | +----+------+ | 1 | hao | | 2 | zhou | +----+---

Postgresql流复制切换的时候遇到的一个小问题

Pg10搭建了流复制主备切换 配置主库10.10.10.13 pghost4备库10.10.10.14 pghost5 测试主库出现问题,停止后,备库自动切换成为新主库.老主库现在应该是备库了,启动它验证状态.发现备库启动不起来.通过以下方法,备库启动了. 新备库通过pg_ctl start启动,出现告警日志. [[email protected] ~]# su - pg10[email protected]>pg_ctl startwaiting for server to start....

共享文件夹切换用户、局域网共享切换用户的方法

在局域网访问共享文件时,有时候我们需要切换访问用户,便于获得对共享文件访问的不同权限.但是,由于windows操作系统为了方便用户访问共享,提供了用户信息和共享会话记忆功能,使得当用户访问共享文件时,会自动按照用户以前访问共享时的账号密码自动通过验证,而无需再次输入账号密码.这样,当用户想切换用户访问共享文件时常常就比较麻烦. 本文提供了两种方法,可以参考使用:方法1.通过net use命令或 net session命令来删除以前的共享会话,重新验证访问共享文件的用户名和密码 作为客户端: 查看

可实现随意切换的button同时随切换改变title的颜色

-(void)addBtn { NSArray *arr = [[NSArray alloc] initWithObjects:@"未使用",@"已使用",@"已付款",@"退款", nil]; for (int i = 0; i < 4; i ++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame = CGRe

mysql5.6 传统复制模式下1032和1062故障处理

一.环境 master     172.16.1.61      3307 slave      172.16.1.62      3307 二.检查环境 在master上检查 ([email protected]) [(none)]>show processlist\G *************************** 1. row ***************************      Id: 2    User: root    Host: localhost:42483