MySQL從3.23版本起就已經內建了複製(Replication)的功能,我們可以配置成master-slave模式,也可以配置為master-master模式。方法很簡單,這裡就master-master的配置簡單的記錄下來,我這裡測試環境是mysql 5.1.31,一個是自己用原始碼編譯的,一個是用的xampp1.7裡內建的。
首先找到兩個版本相同的資料庫伺服器,最好是版本相同,或者差別太大(一個是3.x,一個是5.x,那估計沒戲)。假設資料庫的設定檔是/etc/my.cnf,我們假定A機的IP地址是192.168.0.1,B機的IP地址是192.168.0.2
我們在A機上給出一個授權使用者,允許B機的某個帳號擁有來擷取要複製資料庫的權利,這裡假設針對所有的資料庫都有複製的權利
mysql>grant file,replication slave on *.* to replicate@192.168.0.2 identified by ‘password’;
這樣我們就建立了一個replicate的帳號,密碼是password。同樣的方法在B機上也給A機一個授權
mysql>grant file,replication slave on *.* to replicate@192.168.0.1 identified by ‘password’;
接下來就是要修改設定檔了,首先開啟A機的/etc/my.cnf檔案,在[mysqld]一段裡,增加或者修改下面這些變數
server-id=1
log-bin=mysql-bin
master-host=192.168.0.2
master-user=replicate
master-password=password
儲存退出。
同樣的方法在B機上也做一遍,類似如下:
server-id=2
log-bin=mysql-bin
master-host=192.168.0.1
master-user=replicate
master-password=password
要注意,server-id千萬別衝突了,當然,如果衝突了,資料庫啟動的時候會有報錯的。
做完配置修改後,在重啟資料庫之前,我們還有做一件事請,那就是未經處理資料的同步,首先停止資料庫,然後用A機的資料庫全部覆蓋B機的資料庫(反之也行),總之,在重啟之前,保證你需要同步的資料庫應該是一致的(怎麼說也得在同一個起跑線上嘛)。
好了,現在你可以重啟你的資料庫了。
你可以通過show master status; show slave status這樣的SQL語句來查看對應的狀態了。
著作權聲明:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊。
本文連結: http://mlsx.xplore.cn/2009/02/15/two-way-mysql-replication.html