GTID 基于事务ID复制(主从复制)
GTID 基于事务ID复制
GTID的工作原理
1、master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。
2、slave端的i/o 线程将变更的binlog,写入到本地的relay log中。
3、sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。
4、如果有记录,说明该GTID的事务已经执行,slave会忽略。
5、如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。
主从复制
环境:centos7
准备两台机器
master(主机) 10.0.0.131
slave(从机) 10.0.0.130
修改主机名
hostnamectl set-hostname 主机名
添加域名解析
可选项,可以不做
添加解析尽量两台机器都做解析
vim /etc/hosts
#添加如下
10.0.0.131 master
10.0.0.130 slave
关闭firewalld和selinux
systemctl stop firewalld
setenforce 0
确保时间date
一致
下载并安装MySQL5.7(所有机器)
这里不做过多讲解
master配置
#修改配置文件
vim /etc/my.cnf
———————————————————————————————————————————————————————————————————
[mysqld]
validate_password=off #关闭强密码
log-bin=/var/lib/mysql/master #配置binlog存放位置
server-id=1 #主机和从机id不能相同
gtid_mode=ON
enforce_gtid_consistency=1
———————————————————————————————————————————————————————————————————
#授权远程账户(先进入MySQL)
mysql> grant replication slave,super,reload on *.* to 用户名(slave)@'允许访问的IP(%)' identified by '密码(123)';
% 在MySQL5.7中是允许除了本地(localhost/127.0.0.1)之外所有的IP访问
slave配置
#修改配置文件
vim /etc/my.cnf
———————————————————————————————————————————————————————————————————
[mysqld]
validate_password=off
log-bin=/var/lib/mysql/master
server-id=2 #主机和从机id不能相同
gtid_mode=ON
enforce_gtid_consistency=1
———————————————————————————————————————————————————————————————————
重启master和slave上的mysql
继续配置slave
mysql -u root -p'123'
mysql > change master to master_host='主机IP(master)',master_user='用户名(slave)',master_password='密码(123)',master_auto_position=1;
mysql > start slave; //启动slave角色
mysql > show slave status\G //查看状态
测试
1.只要slave状态中i/o进程和sql进程为YES,基本可以确定成功
2.主服务器上写入数据,在从机服务器上查看,如果能在从机上看到数据,则成功!
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 木偶
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果