mysql cluster 设置单向复制_mysql5.6做单向主从复制Replication
原理場景:MySQL從3.23版本開始提供復(fù)制功能。指的是將主數(shù)據(jù)庫的DDL和DML操作通過二進制日志傳到從服務(wù)器(也叫從庫),然后在從庫上對這些日志重新執(zhí)行,
從而使得從庫和主庫的數(shù)據(jù)保持同步。
優(yōu)點:如果主庫出現(xiàn)問題,可以快速切換到從庫提供服務(wù);
可以在從庫上執(zhí)行查詢操作,降低主庫的訪問壓力;
可以在從庫上執(zhí)行備份,以免備份期間影響主庫的服務(wù);
測試環(huán)境:2臺最小化安裝的centos7.2
具體操作:
1.安裝相同版本的mysql
2.主(master)服務(wù)器配置
① 在my.cnf中的[mysqld]下新增如下項目:
server_id=200 ? ?# 設(shè)置server_id,一般設(shè)置為IP;
binlog-do-db=cnblogs ? ??# 復(fù)制過濾:需要備份的數(shù)據(jù)庫,輸出binlog(這里我假設(shè)值備份cnblogs這個數(shù)據(jù)庫);
#binlog-do-db=db2 #如果要同步多個,另起一行,再加一條
#binlog-do-db=db3 #同上
binlog-ignore-db=mysql # 復(fù)制過濾:不需要備份的數(shù)據(jù)庫,不輸出(mysql庫一般不同步);
log-bin=master-bin # 開啟二進制日志功能,可以隨便取,最好有含義;
binlog_cache_size=1M ?# 為每個session 分配的內(nèi)存,在事務(wù)過程中用來存儲二進制日志的緩存;
binlog_format=mixed # 主從復(fù)制的格式(mixed,statement,row,默認(rèn)格式是statement);
expire_logs_days=7 ?# 二進制日志自動刪除/過期的天數(shù)。默認(rèn)值為0,表示不自動刪除;
slave_skip_errors=1062 ?# 跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤,避免slave端復(fù)制中斷。
如:1062錯誤是指一些主鍵重復(fù),1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致;
log_bin_trust_function_creators=true # 如果需要同步函數(shù)或者存儲過程;
保存,退出;
補充說明:主從復(fù)制格式
(1) 基于語句的復(fù)制:在Master上執(zhí)行的SQL語句,在Slave上執(zhí)行同樣的語句,MySQL默認(rèn)采用基于語句的復(fù)制,效率比較高,
一旦發(fā)現(xiàn)沒法精確復(fù)制時,會自動選著基于行的復(fù)制;
(2) 基于行的復(fù)制:把改變的內(nèi)容復(fù)制到Slave,而不是把命令在Slave上執(zhí)行一遍。從MySQL5.0開始支持;
(3) 混合類型的復(fù)制:默認(rèn)采用基于語句的復(fù)制,一旦發(fā)現(xiàn)基于語句的無法精確的復(fù)制時,就會采用基于行的復(fù)制;
② 重啟數(shù)據(jù)庫
~]#systemctl restart mysql
③ 重新登入mysql并做相關(guān)授權(quán)
~]#mysql -uroot -p
mysql>create?user?mysql@'%' identified by 'mysql';
mysql>grant all ?on?*.*?to?mysql@'%'; 這里可根據(jù)自己的數(shù)據(jù)庫和權(quán)限進行設(shè)置;
mysql>grant?replication?slave,?replication?client?on?*.*?to?'mysql'@'158.158.41.201'?identified?by?'mysql';
mysql>flush?privileges;
mysql>show?master?status;
注意:記住上圖藍框標(biāo)出的兩個數(shù)值,因為在配置slave時會用到,每次重新配置都會改變。
3.從(slave)服務(wù)器配置
①?在my.cnf中的[mysqld]下新增如下項目:
server_id=201 slave的ip做id;
binlog-do-db=cnblogs 與master相對應(yīng)(換成自己的需求定義);
binlog-ignore-db=mysql 與master相對應(yīng);
#log-bin=slave1-bin 先注釋掉,可以先不加;
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=mysql-relay-bin 配置中繼日志;
log_slave_updates=1
read_only=1
保存,退出;
補充說明:
(1)如果Slave為其它Slave的Master時,必須設(shè)置bin_log;
(2)log_slave_updates表示slave將復(fù)制事件寫進自己的二進制日志;
(3)當(dāng)設(shè)置log_slave_updates時,你可以讓slave扮演其它slave的master;
此時,slave把SQL線程執(zhí)行的事件寫進行自己的二進制日志(binary log),然后,它的slave可以獲取這些事件并執(zhí)行它;
② 重啟從服務(wù)器mysql
~]#systemctl restart mysql
③ 重新登錄mysql
~]#mysql -uroot -p
mysql> change master to?master_host='158.158.41.200',master_user='mysql',master_password='mysql',
master_port=3306,master_log_file='master-bin.000001',master_log_pos=708,master_connect_retry=30;
上圖藍色標(biāo)志處就是之前再主上“show master status;”后得到的重要數(shù)據(jù),寫進去即可。
④ 開啟主從同步
mysql>start?slave;
⑤ 重看主從狀態(tài)
mysql>show?slave?status?\G
一切正常,一切就緒。
4.?測試主從同步
在master上新增cnblogs,查看slave上是否同步新增:
結(jié)束.
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的mysql cluster 设置单向复制_mysql5.6做单向主从复制Replication的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库没启动命令_mysql数
- 下一篇: python区间分组_python-进行