Linux Centos7中Mysql双主双从服务器部署

做用:
因为架构的扩展,业务量的愈来愈大,I/O访问频率太高此时须要做多库的存储,提升单个及其的I/O性能。而当一个主服务器出现故障后,此时另外一个服务器仍能够继续工做mysql

一.环境
准备4台干净的mysql服务器
192.168.122.196 master1
192.168.122.197 master2
192.168.122.198 slave1
192.168.122.199 slave2
若是是克隆的虚拟机要修改每台服务器UUID //vim /var/lib/mysql/auto.cnf
在每台服务器中配置全部服务器的域名 //vim /etc/hosts sql

二:配置
1,两台主服务器之间各配置为主从数据库

M——M
master1:
vim /etc/my.cnf
validate_password=off
log-bin = my1log
server-id = 1
gtid_mode=ON //开启gtid
enforce_gtid_consistency=1vim

systemctl restart mysqld  //重启mysql服务,使配置文件生效

建立受权帐户:
grant all on . to 'slave'@'%' identified by '123';
master2:
vim /etc/my.cnf
validate_password=off
log-bin = my2log
server-id = 2
gtid_mode=ON
enforce_gtid_consistency=1服务器

systemctl restart mysqld  //重启mysql服务,使配置文件生效

help change master to 查找配置文件
edit
change master to
master_host='master1',
master_user='受权用户',
master_password='受权密码',
master_auto_position=1;
start slave;
show slave status\G
若是显示的
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则说明部署成功架构

注意:
master2上也要建立同样的受权用户,在master1上进行change master to 的操做ide

2,两台从服务器分别将两台master配置为主服务器(注意从服务器必定要干净的,纯洁的服务器)
S——S
slave1:
1,首先备份master1的全部数据,mysqldump -u root -p123 -A > /all.sql
2,scp 将数据发送到slave1和slave2
3,在mysql中将数据分别导入slave1和slave2的数据库中,source /all.sql
4,vim /etc/my.cof slave1和slave2作相同的操做
validate_password=off
log-bin = my3log
server-id = 3 //注意server-id 不能相同
gtid_mode=ON
enforce_gtid_consistency=1
relay_log_info_repository = TABLE
master_info_repository = TABLE
relay_log_recovery = on
当slave从库宕机后,假如relay-log损坏了,致使一部分中继日志没有处理,则自动放弃全部未执行的relay-log,而且从新从master上获取日志,这样就保证了relay-log的完整性性能

help change master to
edit
CHANGE MASTER TO
MASTER_HOST='master1/ip',
MASTER_USER='slave', //主服务器用户
MASTER_PASSWORD='big',
MASTER_AUTO_POSITION=1 FOR CHANNEL 'master1'
start slave;
show slave status;
edit
CHANGE MASTER TO
MASTER_HOST='master2/ip',
MASTER_USER='slave', //主服务器用户
MASTER_PASSWORD='big',
MASTER_AUTO_POSITION=1 FOR CHANNEL 'master2'
start slave;
show slave status\G
同理若是显示的
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则说明部署成功
注意:slave1和slave2上作相同的change master to 操做。
若是不显示成功,错误可能有如下几点:
1,主从服务器的uuid相同,更改每台服务器UUID //vim /var/lib/mysql/auto.cnf
2,主从服务器的server-id相同,更改配置文件/etc/my.cnf中server-id,使每台服务器的server-id不一样
3,主服务器与从服务器的数据不统一。
解决方法:
1,首先备份master1的全部数据,mysqldump -u root -p123 -A > /all.sql
2,scp 将数据发送到slave1和slave2
3,在mysql中将数据分别导入slave1和slave2的数据库中,source /all.sqlui

相关文章
相关标签/搜索