mysql使用gtid恢复_mysql GTID主从复制故障后不停机恢复同步流程

GTID实现主从复制数据同步GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组成,这个全局事务ID不仅仅在原始服务器上唯一,在所有主从关系的mysql服务器上也是唯一的。正式因为这样一个特性使得mysql主从复制变得更加简单,以及数据库一致性更可靠。介绍GTID的概念全局事务标识:global transaction identifiersG...
摘要由CSDN通过智能技术生成

GTID实现主从复制数据同步

GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组成,这个全局事务ID不仅仅在原始服务器上唯一,在所有主从关系的mysql服务器上也是唯一的。正式因为这样一个特性使得mysql主从复制变得更加简单,以及数据库一致性更可靠。

介绍

GTID的概念

全局事务标识:global transaction identifiers

GTID是一个事务一一对应,并且全局唯一ID

一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱不一致

不再使用传统的MASTER_LOG_FILE+MASTER_LOG_POS开启复制,而是采用MASTER_AUTO_POSTION=1的方式开启复制。

从MYSQL-5.6.5及后续版本开始支持

GTID的组成

GTID = server_uuid:transaction_id

server_uuid:mysql服务器的唯一标识,查看方法mysql客户端内:show variables like '%server_uuid%';

transaction_id:此id是当前服务器中提交事务的一个序列号,从1开始自增长,一个数值对应一个事务

GTID号示例:c9fba9e2-db3b-11eb-81d4-000c298d8da1:1-5

GTID的优势

实现主从更简单,不用像以前一样寻找log_file和log_pos

比传统的主从更加安全

GTID是连续没有空洞的,保证数据一致性,零丢失。

GTID工作原理

master更新数据时,会在事务前产生GTID,一同记录到binlog日志中

slave端的I/O线程将变更的binlog,写入到本地的relay log中

SQL线程从relay log中获取GTID,然后对比slave端的binlog是否有记录(所以MySQL5.6 slave端必须开启binlog)

如果有记录,说明该GTID的事务已经执行,slave会忽略

如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog

在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描

开始配置GTID复制

主:192.168.152.253   Centos7

从:192.168.152.252   Centos8

测试数据库:vfan

测试表:student

1、修改mysql服务配置文件,添加以下参数,随后重启:

server-id=100 #server idlog-bin=/var/lib/mysql/mysql-bin #开启binlog并指定存储位置

expire_logs_days=10#日志保存时间为10天

gtid_mode=on #gtid模块开关

enforce_gtid_consistency=on #启动GTID强一致性,开启gtid模块必须开启此功能。

binlog_format=row #bin_log日志格式,共有三种STATEMENT、ROW、MIXED;默认为STATEMENT

skip_slave_start=1 #防止复制随着mysql启动而自动启动

主服务器和从服务器的配置一致即可,server-id更改一下

2、在主服务器中创建从服务器连接的用户

CREATE USER 'copy'@'192.168.152.252' IDENTIFIED BY 'copy';

GRANT REPLICATION SLAVE ON*.* TO 'copy'@'192.168.152.252';

flush privileges;

创建完毕记得要测试下slave机是否能登录成功

3、使用mysqldump使两数据库数据同步

主mysql执行:

mysqldump-uroot -proot1 vfan >dump2.sqlscp dump2.sql 192.168.152.252:/data/从mysql执行:

mysql> source /data/dump2.sql

当前主、从服务器数据内容一致,都是以下数据:

mysql> select *from student;+----+------+-----+

| id | name | age |

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

| 1 | Tony | 18 |

| 2 | Any | 17 |

| 3 | Goy | 20

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值