MySql5.7-多源復制(多主單從)


1.1.主庫配置

my.cnf

 

#確保唯一

server-id=1

#作為Master要開啟binlog

log-bin=mysql-bin

#binlog format有三種形式:Statement、Mixed、Row,默認設置為mixed

binlog-format=mixed

#需要同步的庫,不指定默認同步全部庫

binlog-do-db=radius

#不需要同步的庫

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

#這個比較重要,直接影響同步的性能 延時等問題.mysql5.7多源復制參數,5.7之前版本可不加

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#GTID模式

gtid-mode=on

enforce-gtid-consistency

 

1.2創建主庫授權從庫同步的用戶

mysql>grant replication slave on *.* to 'slave'@'192.168.100.%' identified by '308731044';

replication slave:遠程用戶備份權限

*.*:第一個星號代表庫,第二個星號代表數據庫里的表。可指定庫和表

'slave'@'192.168.100.%':@前為用戶名,@后為授權的IP段(就是允許那些IP使用這個賬號權限訪問)

'308731044':遠程備份用戶密碼

1.3刷新設置(修改的內容刷新到數據庫配置里 )

mysql>flush privileges;

查看和刪除授權授權用戶(刪除不使用的賬號)

查詢用戶:select user,host from mysql.user;

刪除用戶:Delete FROM mysql.user Where User='sns_qnzs' and Host='172.17.116.%';

92B4CA3786DA4A34986F582367FD6AE3

1.4從庫配置

#確保唯一

server-id = 3

#復制的庫,不指定默認備份全部庫

replicate-do-db = master1

replicate-do-db = master2

 

#不復制的庫

 

replicate-ignore-db = mysql

replicate-ignore-db = information_schema

replicate-ignore-db = performance_schema

replicate-ignore-db = sys

 

#binlog日志設置

relay-log = /home/mysql/data/

mysqld-relay-bin

 

log-slave-updates = ON

slave-parallel-type=LOGICAL_CLOCK

relay_log_recovery=ON

 

#超時

slave_net_timeout = 30

 

#復制並發數設置

slave_parallel_workers = 16

 

#從庫復制跳過錯誤

 

slave-skip-errors = 1062,1053,1146,1213,1264,1205,1396

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#mysql5.7多源復制必須添加的參數(不加報錯),5.7版本之前不用加

 

master_info_repository=TABLE

relay_log_info_repository=TABLE

 

#GTID模式(使用GTID就可以不用記錄備份位置點)

gtid-mode=on

enforce-gtid-consistency

1.5.從庫配置用戶及binlog位置信息(推薦使用GTID模式)

#GTID模式配置

CHANGE MASTER TO MASTER_HOST='192.168.1.131', MASTER_USER='slave', MASTER_PORT=3451, MASTER_PASSWORD='xxxxxx', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';

主庫配置可以使用到多個主庫上,從庫添加相應的配置即可(GTID模式配置)

 

#Binlog模式

CHANGE MASTER TO

MASTER_HOST='192.168.100.108',

MASTER_PORT=3306,

MASTER_USER='rep',

MASTER_PASSWORD='308731044',

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=107;

107就是備份binlog位置點。使用GTID可以省略

MASTER_LOG_POS=107;

68835FEC23464BF9919652D00C02D2D0

 

 

查看主從復制狀態:

show slave status \G; 
show slave status for channel 'master-1' \G; 
IO及SQL線程狀態為YES時,表示正常

7BEBCAB327FB4F479AD1851665F342EB

1.6重置備份配置

1.主庫操作

restet master

 

2.從庫操作

stop slave;

stop slave for channel 'master-1'

reset slave all for channel 'master-1'

restet master;

重復步驟1.5

start slave for channel 'master-1'

flush privileges;

mysql主庫復制小結:

stop slave; #<==臨時停止同步開關。

start slave;#<==臨時停止同步開關。

show processlist;查看sql慢查詢語句

80E4ADCBCE8D4998AF0061AA0C8A91C1

set global sql_slave_skip_counter =1 ; #<==將同步指針向下移動一個,如果多次不同步,可以重復操作。

主庫設置從庫跳過錯誤設置:

1. 當從庫復制遇到錯誤時,比如報錯“要創建的數據庫已存在”

解決方案: 讓從庫跳過這一步操作,繼續執行其它的操作

方法一: 命令行實現,跳過這一步;

mysql> stop slave;
mysql> set global sql_slave_skip_counter =1;
mysql> start slave;

方法二: 配置文件中,指定忽略的錯誤;

[root@MySQL opt]# grep slave-skip /data/3308/my.cnf
slave-skip-errors = 1032,1062

 

grep slave-skip /data/3306/my.cnf

vim /data/3306/my.cnf

slave-skip-errors = 1032,1062,1007(添加可忽略錯誤狀態)

數據庫級聯同步設置必要參數:

log-slave-updates #<==必須要有這個參數

log-bin = /data/3307/mysql-bin

expire_logs_days = 7 (七天自動刪除binlog文件)

總結:

領導要求部署MySql多主單從,之前都是單間單主多從。聽到多主單從后,表示一臉懵比。查詢一番話。原來是MySql5.7新出的功能。

MySql5.7新功能-多源復制,可以節省服務器成本。提高服務器利用率。搭建和之前的版本大致步驟類似。使用GTID模式更加快捷。

但在集群的過程中,也遇到了很多的坑。大部分都是常見的錯誤。可以百度也可以根據錯誤日志進行排查(推薦),使用fpm打包了MySql。

以后也可以放到內網的yum源上,方便重復安裝,每天記錄一點點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM