基于gtids的主从复制搭建

slave服务器不小心写入数据的解决方案

如果数据⽐较少,可以通过跳过当前语句的⽅式解决,但是如果从服务器写⼊的数据⽐较多,架构必须重新搭建

可通过变量sql_slave_skip_counter临时跳过事务进⾏处理

mysql> set GLOBAL sql_slave_skip_counter=N # n代表跳过的n个事务

mysql> stop slave;

mysql> start slave;

跳过事务应该在slave上运⾏

传统的ab复制⽅式可以使⽤,基于GTIDs的⽅式不⽀持

基于gtids的主从复制搭建

GTIDs是完全基于事务的,因此不⽀持MYISAM存储引擎

gtids的限制条件:

1. 不⽀持⾮事务引擎(MyISAM)因为可以回导致多个gtid分布给同⼀个事务

2. create table select语句不⽀持(主库语法报错)

3. create、drop temprary table语法不⽀持

4. 必须使⽤enforce-gtid-consistency参数

5. sql-slave-skip-counter不⽀持

6. gtid复制环境中必须统⼀开启gtid或者关闭gtid

7. 在5.7之前使⽤mysql upgrade命令也会出现问题

步骤:

replication是基于传统的⽅式部署,并且已经在运⾏,利⽤已经存在的环境升级⾄基于GTIDs的replication

1. 修改配置⽂件,⽀持GTIDs(主从)

主服务器:

gtid-mode=on

log-slave-updates=1

enforce-gtid-consistency

从服务器:

log-bin=/usr/local/mysql/data/binlog

gtid-mode=on

log-slave-updates=1

enforce-gtid-consistency

skip-slave-start

2. 重启数据库(主从)

service mysql8 restart

3. 为了保证数据⼀直,master和slave都设置为只读

mysql> set @@global.read_only=ON;
Query OK, 0 rows affected (0.01 sec)

4. 从服务器上重新配置同步

即slave重新配置change  master  to

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> reset slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> change master to
    -> master_host='192.168.118.20',
    -> master_user='slave',
    -> master_password='slave',
    -> master_port=3306,
    -> master_auto_position=1;
Query OK, 0 rows affected, 8 warnings (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.118.20
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000015
          Read_Master_Log_Pos: 157
               Relay_Log_File: relaylog.000002
                Relay_Log_Pos: 367
        Relay_Master_Log_File: binlog.000015
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
 

5.关闭主从服务器的只读模式

mysql> set @@global.read_only=OFF;
Query OK, 0 rows affected (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值