阅读量:5
环境
环境三部曲
- 1.全新服务器-互相通信
- 2.全新安装mysql8.0-分别安装
- 3.配置域名解析
这里来讲一主一从的第二种连接方式,第一种的话可以参考下面连接:
第一种方式
一主一从(M-S)(2)
需求
实验2与上一个实验需求基本相同。
master1 作为主mysql
master2 作为从mysql。
不同之处,使用了 “
gtid_mode=ON
enforce_gtid_consistency=1”
该属性自动记录position位置。不需要手动指定了。
注释:
gtid_mode=ON 意味着你的服务器将启用 GTID enforce_gtid_consistency=1 enforce_gtid_consistency 是强制统一全局数据标识符,1是开启
环境
因与实验1功能相同
请重置master2数据库
# systemctl stop mysqld # rm -rf /var/lib/mysql/* # systemctl start mysqld # grep password /var/log/mysqld.log # mysqladmin -uroot -p'老的密码' password 'Lixinyi@123' # mysql -uroot -p'Lixinyi@123'
主
master1
1 启动二进制日志,服务器ID,GTID
vim /etc/my.cnf log_bin server-id=1 gtid_mode=ON enforce_gtid_consistency=1 systemctl restart mysqld
2 授权复制用户rep(略)
grant replication slave,replication client on *.* to 'rep'@'192.168.145.%' identified by 'Lixinyi@123'; flush privileges;
3 备份数据
# mysqldump -p'Lixinyi@123' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F-%H-%M`-mysql-all.sql master-data=2设置为2,已经不需要这个标记了。
# scp 2024-07-15-03-38-mysql-all.sql master2:/tmp
4 模拟数据变化
mysql>insert into master1db.master1tab values (6666666666); mysql> select * from master1db.master1tab;
从
(master2)
1 测试rep用户是否可用
master2
mysql -h master1 -urep -p'Lixinyi@123'
- 预防账户问题。
- 注意防火墙应该关闭
2 启动二进制日志,服务器ID,GTID
vim /etc/my.cnf log_bin server-id=2 gtid_mode=ON enforce_gtid_consistency=1 systemctl restart mysqld
- 测试配置是否有问题,如果启动失败。请检查配置。
3 手动恢复master1数据
mysql>set sql_log_bin=0; //临时关闭二进制日志,退出数据库就又启动了 mysql>source /tmp/2024-07-15-03-38-mysql-all.sql mysql>select * from master1db.master1tab;
- 该实验的关键效果即将出现。
4 设置主服务器
mysql> change master to master_host='192.168.145.141', master_user='rep', master_password='Lixinyi@123', master_auto_position=1;
注意,和前一个实验比少了两行
mysql> change master to master_host='192.168.145.141', master_user='rep', master_password='Lixinyi@123', master_log_file='localhost-bin.000002', master_log_pos=154;
-
start slave;
show slave status\G;
5 返回主服务器(master1)更新数据,在从服务器(master2)观察是否同步。