mysql
資料庫的同步問題
(
雙機熱備
)
網上有不少關于
mysql
資料庫伺服器的資料同步文章,其實隻有二位朋友發表的文章,其他都是轉抄。
而這些文章中,僅對資料同步過程的操作作了一個記錄,而沒有把操作方法,原理與一些過程中出現的問題說明清楚。
因為工作需要,
我公司需要對美國伺服器上的
mysql
資料庫同步到香港伺服器上,僅對部分業務相關表進行同步,而同時又需要把香港伺服器上的産品資料同
步到美國伺服器上,這是同一個資料庫,不同表
table
的雙向同步,我在設定過程中,參考了網上的中文文章與
msql.com
網站上的線上文檔,多次成敗,
也算是把
mysql
的這樣同步搞個明白。
下面就是一些記錄文章,希望可以說明一些内在原理,一些出錯現象與處理方法。
mysql
的資料同步,在
mysql
官方網站文檔上,叫
replication
字面是重作的意思,意譯就是同步了。
其實,
mysql
的同步,并不是使用同步
sync
這個單詞而是用重作
replication ,
很準确表明了
mysql
資料庫操作的實質,是作同樣的操作,或叫重作同樣
的操作,以保持主資料庫伺服器
master
與
從屬伺服器
slave
之樣的資料保持一緻。
replication
就是有重複,重作的意思。
mysql
為了實作
replication
必須打開
bin-log
項,也是打開二進制的
mysql
日志記錄選項。
mysql
的
bin log
二進制日志,可以記錄所有影響到資料庫表中存儲記錄内容的
sql
操作,如
insert / update / delete
操作,而不記錄
select
這樣的操
作。是以,我們可以通過二進制日志把某一時間段内丢失的資料可以恢複到資料庫中,
(
如果二進制日志中記錄的日志項,包涵資料庫表中所有資料,那麼,就
可以恢複本地資料庫的全部資料了
)
而這個二進制日志,如果用作遠端資料庫恢複,那就是
replication
了。
這就是使用
replication
而不用
sync
的原因。
這也是為什麼要設定
bin-log =
這個選項的原因。
在同步過程中,最重要的同步參照物,就是同步使用那一個二進制日志檔案,從那一條記錄開始同步。
下面,我們來講解最核心的過程
上面同步的單詞是
synchronization
,呵呵簡寫
sync
,也是
linux
下一個重要操作
下面的官方文檔,說明如何安裝與設定
mysql
同步操作,當然,英文版
http://dev.mysql.com/doc/mysql/en/Replication_HOWTO.html
現在,我們用中文複述一下過程
1.
首先,你應該有兩個或兩個以上的
mysql
資料庫伺服器,版本最好是在
3.3
以上
(
當然啦,兩個伺服器不一定是兩台機器,一台機器上安裝兩個
mysql
服務是可以的,同時,如果你對
mysql replication
原理十分精通的話,你甚至可以在一個
mysql
服務的兩個不同資料庫
database
之間作同步,看有沒有
需要了
)
說明:
這兩個伺服器一般設定一個為
主伺服器,或叫源伺服器,
master mysql server,
另一台或其他多台就是
replication slave
同步從伺服器了。一
台
slave
與多台
slave
設定方法是一樣的,這樣你就可以作類似資料庫叢集了
2.
設定可通路
mysql
帳号,操作以英文為準
說明:
2.1 mysql
帳号一般設定為限定
ip
通路,以保障安全性