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

相關文章
相關標籤/搜索