mysql、sqlserver資料庫之間的資料同步
Windows 作業系統
需要Mysql 3.23.15以後的版本。
假設資料庫A為主機,資料庫B為從機(A向B提供同步服務,即B中的資料來自A)
A機器:IP=10.10.151.166
B機器:IP=10.10.151.156
下面看單向同步的配置步驟:
1 在機器A中建立一個新的資料庫,sql語句:
[sql] view plain copy
CREATE DATABASE backup_db;
USE test;
CREATE TABLE backup_table
(id
int(11) NOT NULL auto_increment,name
varchar(20) character set utf8 NOT NULL,sex
PRIMARY KEY (
id
)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
2 開啟A機器的mysql安裝目錄下的my.ini檔案,在檔案最後新增:
[plain] view plain copy
server-id=1
log-bin=c:\mysqlback #啟動同步事件的日誌記錄檔案
binlog-do-db=test #提供資料同步服務的資料庫
3 在機器B中建立一個和機器A結構相同的資料庫,sql語句:
[plain] view plain copy
CREATE DATABASE backup_db;
USE test;
CREATE TABLE backup_table
id
int(11) NOT NULL auto_increment,name
varchar(20) character set utf8 NOT NULL,sex
varchar(2) character set utf8 NOT NULL,PRIMARY KEY (
id
)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
注:機器A和B的資料庫結構必須一致,否則無法構成同步
4 開啟B機器的mysql安裝目錄下的my.ini檔案,在檔案最後新增:
[plain] view plain copy
server-id=2
master-host=10.10.151.166 #主機A的地址
master-user=ym #主機A提供給B的使用者,該使用者中需要包括資料庫test的許可權
master-password=ym #訪問密碼
master-port=3306 #埠,主機的MYSQL埠
master-connect-retry=60 #重試間隔60秒,當主從伺服器連線意外斷開時資料庫每隔60秒進行一個重新連線
replicate-do-db=test #同步的資料庫
5 完成以上配置之後,在機器A的mysql控制檯中輸入:
[plain] view plain copy
GRANT REPLICATION SLAVE,RELOAD,SUPER ON . TO [email protected] IDENTIFIED BY ‘ym’ ;
#這句是為讓從伺服器有足夠的許可權從主伺服器是哪個接收二進位制日誌檔案
6 重啟機器A和B的mysql資料庫,
[plain] view plain copy
在機器B的mysql控制檯:
Mysql>slave start;
如果想檢視同步配置的情況,可以按如下輸入:
機器A的mysql控制檯:
Mysql>show master status;
機器B的mysql控制檯:
Mysql>show slave status;
7 在機器A中test資料庫中的backup_table表中插入一些資料,檢視機器B中test資料庫中的backup_table表應該同步實現了資料的改動。
下面是雙向的資料同步配置步驟:
1還是上面使用的機器A和機器B,這是B是主機,A是從機,保持上面的配置不要改在機器A 的mysql安裝目錄下的my.ini檔案最後新增: master-host=10.10.151.156 #主機B的地址 master-user=ym #主機B提供給A的使用者,該使用者中需要包括資料庫test的許可權 master-password=ym #訪問密碼 master-port=3306 #埠,主機的MYSQL埠 master-connect-retry=60 #重試間隔60秒當主從伺服器連線意外斷開時資料庫每隔60秒進行一個重新連線 replicate-do-db=test #同步的資料庫 在機器B的mysql安裝目錄下的my.ini檔案最後新增 log-bin=c:\mysqlback #啟動同步事件的日誌記錄檔案 binlog-do-db=test #提供資料同步服務的資料庫 2 機器B的mysql控制檯輸入: GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO [email protected].10.151.166 IDENTIFIED BY 'ym' ; 3 重啟機器A和機器B的mysql資料庫 在機器B中test資料庫中的backup_table表中插入一些資料,檢視機器A中test資料庫中的backup_table表應該同步實現了資料的改動。但不會導致迴圈 注:實現mysql資料庫的資料同步,須將倆臺windows作業系統的windows防火牆關閉 Mysql 資料同步的原理: Mysql的資料同步,在Mysql官方網站文件上,叫replication字面意思是重作,這個很準確的表明了Mysql資料庫操作的實質,是重作同樣的操作,以保持主數 據庫伺服器沒事master與從屬資料庫伺服器slave之間的資料保持一致。 從MySQL3.23.15以後,Mysql支援單向的非同步複製。也就是說,1臺Mysql伺服器充當Master(主庫),1臺或多臺Mysql伺服器充當Slaves(從庫),資料從 Master向Slaves進行非同步複製。注意,這種複製是非同步的,有別於Mysql的同步複製實現(這種實現稱做Mysql叢集,Mysql Cluster)。 當主庫有更新的時候,主庫會把更新操作的SQL寫入二進位制日誌(Bin log它記錄了所有更新了資料或者已經潛在更新了資料的所有語句),並維護一個二進位制日誌 檔案的索引,以便於日誌檔案輪迴(Rotate)。在從庫啟動非同步複製的時候,從庫會開啟兩個I/O執行緒,其中一個執行緒連線主庫,要求主庫把二進位制日誌的變化部 分傳給從庫,並把傳回的日誌寫入本地磁碟。另一個執行緒則負責讀取本地寫入的二進位制日誌,並在本地執行,以反映出這種變化保證主從資料庫之間的資料同步。 較老的版本在複製的時候只啟用一個I/O執行緒,實現這兩部分的功能。這種方法是利用了Mysql資料庫主(master)和從(slave)非同步複製功能,來實現資料庫 之間的同步。 Windows系統中,Mysql安裝目錄下my.ini檔案中: log-bin=c:\mysqlback;