MySQL雙主配置的項目實踐
1、配置的前置條件
- 已知A服務(wù)器IP=192.168.0.11,B服務(wù)器IP=192.168.0.12
- 建議使用相同版本的MySQL,若是小版本跨越一般是兼容的,如A的MySQL版本是5.7.1,B的MySQL版本是5.7.2;
- 配置前需要保證兩個數(shù)據(jù)庫的數(shù)據(jù)一致,建議將A數(shù)據(jù)庫同步到B數(shù)據(jù)庫,以保證配置前A、B兩臺數(shù)據(jù)庫的數(shù)據(jù)是一致的;
- 確保2臺數(shù)據(jù)庫的網(wǎng)絡(luò)端口是互通的,如:3306;
- 配置期間不能有新數(shù)據(jù)的寫入;
2、配置
2.1 配置B服務(wù)器MySQL同步A服務(wù)器MySQL數(shù)據(jù)
2.1.1 修改A服務(wù)器的MySQL配置文件my.cnf,添加以下內(nèi)容
[mysqld] #master A slave config #主機A的server id,需要和主機B的不一致 server-id=1 #二進制日志文件名 log-bin=master-a-bin #二進制日志格式 binlog-format=ROW #設(shè)置日志最大為1G max_binlog_size=1024M #設(shè)置binlog文件最大保留天數(shù)30天 expire_logs_days=30 #數(shù)據(jù)庫宕機恢復(fù)后,自動同步缺少的數(shù)據(jù) relay_log=mysql-relay-bin relay_log_recovery=1 #設(shè)置自增id的初始值為1,每次增量為2 auto_increment_offset=1 auto_increment_increment=2 #開啟gtid gtid_mode=ON enforce_gtid_consistency=1 #需要同步的數(shù)據(jù)庫,如test1,test2,根據(jù)實際情況配置 binlog-do-db=test1 binlog-do-db=test2 #不要同步的數(shù)據(jù)庫 binlog-ignore-db=mysql,information_schema,performance_schema,sys #不要同步的表 #replicate-ignore-table=庫名.表名
配置完成后,保存并重啟一下MySQL
2.1.2 登錄A服務(wù)器MySQL,創(chuàng)建B的數(shù)據(jù)同步賬號
同步賬號:repl_b,同步密碼:123456,具體命令步驟如下
mysql> grant replication slave on *.* to '同步賬號'@'主機B的IP' identified by '同步密碼'; #登錄A服務(wù)器MySQL,創(chuàng)建B的數(shù)據(jù)同步賬號 mysql> flush privileges; #刷新權(quán)限 mysql> reset master; #重置master信息 #說明:同步開始前,不要有數(shù)據(jù)寫入,否則影響bin-log日志文件 mysql> flush tables with read lock; #鎖表命令,在同步配置完成后再使用解鎖表命令:unlock tables; mysql> show master status; #查看并記錄好當前bin-log的文件名和位置,記錄bing-log文件名:master-a-bin.000001,日志位置:154
2.1.3 登錄B服務(wù)器修改MySQL的配置文件my.cnf,設(shè)置A為B的master,添加以下
#master B slave config #主機B的server id,與主機A的id不一致 server-id=2 #二進制日志文件名 log-bin=master-b-bin #二進制日志格式 binlog-format=ROW #設(shè)置日志最大為1G max_binlog_size=1024M #設(shè)置binlog文件最大保留天數(shù)30天 expire_logs_days=30 #數(shù)據(jù)庫宕機恢復(fù)后,自動同步缺少的數(shù)據(jù) relay_log=mysql-relay-bin relay_log_recovery=1 #設(shè)置自增id的初始值為1,每次增量為2 auto_increment_offset=2 auto_increment_increment=2 #開啟gtid gtid_mode=ON enforce_gtid_consistency=1 #需要同步的數(shù)據(jù)庫,如test1,test2,根據(jù)實際情況配置 binlog-do-db=test1 binlog-do-db=test2 #不要同步的數(shù)據(jù)庫 binlog-ignore-db=mysql,information_schema,performance_schema,sys #不要同步的表 #replicate-ignore-table=庫名.表名
配置完成后,保存并重啟以下MySQL
登錄主機B的MySQL,設(shè)置A為B的master
PS:如果開啟了全局事務(wù)id(gtid_mode=ON),那么可以不用指定master_log_pos參數(shù),可去掉此參數(shù)
#備份好需要同步的數(shù)據(jù)庫,把備份好的數(shù)據(jù)庫導(dǎo)入到主機B上 #登錄主機B的mysql,設(shè)置A為B的master #停止B的slave mysql> stop slave; #設(shè)置B的master的為A,通過repl_b同步A的數(shù)據(jù) mysql> change master to master_host='主機A的IP',master_user='同步賬號',master_password='同步密碼',master_log_file='bing-log文件名',master_log_pos=日志位置; #開啟B的slave mysql> start slave; #確定B的slave是否同步成功 mysql> show slave status\G; #查看輸出結(jié)果中Slave_IO_Running和Slave_SQL_Running都為YES時,表示成功
到這步已經(jīng)完成了B服務(wù)器MySQL同步A服務(wù)器數(shù)據(jù),下面再進行設(shè)置A同步B服務(wù)器的MySQL
2.2 配置A服務(wù)器MySQL同步B服務(wù)器MySQL數(shù)據(jù)
2.2.1 登錄B服務(wù)器的MySQL,創(chuàng)建A服務(wù)器的MySQL同步賬號,同步賬號:repl_a,密碼:123456
#登錄B的mysql mysql> grant replication slave on *.* to '同步賬號'@'主機A的IP' identified by '同步密碼'; mysql> flush privileges; #說明:同步開始前,建議不要有數(shù)據(jù)寫入,否則影響bin-log日志文件 #重置master信息 mysql> reset master; #鎖表命令,同步完成后使用解鎖表命令:unlock tables mysql> flush tables with read lock; #查看并記錄好當前bin-log的文件名和位置,記錄bing-log文件名:master-b-bin.000001,日志位置:154 mysql> show master status;
2.2.2、登錄A服務(wù)器MySQL,設(shè)置B為A的master
#登錄A主機,停止slave mysql> stop slave; #設(shè)置A的master為B mysql> change master to master_host='主機B的IP',master_user='同步賬號',master_password='同步密碼',master_log_file='master-b-mysql-bin.000001',master_log_pos=154; #啟動slave mysql> start slave; mysql> show slave status\G; #查看輸出結(jié)果中Slave_IO_Running和Slave_SQL_Running都為YES時,表示成功
3、解鎖數(shù)據(jù)庫表的鎖定
在A服務(wù)器和B服務(wù)器的MySQL里面執(zhí)行解鎖命令:unlock tables
mysql> unlock tables;
4、進行數(shù)據(jù)庫的讀寫同步測試
在A更改(插入、修改、刪除)的數(shù)據(jù)會實時同步至B的數(shù)據(jù)庫,同樣B更改數(shù)據(jù)也會實時同步至A
到此這篇關(guān)于MySQL雙主配置的項目實踐的文章就介紹到這了,更多相關(guān)MySQL雙主配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫改名的三種實現(xiàn)方式
這篇文章主要介紹了MySQL數(shù)據(jù)庫改名的三種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06解決Can''t locate ExtUtils/MakeMaker.pm in @INC報錯
今天小編就為大家分享一篇關(guān)于解決Can't locate ExtUtils/MakeMaker.pm in @INC報錯,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01分享MYSQL插入數(shù)據(jù)時忽略重復(fù)數(shù)據(jù)的方法
當程序中insert時,已存在的數(shù)據(jù)不插入,不存在的數(shù)據(jù)insert。在網(wǎng)上搜了下,可以使用存儲過程或者是用NOT EXISTS 來判斷是否存在2013-09-09