2021-03-22

部署MYSQL主主双向主从复制 M-M

配置时间服务器

安装NTP

yum -y install ntp
vim /etc/ntp.conf
添加如下两行
server 127.127.1.0
fudge 127.127.1.0 stratum 8
重启NTPD服务
systemctl restart ntpd
开机自启
systemctl enable ntpd
/usr/sbin/ntpdate 192.168.30.11

配置主服务器

身份1: cong11的从。 身份2: cong11的主
配置my.cnf
vim /etc/my.cnf
server-id = 2
log-bin=/data/mysql/log/mysql-bin-master
binlog-do-db=HA
创建主从复制的授权用户:
grant replication slave on . to slave@‘192.168.30.%’ identified by ‘123456’;
flush privileges; #刷新授权表
重启

配置从服务器

导入数据库,和主数据库服务器保持一致
mysql -uroot -p123456 -e “create database HA;”
mysql -uroot -p123456 HA<HA.sql

测试从帐号登陆
mysql -uslave -p123456 -h 192.168.30.12
修改my.cnf
vim /etc/my.cnf
server-id=1
relay-log=/data/mysql/log/relay-log-bin
relay-log-index=/data/mysql/log/slave-relay-bin.index
重启

mysql数据库里从配置

stop slave;
change master to master_host=‘192.168.30.12’,master_user=‘slave’,master_password=‘123456’,master_log_file=‘mysql-bin-master.000001’,master_log_pos=154;
start slave;
show slave status\G

插入数据测试:

use HA;
insert into T1 values(4,‘li4’);
select * from T1;

部署M-S-S联级复制

注:确保三台服务器时间一致,关闭防火墙
配置时间服务器

安装NTP
yum -y install ntp
vim /etc/ntp.conf
添加如下两行
server 127.127.1.0
fudge 127.127.1.0 stratum 8
重启NTPD服务
systemctl restart ntpd
开机自启
systemctl enable ntpd

在主服务上配置

授权用户:
grant replication slave on . to repl@‘192.168.30.%’ identified by ‘123456’;
flush privileges;
创建数据库
create database HA;
use HA;
create table T1(id int,name varchar(20));
insert into T1 values(1,‘tom1’);
修改配置文件
vim /etc/my.cnf
server-id=1
binlog-do-db=HA
log-bin=/data/mysql/log/mysql-bin-master
sync-binlog=1
binlog-format=row
sync-binlog:此参数表示每写缓冲多少次就同步到磁盘;sync_binlog=1表示同步写缓冲和磁盘二进制日志文件,不使用文件系统缓存,在使用innodb事务引擎时,在复制环境中,为了保证最大的可用性,都设置为“1”,但会对影响io的性能。
重启
show master status; 查看master状态信息
导出主服务器HA库完整备份, 拷贝到 中继服务器 和slave服务器
mysqldump -uroot -p123456 -B HA>ha.sql
scp ha.sql root@192.168.30.12:~
scp ha.sql root@192.168.30.13:~

部署SLAVE中继

导入数据库ha.sql
mysql -uroot -p123456 <ha.sql
配置my.cnf
vim /etc/my.cnf
server-id=2
log-slave-updates=1
log-bin=/data/mysql/log/mysql-bin-slave1
relay-log=/data/mysql/log/relay-log-bin
relay-log-index=/data/mysql/log/slave-relay-bin.index
重启
将中继配置为主的从服务器
mysql -uroot -p123456
stop slave;
change master to master_host=‘192.168.30.11’,master_user=‘repl’,master_password=‘123456’,master_log_file=‘mysql-bin-master.000001’,master_log_pos=154;
start slave;
show slave status \G #查看中继服务的状态
再授权一个用户给slave
grant replication slave on . to ‘repl’@‘192.168.30.%’ identified by ‘123456’;
flush privileges;
show master status; 查看中级服务master状态

部署SLAVE

导入数据库ha.sql
mysql -uroot -p123456 <ha.sql
配置my.cnf
vim /etc/my.cnf
server-id = 3
relay-log=/data/mysql/log/relay-log-bin
relay-log-index=/data/mysql/log/slave-relay-bin.index
重启
指定中继服务作为从的主
mysql -uroot -p123456
stop slave;
change master to master_host=‘192.168.30.12’,master_user=‘repl’,master_password=‘123456’,master_log_file=‘mysql-bin-slave1.000001’,master_log_pos=448;
start slave;
show slave status \G 查看从服务的状态

在MASTER上插入数据测试

insert into T1 values(2,‘tom2’);
insert into T1 values(3,‘tom3’);
然后分别在slave中继,与slave上查看
select * from HA.T1;

排错:

先在从库添加这个字段:
alter table T1 add age int default 0 after name;
再在主库添加这个字段:
alter table T1 add age int default 0 after name;
show slave status\G
解决方法1:
跳过错误的事物
Cong13从库上执行:
mysql> stop slave;
mysql> set global sql_slave_skip_counter=1;
mysql> start slave;
mysql> show slave status\G #恢复正常
解决方法2:
主库中关闭binlog记录
set sql_log_bin=off;
然后我们再执行alter语句
alter table T1 add age int default 0 after name;
再开启bin-log
set sql_log_bin=on;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值