簡體   English   中英

從站啟動后關閉后的mariaDB(mysql)復制

[英]mariaDB(mysql) replication after slave is up after down

我有以mariadb(10.0.17-MariaDB-log-MariaDB Server)為主機的遠程主機(centos6):

server-id   = 1
log-bin=mysql-bin
binlog_do_db = mydatabase

和本地(win8.1),並將mariadb(10.0.16-MariaDB-log-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中那樣獲得“離線更改”? :)目前,我只能看到一種解決方案-完整的數據庫轉儲,但是這樣做很不方便,花費了太多時間,並且使master負擔沉重。

從站未連接到主站時,主站正在寫入其二進制日志。 從站已經記住了從那些二進制日志中讀取的地方。 當從站重新連接時,它會從“上次中斷的地方”拾取,將更改從主站的binlog復制到Slaves中繼日志並執行。 這個“趕超”過程將花費一些時間,需要多長時間取決於很多因素。

SHOW SLAVE STATUS; 在從站上驗證它是否已連接並正在運行(“是”)。

通常,從設備的版本不應早於主設備的版本。 (我懷疑10.0.17與16之間是否存在任何問題。10.0.17的變更日志中沒有任何內容讓我驚訝。)

您正在使用“並行復制”嗎? 請參見10.0.18中修復的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM