異地Mysql同步問題

轉自:http://hi.baidu.com/mesong1/item/7ba3bfd2e2e9da9d260ae74a

異地Mysql同步問題

今兒一天在看關於雙機熱備的相關資料,再仔細一想,執行的時候,我們的軟件必須安裝在兩套計算機上,那麼一臺從服務器上的Mysql是怎麼跟主服務器上的MySql保持同步,達到備份的功能呢?

上網上溜達了幾個來回,找到一個比較好的解決方法,當然在操作的過程中也遇到了不少問題,走了不少彎路,在這裏整理一下具體的操作步驟:
我的具體環境如下:
主服務器是A:192.168.0.197
從服務器是B:192.168.0.176
其中A和B的數據庫版本都是MySql5.0
具體的配置過程如下:
(1)在主服務器A上建立一個備份賬戶,我們可以使用命令:
 grant all previlegeon *.* to 'backup'@'%' identified by 'hope';
建立一個賬戶backup,密碼是hope,給他所有的權限,任何用戶可以通過密碼hope來登錄backup用戶,並訪問其中的數據。
(2)執行如下命令:
  setpassword from'backup'@'%'=old_password('hope');【據說是因爲mysql版本新密碼算法不同,所以要執行一下,但是具體爲什麼不知道
(3)停一下主服務器A的服務,從“服務”中選擇mysql重啓一下即可。
(4)在從服務器端使用以下方法檢測一下,從服務器和主服務器是否能夠正常連接
   C:\>mysql -h 192.168.0.197 -ubackup -p hope
   Enterpassword: ****
   如果拒絕訪問,則說明主服務器的賬戶權限沒有設置好,好好檢查一下。
【可以通過以下命令查詢一下
  mysql> usemysql;
Database changed
mysql> select host,user from user;
+------+--------+
| host | user  |
+------+--------+
| %   | backup |
| %   | root |
+------+--------+
2 rows in set (0.00 sec)
如果,查詢出來的host一列都爲%沒有什麼問題了,否則,我們再調整一下
(5)將A中的數據拷貝到B服務器中,使得A和B的初始數據同步。具體方法在上一篇文章中也提到了。
主服務器A端執行
    C:\>mysqldump -h localhost -uroot -p hope >D:\hope.sql
    此時,我們可以把服務器A上的hope數據庫,導出到D:\hope.sql
    將hope.sql複製到服務器B上的C:\
    在從服務器B上完成數據庫的導入工作。
    C:\>mysql -h localhost -u root -phope < C:\hope.sql


(6)A服務器的配置進行修改,打開mysql/my.ini文件,在[mysqld]下面添加如下內容:
server-id=1
log-bin=c:\log-bin.log

[其中參數解釋如下:
server-id
:爲主服務器AID
log-bin
:二進制變更值]
(7)在從服務器B的mysql/my.ini文件裏添加以下幾行指令就行了。
[mysqld]
server-id=2
master-host=192.168.0.197
master-user=backup
master-password=hope

//
以下內容爲可選 
replicate-do-db=backup
其中參數解釋如下:
server-id
:從服務器BID值。注意不能和主服務器的ID值相同。
master-host
:主服務器的IP地址。
master-user
:從服務器連接主服務器的帳號。
master-password
:從服務器連接主服務器的帳號密碼。
replicate-do-db
:告訴主服務器只對指定的數據庫進行同步鏡像。
(8)重啓從服務器B至此所有設置全部完成。更新A中的數據,B中也會立刻進行同步更新。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章