基于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

  1. 重启数据库(主从)

service mysql8 restart

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

mysql> set @@global.read_only=ON;

Query OK, 0 rows affected (0.01 sec)

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

即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)

相关推荐
xiaolizi5674891 小时前
安卓远程安卓(通过frp与adb远程)完全免费
android·远程工作
教程分享大师1 小时前
创维E900V22D当贝固件全网通线刷机包 刷机教程开启adb权限及root权限
adb
吉凶以情迁1 小时前
tcl 电视进入开发者模式以及adb进入设置以及各电视打开开发者模式用电脑控制的办法
adb·电脑
阿杰100011 小时前
ADB(Android Debug Bridge)是 Android SDK 核心调试工具,通过电脑与 Android 设备(手机、平板、嵌入式设备等)建立通信,对设备进行控制、文件传输、命令等操作。
android·adb
_Mistletoe1 小时前
adb基础操作及如何使用adb实现设备间的文件传输
adb
XuanRanDev1 小时前
Mumu模拟器12开启ADB调试方法
adb
梨落秋霜1 小时前
Python入门篇【文件处理】
android·java·python
遥不可及zzz4 小时前
Android 接入UMP
android
Coder_Boy_6 小时前
基于SpringAI的在线考试系统设计总案-知识点管理模块详细设计
android·java·javascript
冬奇Lab6 小时前
【Kotlin系列03】控制流与函数:从if表达式到Lambda的进化之路
android·kotlin·编程语言