深入淺出binlog-do-db

一、概述

在MySQL的複製機制中,有一個非常重要的角色:二進制日誌(Binary Log,簡稱Binlog)。二進制日誌是MySQL的核心組件之一,它記錄著數據庫的所有修改信息,這些信息都是以二進制格式存儲的,可以用於數據恢復、備份以及MySQL複製。而binlog-do-db就是二進制日誌複製機制中的一個重要參數,用於限制在複製時只複製指定的數據庫。

二、語法和參數作用

在MySQL中,可以通過設置binlog-do-db參數的值,來指定只有指定的數據庫進行了修改之後,二進制日誌才會被記錄,並可以被從複製源服務器複製到從服務器。binlog-do-db的語法如下:

binlog-do-db=name

其中name代表要使用二進制日誌記錄的數據庫名稱。可以多次使用binlog-do-db參數,以記錄多個數據庫的操作。

使用binlog-do-db時需要注意的是,在從服務器中使用此參數時,只有在設置和複製數據時指定的數據庫的操作才會寫入複製中繼日誌(relay log),因此,當從服務器需要複製其他數據庫時,應該在該從服務器上重新啟動複製進程。

三、binlog-do-db的使用場景

binlog-do-db中的“do”代表着“做”或者“執行”,因此,它的主要作用是限制在執行複製操作時只複製指定的數據庫。這個參數廣泛應用於以下幾個場景:

(一)部分數據同步

在複製的過程中,如果要將部分數據庫或者數據表的內容同步到從服務器上,可以使用binlog-do-db參數限制只複製特定的數據庫或者數據表,從而節省網絡帶寬和磁盤空間。

示例代碼:

CHANGE MASTER TO
MASTER_HOST='master_host_name',
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position,
MASTER_PORT=port_num,
MASTER_CONNECT_RETRY=seconds;
 
STOP SLAVE;
 
RESET SLAVE;
 
CHANGE REPLICATION FILTER REPLICATE_DO_DB=(
db1,
db2
);
 
START SLAVE;

可以看到,上述代碼中,使用CHANGE REPLICATION FILTER REPLICATE_DO_DB,將db1和db2限制為只複製的數據庫。這樣,從服務器只會複製這兩個數據庫中的操作。

(二)數據備份和恢復

在進行MySQL數據備份時,也可以使用binlog-do-db參數,比如,你只希望備份某些關鍵數據表,而不是所有的數據表。通過設置binlog-do-db,可以只備份指定的數據表或者數據庫,實現有針對性的備份,提高備份效率。

同樣的,binlog-do-db也可以在數據恢復的時候發揮作用,只還原指定的數據表或者數據庫,也能夠大大提高數據恢復的效率。

(三)克隆數據庫

在數據克隆的場景中,使用binlog-do-db可以非常方便地實現部分數據的複製,比如,將生產環境中的數據庫克隆到測試環境中,可以只複製生產環境中的關鍵數據表,而不會將整個數據複製到測試環境中,從而縮短數據克隆時間。

示例代碼:

mysqldump -h hostname \
 -u username \
 -p \
 --add-drop-database \
 --databases db_name1 db_name2> db_name_1&2_backup.sql
 
scp db_name_1&2_backup.sql hostname:/tmp
 
mysql -h hostname \
 -u username \
 -p \
 -e "CREATE DATABASE `db_name_1&2`;"\
 
mysql -h localhost \
 -u username \
 -p < /tmp/db_name_1&2_backup.sql
 
 CHANGE MASTER TO\
 MASTER_HOST='source_hostname',\
 MASTER_USER='repl_user',\
 MASTER_PASSWORD='repl_password',\
 MASTER_LOG_FILE='binlog.000001',\
 MASTER_LOG_POS=;
 
STOP SLAVE;
 
RESET SLAVE;
 
 CHANGE REPLICATION FILTER REPLICATE_DO_DB = (db_name1, db_name2);
 
START SLAVE;

在上述示例代碼中,使用了CHANGE REPLICATION FILTER REPLICATE_DO_DB參數,限制了只複製的數據庫名稱。只需要大約20分鐘,就可以克隆生產環境的數據庫到測試環境中。

四、小結

binlog-do-db是MySQL二進制日誌複製機制中非常重要的一個參數,能夠限制只複製指定的數據庫或者數據表,廣泛應用於數據備份和恢復、數據克隆、部分數據同步等場景,為MySQL的可靠性、可恢復性和高可用性提供了極大的保障。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/194295.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 09:44
下一篇 2024-12-02 14:37

相關推薦

  • finebi如何導入db文件

    finebi是一款全功能的Java報表開發工具,可以將數據進行可視化展示。在finebi中,導入數據庫是必不可少的一部分。在本文中,我們將從多個方面對finebi如何導入db文件進…

    編程 2025-04-28
  • do-while循環至少執行一次循環語句

    do-while循環是一種比while循環更加強大的循環結構,它保證循環體至少執行一次。在這篇文章中,我們將從循環的定義、語法結構、使用場景等多個方面來詳細闡述do-while循環…

    編程 2025-04-27
  • 深入淺出統計學

    統計學是一門關於收集、分析、解釋和呈現數據的學科。它在各行各業都有廣泛應用,包括社會科學、醫學、自然科學、商業、經濟學、政治學等等。深入淺出統計學是指想要學習統計學的人能夠理解統計…

    編程 2025-04-25
  • 深入淺出torch.autograd

    一、介紹autograd torch.autograd 模塊是 PyTorch 中的自動微分引擎。它支持任意數量的計算圖,可以自動執行前向傳遞、後向傳遞和計算梯度,同時提供很多有用…

    編程 2025-04-24
  • Imagine Doing 和 To Do

    一、Imagine Doing 介紹 Imagine Doing 是一種新思維方法,它倡導先通過想象力將自己投入到未來,再從中理清自己需要完成的任務步驟和目標,以此來提高自己的效率…

    編程 2025-04-24
  • 深入淺出SQL佔位符

    一、什麼是SQL佔位符 SQL佔位符是一種佔用SQL語句中某些值的標記或佔位符。當執行SQL時,將使用該標記替換為實際的值,並將這些值傳遞給查詢。SQL佔位符使查詢更加安全,防止S…

    編程 2025-04-24
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web服務器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24
  • 深入淺出ThinkPHP框架

    一、簡介 ThinkPHP是一款開源的PHP框架,它遵循Apache2開源協議發布。ThinkPHP具有快速的開發速度、簡便的使用方式、良好的擴展性和豐富的功能特性。它的核心思想是…

    編程 2025-04-24
  • 深入淺出arthas火焰圖

    arthas是一個非常方便的Java診斷工具,包括很多功能,例如JVM診斷、應用診斷、Spring應用診斷等。arthas使診斷問題變得更加容易和準確,因此被廣泛地使用。artha…

    編程 2025-04-24
  • 深入淺出AWK -v參數

    一、功能介紹 AWK是一種強大的文本處理工具,它可以用於數據分析、報告生成、日誌分析等多個領域。其中,-v參數是AWK中一個非常有用的參數,它用於定義一個變量並賦值。下面讓我們詳細…

    編程 2025-04-24

發表回復

登錄後才能評論