2.環境說明
2.1 硬體環境(兩台機器的硬體環境相同)
CPU
Inter(R) Pentium(R) Dual CPU E5200 @2.50GHz
記憶體大小
384MB
硬碟大小
8GB
其它說明
本機器為虛拟機,其有兩塊網卡,一對網卡直連,一對接入交換機
CPU
Inter(R) Pentium(R) Dual CPU E5200 @2.50GHz
記憶體大小
384MB
硬碟大小
8GB
其它說明
本機器為虛拟機,其有兩塊網卡,一對網卡直連,一對接入交換機
2.2 軟體環境(兩台機器的軟體環境相同)
系統
Server 2003 Enterprise Edition
Java環境
jdk1.6.0
web平台
apache-tomcat-5.0
資料庫
MySQL Server 5.0
ldap資料庫
Sun ONE Directory Server 5.2
ha軟體
藍科泰達科技Pluswell
2.3 網絡環境
主機名
ha001
IP位址
192.168.0.188
子網路遮罩
255.255.255.0
網關
192.168.0.1
DNS
192.168.0.1
公用虛拟IP
192.168.0.187
IP位址02
192.168.8.188
子網路遮罩02
255.255.255.0
主機名
ha002
IP位址
192.168.0.189
子網路遮罩
255.255.255.0
網關
192.168.0.1
DNS
192.168.0.1
公用虛拟IP
192.168.0.187
IP位址02
192.168.8.189
子網路遮罩02
255.255.255.0
3 mysql資料同步實作原理:
即讀寫操作在兩台伺服器上進行,每台伺服器即主也是從。當其中的任何一台伺服器收到操作請求時,其進行相應的資料變化,并把變化的資料複制到另一台伺服器中。
4 資料同步實作
4.1 mysql資料雙向同步
4.1.1 配置伺服器ha001
Ø 初始伺服器
通過mysql工具連接配接伺服器ha001後,建立兩個資料庫audit,idm。導入初始化資料庫檔案,完成資料庫的初始化
Ø 給使用者授權
從開始菜單中打開mysql5的指令行,輸入正确的密碼,進入mysql控制台指令行模式後,輸入如下指令:
#授權來自192.168.0.189的backup使用者擁有對所有庫的複制資料的權限,該使用者的密碼設為123456
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.0.189' IDENTIFIED BY '123456';
#重新整理權限設定
FLUSH PRIVILEGES ;
Ø 修改配置檔案
修改主目錄中的my.inf檔案,在mysqld下面加入如下内容
server-id = 1
log-bin=mysql-bin
binlog-do-db = audit
binlog-do-db = idm
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = test
master-host = 192.168.0.189
master-user = backup
master-password = 123456
master-port = 3306
replicate-do-db = audit
replicate-do-db = idm
master-connect-retry = 60
4.1.2 配置伺服器ha002
Ø 初始伺服器
通過mysql工具連接配接伺服器ha002後,建立兩個資料庫audit,idm。導入初始化資料庫檔案,完成資料庫的初始化
Ø 給使用者授權
從開始菜單中打開mysql5的指令行,輸入正确的密碼,進入mysql控制台指令行模式後,輸入如下指令:
#授權來自192.168.0.188的backup使用者擁有對所有庫的複制資料的權限,該使用者的密碼設為123456
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.0.188' IDENTIFIED BY '123456';
#重新整理權限設定
FLUSH PRIVILEGES ;
Ø 修改配置檔案
修改主目錄中的my.inf檔案,在mysqld下面加入如下内容
server-id = 2
master-host = 192.168.0.188
master-user = backup
master-password = 123456
master-port = 3306
replicate-do-db = audit
replicate-do-db = idm
master-connect-retry = 60
log-bin=mysql-bin
binlog-do-db = audit
binlog-do-db = idm
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = test
4.1.3 啟動兩台伺服器上的mysql從服務
在兩台伺服器上,均完成如下操作:
從開始菜單中打開mysql5的指令行,輸入正确的密碼,進入mysql控制台指令行模式後,輸入如下指令:
#開啟從伺服器
slave start;
4.1.4 服務狀态檢查
在兩台伺服器上,均完成如下操作:
從開始菜單中打開mysql5的指令行,輸入正确的密碼,進入mysql控制台指令行模式後,輸入如下指令:
#顯示主伺服器狀态
Show master status;
#顯示從伺服器狀态
Show slave status \G;
Ø 檢視連接配接配置狀态:
Slave_IO_Running: Yes -----此項為No代表與主庫連接配接有問題。
Slave_SQL_Running: Yes ----如果此項為NO代表配置有問題。
Ø 檢視對比pos點以及記錄檔案是否一緻:
如果不一緻,在從MySQL運作
#改變從伺服器的pos點為98,記錄檔案為mysql-bin.000001
CHANGE MASTER TO Master_Log_File='mysql-bin.000001',Master_Log_Pos=98;
運作此指令前需要stop slave;之後再start slave;
4.1.5 雙向同步測試
Ø 檢查當在兩台機器的任何一台mysql中修改資料時,另外的那台的資料是否也修改
Ø 關閉其中一台mysql的服務後,更新另一台mysql的資料,再啟動已停止的那台mysql伺服器,檢視資料是否修改
4.1.6 特别注意事項
Ø 請在任何時候都不要非法關機,否則将會造成同步資料的錯亂。
Ø 當出現了非法關機時,為不影響資料,請執行如下操作:
在該非法關機的機器啟動後,檢查該機器,檢視資料是否與一直正常運作的機器一緻了。确認其資料一緻後。進入一直正常運作的機器,從開始菜單中打開mysql5的指令行,輸入正确的密碼,進入mysql控制台指令行模式後,輸入如下指令:
#關閉slave服務
Slave stop;
#開啟slave服務
Slave start;
通過這步後,一切即恢複正常
Ø 如果資料已經完全錯亂,請先在兩台機器上停止slave服務,然後将資料正常的伺服器上的資料導入到不正常的伺服器上,保證兩邊的伺服器資料一緻。然後到資料正常的伺服器的mysql控制台下輸入:
#顯示主伺服器狀态
Show master status;
擷取其狀态後,根據這個狀态到資料不正常伺服器上,通過指令:
#改變從伺服器的pos點為xx,記錄檔案為mysql-bin.0000xx
CHANGE MASTER TO Master_Log_File='mysql-bin.0000xx',Master_Log_Pos=xx;
修改其參數後,再通過
#開啟從伺服器
Start slave;
#顯示從伺服器狀态,檢查是否和主一緻。
#檢查Slave_IO_Running,Slave_SQL_Running狀态是否正常
Show slave status \G;
確定一切正常後。再到資料不正常的伺服器的mysql控制台下輸入:
#顯示主伺服器狀态
Show master status;
擷取其狀态後,根據這個狀态到資料正常的伺服器上,通過指令:
#改變從伺服器的pos點為xx,記錄檔案為mysql-bin.0000xx
CHANGE MASTER TO Master_Log_File='mysql-bin.0000xx',Master_Log_Pos=xx;
修改其參數後,再通過
#開啟從伺服器
Start slave;
#顯示從伺服器狀态,檢查是否和主一緻。
#檢查Slave_IO_Running,Slave_SQL_Running狀态是否正常
Show slave status \G;
確定也正常。最後在到兩台伺服器上修改資料,檢視資料是否已經同步
Ø 同步一旦配置好後,請不要修改伺服器機器名