對于雙向數據庫鏡像,就是數據庫A的數據變化要鏡像到數據庫B中,同時數據庫B里的修改也要同時復制到數據庫A里。
對于循環數據庫鏡像,就是多個數據庫A、B、C、D等,對其中任一個數據庫的修改,都要同時鏡像到其它的數據庫里。
應用:同一個Zen Cart網店的數據庫和程序,可以放置在不同的主機上,在任一臺主機上新增的訂單、客戶資料,都會同時加入其它的主機數據庫里。
要實現雙向或循環數據庫鏡像,首先要解決的就是防止數據庫中自動遞增(AUTO_INCREMENT)字段的沖突,以免多數據庫各自生成一樣的增量值。
下面以三臺主機循環鏡像為例,A是B的主鏡像,B是C的主鏡像,C是A的主鏡像。三臺主機上MySQL設置文件 /etc /my.cnf 中分別加入下面的參數:
# 主機一:美國主機 A, IP: 100.101.102.201
[mysqld]
server-id = 10
log-bin = mysql-bin
log-slave-updates
replicate-same-server-id = 0
auto_increment_increment = 10
auto_increment_offset = 1
master-host = 100.101.102.203
master-user = repl_user
master-password = repl_password
report-host = 100.101.102.201
# 主機二:中國主機 B, IP: 100.101.102.202
[mysqld]
server-id = 20
log-bin = mysql-bin
log-slave-updates
replicate-same-server-id = 0
auto_increment_increment = 10
auto_increment_offset = 2
master-host = 100.101.102.201
master-user = repl_user
master-password = repl_password
report-host = 100.101.102.202
# 主機三:本地主機 C, IP: 100.101.102.203
[mysqld]
server-id = 30
log-bin = mysql-bin
log-slave-updates
replicate-same-server-id = 0
auto_increment_increment = 10
auto_increment_offset = 3
master-host = 100.101.102.202
master-user = repl_user
master-password = repl_password
report-host = 100.101.102.203
簡單說明:
server-id:數據庫標識,每個數據庫標識必須唯一;
replicate-same-server-id:設置為0,防止數據循環更新;
auto_increment_increment:這是循環鏡像里最重要的參數之一,表示自動增量為10,這將允許最多10臺數據庫加入這個循環鏡像的陣列,而自動遞增字段不會重復。
auto_increment_offset:這是循環鏡像里最重要的參數之一,表示偏移值,每個數據庫的偏移值必須唯一,且在1和auto_increment_increment之間。
master-host:主數據庫服務器的IP;
master-user:用于連接主數據庫的鏡像用戶名;
master-password:用于連接主數據庫的鏡像密碼;
report-host:提供給主數據庫用于反向連接的IP,因為主數據庫有時無法正確判斷從服務器的IP,所以這里最好填上從服務器自己的IP地址。
另外,有時只需要鏡像某些數據庫,可以在 my.cnf 中加入:
replicate-do-db = db_name1
replicate-do-db = db_name2
replicate-do-db = db_name3
這樣就僅僅鏡像db_name1/db_name2/db_name3
如果只是某些數據庫不要鏡像,可以在 my.cnf 中加入:
replicate-ignore-db=db_name1
replicate-ignore-db=db_name2
replicate-ignore-db=db_name3
這樣鏡像時就忽略 db_name1/db_name2/db_name3 這三個數據庫。
MySQL 數據庫雙向鏡像、循環鏡像(復制)
2019-11-19 15:12MYSQL教程網 Mysql
在MySQL數據庫鏡像的貼子中,主數據庫A 的數據鏡像到從數據庫B,是單向的,Zen Cart網店的數據讀寫都必須在數據庫A進行,結果會自動鏡像到數據庫B中。但是對數據庫B的直接操作,不會影響數據庫A。
延伸 · 閱讀
- 2022-03-11MySQL的索引你了解嗎
- 2022-03-10面試中老生常談的MySQL問答集錦夯實基礎
- 2022-03-10淺談如何保證Mysql主從一致
- 2022-03-10Ubuntu18.04(linux)安裝MySQL的方法步驟
- 2022-03-09MySQL讓人又愛又恨的多表查詢
- 2022-03-09MySQL Server 層和存儲引擎層是怎么交互數據的?
- Mysql
MySQL server has gone away錯誤提示解決方法
今天遇到類似的情景,MySQL只是冷冷的說:MySQL server has gone away。 ...
- Mysql
MySQL鎖的知識點總結
在本篇文章里小編給大家整理了關于MySQL鎖的知識點總結以及實例內容,需要的朋友們學習下。...
- Mysql
Centos7下使用yum安裝mysql數據庫的詳細教程(增強版)
這篇文章主要介紹了Centos7下使用yum安裝mysql數據庫的詳細教程(增強版),非常不錯,具有參考借鑒價值,需要的朋友可以參考下 ...
- Mysql
MySQL 查詢速度慢與性能差的原因與解決方法
隨著網站數據量與訪問量的增加,MySQL 查詢速度慢與性能差的問題就日漸明顯,這里為大家分享一下解決方法,需要的朋友可以參考下...
- Mysql
MySQL之Field‘***’doesn’t have a default value錯誤解決辦法
這篇文章主要介紹了MySQL之Field‘***’doesn’t have a default value錯誤解決辦法,需要的朋友可以參考下 ...
- Mysql
MySQL全文索引、聯合索引、like查詢、json查詢速度哪個快
這篇文章主要介紹了MySQL全文索引、聯合索引、like查詢、json查詢速度大比拼,通過實例代碼截圖的形式給大家介紹的非常詳細,具有一定的參考借鑒價值...
- Mysql
解決重置Mysql root用戶賬號密碼問題
這篇文章主要介紹了解決重置Mysql root用戶賬號密碼問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下...
- Mysql
幾種MySQL中的聯接查詢操作方法總結
這篇文章主要介紹了幾種MySQL中的聯接查詢操作方法總結,文中包括一些代碼舉例講解,需要的朋友可以參考下 ...