MySQL數據雙向同步

jopen 10年前發布 | 26K 次閱讀 MySQL 數據庫服務器

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

 

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;

確保也正常。最后在到兩臺服務器上修改數據,查看數據是否已經同步

?    同步一旦配置好后,請不要修改服務器機器名

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!