我有遠程主機(centos6)與MariaDB的(10.0.17-MariaDB的日誌 - MariaDB的服務器)作爲主:MariaDB的(MySQL的)站後複製了下來後
server-id = 1
log-bin=mysql-bin
binlog_do_db = mydatabase
和地方(win8的。 1)用MariaDB的(10.0.16-MariaDB的日誌 - mariadb.org二進制分佈)作爲從屬:
server-id = 2
作爲初始過程我傾倒遠程主機上的數據庫,其導入本地主機上,然後執行SHOW MASTER STATUS,獲取文件名和偏移量並運行:
CHANGE MASTER TO MASTER_HOST='$host', MASTER_USER='$user', MASTER_PORT = $port, MASTER_PASSWORD='$pass', MASTER_LOG_FILE='$fname', MASTER_LOG_POS=$pos
STOP SLAVE
START SLAVE
複製開始。我在桌面上做的每件事都反映給奴隸。
但是,如果奴隸下降,它沒有任何變化(主人作出),而奴隸離線反映到奴隸!所以看起來我的奴隸應該永遠在線,但它是一臺筆記本電腦! 然而,從設備啓動後,實時複製仍然有效 - 它不記錄離線的所有更改,但是如果我在從設備聯機並啓動時更改了主設備上的數據庫,則所有更改都會完全反映到從設備。當然,我知道複製是基於聲明的,所以我沒有獲得數據差異,但獲得了指令。但我認爲師父記得它發送了什麼,什麼沒有發送。所以在下一個操作中,它只發送所有未交付的更改。我錯了嗎?
我的複製場景:主服務器與客戶端(移動設備)進行交互並且他們更改數據庫。我時不時地啓動我的筆記本電腦,開始複製,獲取更新的數據庫並做一些大量分析(對於我的2核廉價服務器來說太難了)。 也許有更好的方法?有沒有辦法像ICQ messenger一樣獲得「離線更改」? :) 現在我只能看到一個解決方案 - 完整的數據庫轉儲,但它不方便,花費太多時間和大量負載主。
不,它是1個主 - 1個從屬複製。昨天我發現並不是所有的日誌操作都被執行。例如,數據處理涉及創建臨時表,寫入,讀取和刪除。複製後,從屬設備上有臨時表。但是今天我沒有看到臨時表,所以看起來複制不是實時的,實際上需要很多時間。但是有沒有辦法知道複製是完整的並且是最新的?現在我的主人在24小時內更新一次,更新過程大約需要5分鐘。所以我認爲在至少10分鐘後兩個基地應該是相等的?但不是。 – Tertium
我想我明白了:如果Seconds_Behind_Master == 0我們已經完成了。順便說一下,使用基於行的複製效果會更好 – Tertium