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