my.cnfmysql
#確保惟一sql
server-id=1數據庫
#做爲Master要開啓binlogvim
log-bin=mysql-bin服務器
#binlog format有三種形式:Statement、Mixed、Row,默認設置爲mixed併發
binlog-format=mixedide
#須要同步的庫,不指定默認同步所有庫性能
binlog-do-db=radiusspa
#不須要同步的庫命令行
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
mysql>grant replication slave on *.* to 'slave'@'192.168.100.%' identified by '308731044';
replication slave:遠程用戶備份權限
*.*:第一個星號表明庫,第二個星號表明數據庫裏的表。可指定庫和表
'slave'@'192.168.100.%':@前爲用戶名,@後爲受權的IP段(就是容許那些IP使用這個帳號權限訪問)
'308731044':遠程備份用戶密碼
mysql>flush privileges;
查看和刪除受權受權用戶(刪除不使用的帳號)
查詢用戶:select user,host from mysql.user;
刪除用戶:Delete FROM mysql.user Where User='sns_qnzs' and Host='172.17.116.%';
#確保惟一
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
#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;
查看主從複製狀態:
show slave status \G;
show slave status for channel 'master-1' \G;
IO及SQL線程狀態爲YES時,表示正常
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慢查詢語句
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源上,方便重複安裝,天天記錄一點點。