赞
踩
MySQL GTID(Global Transaction Identifier)是MySQL
5.6版本引入的一种全局事务标识符,用于唯一标识一个事务,并确保事务在主从复制中的一致性。
GTID的原理
是通过在主库上为每个事务分配一个全局唯一的标识符。每个GTID由以下三个部分组成:源服务器的唯一标识符(server_uuid)、事务序号(transaction_id),以及集群名称(gtid_domain_id)。这个标识符会随着事务的提交被写入二进制日志,并被主库和从库的服务器记录和追踪。
主从切换
:使用GTID可以简化主从切换的过程,从库可以通过GTID自动找到上一次复制的位置,从而无需手动指定二进制日志文件和偏移量。
数据一致性
:GTID保证了主从复制的数据一致性。主库上的每个事务都被唯一标识,从库会根据GTID进行复制,避免了重复复制或跳过复制的情况。
简化拓扑
:使用GTID,可以更轻松地改变主从复制的拓扑结构,比如添加或移除从库,而无需重新设置复制位置。
1,准备两台虚拟机,自行规划谁是主,谁是从,并安装mysql (此处省略)
2,在主库创建一个同步账户授权给从数据库使用
grant replication slave on *.* to 'sync'@'%' identified by 'HGHnice_666';
flush privileges;
3,修改主库my.cnf配置文件
[mysqld] port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-name-resolve symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid skip-name-resolve log-bin=mysql-bin #开启二进制日志 server-id=11 #服务器ID,必须唯一 gtid-mode=on #开启gtid模式 enforce-gtid-consistency=on #强制gtid一致性,开启后对特定的create table不支持 binlog-format=row #默认为mixed混合模式,更改成row复制,为了数据一致性 log-slave-updates=1 #从库binlog记录主库同步的操作日志 skip-slave-start=1 #跳过slave复制线程 binlog-ignore-db=mysql #lower_case_table_names=1
4,重启主库的mysql
systemctl restart mysqld
5,查看主库gtid开启状态
mysql> show variables like "%GTID%";
6,配置从库的my.cnf文件
[mysqld] port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid skip-name-resolve log-bin=mysql-bin #启用二进制日志,将日志文件保存为 mysql-bin server-id=12 gtid-mode=on #开启gtid enforce-gtid-consistency=on #强制要求在复制过程中严格遵守GTID的一致性,确保数据一致性。 binlog-format=row #设置二进制日志的格式为行级别的格式,以记录每个事务中具体执行的行变更。 log-slave-updates=1 #允许从服务器将接收到的更新事务写入自身的二进制日志文件,用于级联复制中的中继服务器。 skip-slave-start=1 #lower_case_table_names=1
7,重启从库的mysql
systemctl restart mysqld
8,查看gtid的状态
mysql> show variables like "%GTID%";
9,开启主从同步(下面的命令是在从库上执行)
mysql> stop slave;
mysql> change master to
master_host='192.168.10.201',
master_user='sync',
master_password='HGHnice_666',
master_auto_position=1;
mysql> start slave;
使用GTID方式同步的时候,必须指定master_auto_position=1
GTID使用master_auto_position=1代替了基于binlog和position号的主从同步方式,更便于主从同步的搭建
mysql> show slave status\G
看见两个yes,则表示搭建成功(如果显示为no,确保命令是在从库执行,并且配置了防火墙规则,或者之间关闭防火墙)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。