MySQL 5.5主从复制(Replication)
簡(jiǎn)介
MySQL的主從復(fù)制(Replication),可以保持兩臺(tái)MySQL數(shù)據(jù)庫(kù)的內(nèi)容一致。因?yàn)槠渫竭^程是異步的,所以備份數(shù)據(jù)庫(kù)上做任何操作,都不會(huì)影響主數(shù)據(jù)庫(kù)的性能。對(duì)游戲后臺(tái)數(shù)據(jù)庫(kù)而言,這是一個(gè)重大的優(yōu)勢(shì):對(duì)備份數(shù)據(jù)庫(kù)的查詢、備份等操作都不會(huì)影響游戲的線上運(yùn)行。配置主從復(fù)制有許多教程,但都很繁瑣。我根據(jù)官方文檔,總結(jié)出一個(gè)簡(jiǎn)單的配置流程。
配置
- 線上運(yùn)行的數(shù)據(jù)庫(kù),稱之為Master服務(wù)器;備份的數(shù)據(jù)庫(kù),稱之為Slave服務(wù)器。
- 分別修改兩臺(tái)服務(wù)器上的MySQL配置文件/etc/mysql/my.cnf:
Master服務(wù)器上加入這兩行(直接去掉注釋即可):
server-id = 1log_bin = /var/log/mysql/mysql-bin.log然后重啟MySQL:
service mysql restartSlave服務(wù)器加入這一行:
server-id = 2然后重啟MySQL:
service mysql restart
- 把Master數(shù)據(jù)庫(kù)備份傳給Slave數(shù)據(jù)庫(kù):
- 方法一:MyISAM格式可以直接拷貝,速度快:
在Master服務(wù)器上備份數(shù)據(jù)庫(kù),可以只有指定的數(shù)據(jù)庫(kù),不同步mysql庫(kù):
mkdir /masterdbmysqlhotcopy --resetmaster --flushlog --addtodest --regexp=<數(shù)據(jù)庫(kù)匹配正則表達(dá)式> /masterdb- 如果原來已經(jīng)設(shè)置過slave,現(xiàn)在要恢復(fù)數(shù)據(jù),那么
先在Slave服務(wù)器上mysql中停止slave模式并重置:
stop slave;reset slave;然后關(guān)閉mysql:
stop mysql- 刪除原有同名的數(shù)據(jù)庫(kù)。
停止mysql后,把備份的Master數(shù)據(jù)庫(kù)目錄傳到Slave服務(wù)器上的mysql目錄中,可以用scp命令拷貝:
scp -r -P <端口> /masterdb/* root@<IP地址>:/Jpcq/MySQL/拷貝到Slave的文件需要修改owner:
chown -R mysql:mysql *修改Slave的my.cnf文件,禁止同步mysql庫(kù):
replicate-ignore-db=mysql啟動(dòng)mysql:
start mysql重新開啟slave模式,在mysql中執(zhí)行:
change master to master_host='<Master IP地址>', master_user='<用戶名>', master_password='<密碼>';start slave;
方法二:使用mysqldump,通用,但是慢:
在Master服務(wù)器上備份數(shù)據(jù)庫(kù):
mysqldump --all-databases --master-data >apply_slave.sql把備份文件dbdump.db傳到Slave服務(wù)器上,恢復(fù)數(shù)據(jù)庫(kù):
mysql <apply_slave.sql在Slave服務(wù)器上開啟slave模式,在mysql中執(zhí)行:
change master to master_host='<Master IP地址>', master_user='<用戶名>', master_password='<密碼>';start slave;
- 方法一:MyISAM格式可以直接拷貝,速度快:
維護(hù)
Slave顯示同步狀態(tài):
show slave status\G;顯示進(jìn)程列表:
show processlist\G;Master顯示正在同步的Slaves:
show slave hosts;Master顯示最新binlog位置:
show master status;
MySQL 5.5 - 5.7的改進(jìn)
- MySQL 5.5的主從復(fù)制是單線程的,性能受限。
- MySQL 5.6的不同數(shù)據(jù)庫(kù)可以并行,單個(gè)數(shù)據(jù)庫(kù)還是順序執(zhí)行的。
- MySQL 5.7不再受限制,所有Master數(shù)據(jù)庫(kù)并行執(zhí)行的事務(wù),Slave也可以并行執(zhí)行。
- MySQL 5.7的Slave還支持從多個(gè)Master同步數(shù)據(jù)庫(kù)。
轉(zhuǎn)載于:https://www.cnblogs.com/tinyfish/p/5177490.html
總結(jié)
以上是生活随笔為你收集整理的MySQL 5.5主从复制(Replication)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大叔也说Xamarin~Android篇
- 下一篇: JSONP跨域的原理解析及其实现介绍