MySql5.7主从同步配置|GTID模式
数据库主从同步配置是开发中比较常见的需求,在MySql里,主从同步主要有两种,bin-log和gtid。下面就主要总结一下使用GTID模式配置主从同步的过程。
一,概念
- 全局事务标识:global transaction identifiers;
- GTID是一个事务一一对应,并且全局唯一ID;
- 一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致;
- GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制。而是使用MASTER_AUTO_POSTION=1的方式开始复制;
- MySQL-5.6.5开始支持的,MySQL-5.6.10后开始完善;
- 在传统的slave端,binlog是不用开启的,但是在GTID中slave端的binlog是必须开启的,目的是记录执行过的GTID(强制)。
- GTID = source_id:transaction_id
- source_id,用于鉴别原服务器,即mysql服务器唯一的的server_uuid,由于GTID会传递到slave,所以也可以理解为源ID。
- transaction_id,为当前服务器上已提交事务的一个序列号,通常从1开始自增长的序列,一个数值对应一个事务。
- 示例:
- 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
- 前面的一串为服务器的server_uuid,即3E11FA47-71CA-11E1-9E33-C80AA9429562,后面的23为transaction_id
- 更简单的实现failover,不用以前那样在需要找log_file和log_pos;
- 更简单的搭建主从复制;
- 比传统的复制更加安全;
- GTID是连续的没有空洞的,保证数据的一致性,零丢失。
二,配置过程
1,安装mysql5.7,这里需要说明gtid在mysql5.6之后才有,但是mysql5.6上gtid默认是不可用的,而在mysql5.7上是默认可用的。
2,主库配置。sudo vi /etc/my.cnf,添加以下配置,重启mysql。
bin_log=/usr/local/mysql/log/mysql-bin
server_id=96
gtid_mode=on
enforce-gtid-consistency=true
log-slave-updates=on
3,从库配置。sudo vi /etc/my.cnf, 添加以下配置,重启mysql。
server_id=97
relay_log=/usr/local/mysql/log/relay_log
gtid_mode=on
enforce-gtid-consistency=true
log-slave-updates=on
read_only=on
master-info-repository=TABLE
relay-log-info-repository=TABLE
4,主库授权复制用户。
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'root'@'%' identified by 'trnuser123';
5,从库设置要同步的主库信息。
change master to master_host='主库IP',master_port=3306, master_user='root',master_password='trnuser123',master_auto_position=1;
6,开启同步。
start slave;
7,查看状态。
show slave status\G;
配置完之后,通过查看slave的状态,可以看是否配置成功。同时可以在主库进行一些操作,提交一些事务(insert,update),之后数据就会自动同步到从库。
码字不易,如果觉得有帮助,一定要给我点赞哟~~
不然信不信我砸了你家灯,半夜偷亲你 ( ̄ε  ̄) !!!
相关文章
- 线程同步机制
- Vue - 将 Ajax 异步网络请求改为同步执行,等待 Promise 风格的接口请求完毕再执行后面的代码(适用于 “等待接口数据获取成功后,在执行下面的语句“ 等需求)超详细示例及注释解决方案
- 阿里云大数据工厂DataWorks学习之--数据同步任务常见日志报错总结
- 运维--ssh免密配置脚本及同步文件脚本
- 面试题:简述redis主从同步的过程
- C++ 多线程阻塞 (多线程同步)(MsgWaitForMultipleObjects)(连着消息一起控制,牛)
- 【Docker】Docker安装MySQL,并解决中文乱码和配置数据备份同步到宿主机
- 【Docker】多个容器和宿主机之间如何进行数据同步和数据共享?容器数据卷从介绍到常用操作图文教程
- MySQL数据库主从同步安装与配置总结
- 使用 ZooKeeper 同步集群配置
- SAE python django 同步数据库到线上
- C#同步SQL Server数据库Schema
- MySQL 同一台服务器同步数据
- MYSQL管理之主从同步管理
- C#使用Monitor类、Lock和Mutex类进行多线程同步
- kettle根据时间戳增量的将数据从MySQL同步SQLServer(linux部署脚本启动作业、config.properties 配置数据库)