Mysql主從同步搭建起來了,終於不用擔憂數據丟失了,可是這樣的數據真的萬無一失不會出錯麼,固然不是,就好比若是在主從同步以前Master上本就有一個庫bbs存在,而Slave沒有這個庫,庫bbs被包含在創建的同步之中,當Master上對bbs修改數據時,Slave上會因找不到bbs這個庫而報錯,這時創建的同步就會被破壞,致使同步中止。還有就是當Master數據庫服務器忽然因故障當機了,咱們又如何讓數據恢復使論壇正常運行呢?這裏咱們就解決這兩個問題。php
一.Master與Slave服務器因同步前數據不一致致使同步異常解決方法:html
這個問題其實最好的解決方式就是最先創建主從同步,再搭建論壇並把數據寫入到Master,這樣Master都處於初始狀態,Master上從初始狀態以後的全部操做都會被同步到Slave上,不會產生數據差別衝突。mysql
但也避免不了數據庫有數據的狀況下爲該數據作主從同步備份來保證數據的安全性和可恢復性。在這種狀況下,能夠這樣處理:web
1.把Master上該數據庫備備份出來:
sql
mysqldump -uroot -p discuz > /data/20150611.sql 數據庫
2.在Slave的mysql中執行:
vim
mysql> stop slave;安全
mysql> set global sql_slave_skip_counter=1;服務器
mysql> start slave;ide
3.在Master上建立數據庫並把北風的數據庫文件導入到該數據庫中:
mysql> create database discuz charset=utf8;
mysql -uroot -p discuz < /data/20150611.sql
這樣該數據庫就會同步到Slave上。
二.Master服務器故障當機後網站數據如何恢復?
訪問頁面http://192.168.1.100/upload/forum.php,出現該故障信息:
1.修改web服務器的配置文件,將數據庫IP指向slave:
(1)查找網站目錄中存在IP:192.168.1.111的文件信息:
grep -r "192.168.1.111" /var/www/html/upload/config/*
config_global.php:$_config['db']['1']['dbhost'] = '192.168.1.111';
config_ucenter.php:define('UC_DBHOST', '192.168.1.111');
(2)備份配置文件,防止誤操做和方便恢復:
cp config_global.php config_global.php.bak
cp config_ucenter.php config_ucenter.php.bak
(3)進入配置文件把全部指向Master的IP:192.168.1.111改成指向Slave的IP:192.168.1.131:
vim config_global.php
vim config_ucenter.php
:%s/192.168.1.111/192.16.1.131/g
(4)重啓httpd服務:
/etc/init.d/httpd restart
(5)在slave上爲web服務器訪問slave上數據受權:
mysql> grant all on discuz.* to 'liupengfang'@'192.168.1.100' identified by "liupengfang";
(6)刷新權限:
mysql> flush privileges;
(7)測試再次訪問http://192.168.1.100/upload/forum.php:
頁面能正常訪問,數據恢復正常