[英]MySQL/MariaDB replication: Can I interrupt the process?
我這里有一個復制設置,其中數據從固定主機復制到筆記本。
復制過程分兩個步驟:中繼文件的復制(非常快)和中繼日志事件到數據庫的應用(這往往很慢)。
現在我的問題是:假設從服務器已從主服務器獲取了所有數據,但“導入過程”仍在運行。 我可以安全地關閉從屬主機並恢復復制中仍未完成的部分,而不會以任何方式干擾該過程嗎?
因此,我已連接到主機,說“停止從站”,關閉筆記本計算機,回家,然后再次“啟動從站”,而沒有連接到主機。 我可以期望從屬實例再次恢復導入過程嗎?
您的筆記本電腦永遠是另一台計算機的從機,對嗎? 您只是每天晚上都斷開與Master的網絡連接?
從站上有兩個線程。 I / O線程負責從主服務器上的二進制日志中提取數據,並將這些內容放入從屬服務器上的“中繼日志”中。 如果(何時)網絡消失,則該線程反復重試。 有一些設置可以說明最終放棄的頻率和時間。 考慮調整它們。
SQL線程負責應用中繼日志中的所有內容。 實際上,SQL線程可以一直運行。 無事可做時“什么都不做”是很高興的。
I / O線程根據需要創建新的中繼日志文件。 SQL線程在完成日志后會刪除它。
這些年來,我已經與數十名奴隸打交道。 我不記得任何有關網絡或電源故障的問題。 本質上,您每天晚上至少會造成網絡故障。 如果還關閉了筆記本計算機的電源,請優雅地進行操作。 InnoDB(但不是MyISAM)可以從電源故障中很好地恢復,但是請不要碰運氣。
停止/開始從動似乎不必要,但不會造成傷害。 事情應該“恢復”並最終“趕上”。
您的報價談到了Master清除binlog。 好吧,這里有個問題。 Master不會跟蹤存在哪些Slave,因此無法確定您的Slave斷開連接的時間是否長於Master保留二進制日志的時間。
請參閱expires_logs_days
。 建議您將其設置為高於您可能需要的休假天數。
我對Slave的經驗早於GTID,Galera等。 你會用這樣嗎?
我部分找到了我問題的答案:
MySQL文檔說 :
如果從服務器在SQL線程執行所有獲取的語句之前停止運行,則I / O線程至少已獲取所有內容,以便將語句的安全副本本地存儲在從服務器的中繼日志中,以備下次使用時執行。奴隸開始。 這使主服務器可以更快地清除其二進制日志,因為它不再需要等待從服務器獲取其內容。
這表明完全有可能恢復導入過程(執行語句),但是仍然不清楚
start slave
,並且 start slave
如果奴隸找不到主人,會發生什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.