MyDumper是一個MySQL邏輯備份工具。它有 2 個工具:
mydumper
負責匯出 MySQL 資料庫的一致備份myloader
從 mydumper 讀取備份,連接到目標資料庫並匯入備份。這兩個工具都使用多執行緒功能。
MyDumper 是開源的,由社群維護,它不是 Percona、MariaDB 或 MySQL 產品。
官方文件(正在進行中)
此部分已遷移
首先從發布部分取得正確的 url,然後:
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el7.x86_64.rpm
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el8.x86_64.rpm
對於ubuntu,需要安裝依賴項:
apt-get install libatomic1
然後您可以下載並安裝該套件:
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
wget https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
dpkg -i mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
透過使用 pkg
pkg install mydumper
或從港口
cd /usr/ports/databases/mydumper && make install
透過使用自製程序
brew install mydumper
考慮到 mydumper.cnf 檔案將位於 /usr/local/etc 或 /opt/homebrew/etc 上。因此,您可能需要使用以下命令執行 mydumper/myloader:
mydumper --defaults-file=/opt/homebrew/etc/mydumper.cnf
myloader --defaults-file=/opt/homebrew/etc/mydumper.cnf
apt-get install cmake g++ git
yum install -y cmake gcc gcc-c++ git make
sudo port install cmake pkgconfig
apt-get install libglib2.0-dev zlib1g-dev libpcre3-dev libssl-dev libzstd-dev
yum install -y glib2-devel openssl-devel pcre-devel zlib-devel libzstd-devel
zypper install glib2-devel libmysqlclient-devel pcre-devel zlib-devel
sudo port install glib2 pcre
您需要選擇一個供應商開發庫。
apt-get install libmysqlclient-dev
apt-get install libperconaserverclient20-dev
apt-get install libmariadbclient-dev
yum install -y mysql-devel
yum install -y Percona-Server-devel-57
yum install -y mariadb-devel
CentOS 7 預設帶有非常舊的 MariaDB 5.5 函式庫。最好下載這些函式庫的更新版本(MariaDB、MySQL、Percona 等)。
zypper install libmysqlclient-devel
sudo port install mariadb-10.11
sudo port select mysql
跑步:
cmake .
make
sudo make install
必須確保 pkg-config、mysql_config、pcre-config 都在 $PATH 中
預設情況下停用 Binlog 轉儲,若要使用它進行編譯,您需要將 -DWITH_BINLOG=ON 新增至 cmake 選項
要針對 mysql libs < 5.7 進行構建,您需要添加 -DWITH_SSL=OFF 來停用 SSL
您可以下載官方 docker 映像,也可以從本機來源或使用提供的 Dockerfile 直接從 Github 來源建置 Docker 映像。
docker build --build-arg CMAKE_ARGS= ' -DWITH_ZSTD=ON ' -t mydumper github.com/mydumper/mydumper
請記住,Dockerfile 解決的主要目的是從本機原始碼進行開發和建置。對於分發目的來說,它可能不是最佳的,但也可以作為快速建置和運行上述單行的解決方案。
查看用法
這一切都是按照 MySQL 最佳實踐和傳統完成的:
目前,這並沒有為非事務性引擎提供一致的快照 - 預計在 0.2 中提供支援:)
一旦可以使用 --regex 功能,例如不轉儲 mysql、sys 和 test 資料庫:
mydumper --regex ' ^(?!(mysql.|sys.|test.)) '
僅轉儲 mysql 和測試資料庫:
mydumper --regex ' ^(mysql.|test.) '
不轉儲以 test 開頭的所有資料庫:
mydumper --regex ' ^(?!(test)) '
轉儲不同資料庫中的特定表(注意:表名應以 $. 結尾相關問題):
mydumper --regex ' ^(db1.table1$|db2.table2$) '
如果你想轉儲幾個資料庫但丟棄一些表,你可以這樣做:
mydumper --regex ' ^(?=(?:(db1.|db2.)))(?!(?:(db1.table1$|db2.table2$))) '
這將轉儲 db1 和 db2 中的所有表,但會排除 db1.table1 和 db2.table2
當然,正規表示式功能可用於描述幾乎任何表格清單。
您可以使用 --exec 執行外部命令,如下所示:
mydumper --exec " /usr/bin/gzip FILENAME "
--exec是單線程的,與Stream類似的實作。 exec 程式必須是絕對路徑。 FILENAME 將替換為您要處理的檔案名稱。您可以在任何地方設定 FILENAME 作為參數。
預設檔案(又稱:--defaults-file 參數)在 MyDumper 中開始變得更加重要
[mydumper]
host = 127.0.0.1
user = root
password = p455w0rd
database = db
rows = 10000
[myloader]
host = 127.0.0.1
user = root
password = p455w0rd
database = new_db
innodb-optimize-keys = AFTER_IMPORT_PER_TABLE
v0.14.0-1 之前的版本:
[mydumper_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[myloader_variables]
long_query_time = 300
innodb_flush_log_at_trx_commit = 0
從 v0.14.0-1 開始:
[mydumper_session_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mydumper_global_variables]
sync_binlog = 0
slow_query_log = OFF
[myloader_session_variables]
long_query_time = 300
[myloader_global_variables]
sync_binlog = 0
innodb_flush_log_at_trx_commit = 0
[ ` db ` . ` table ` ]
where = column > 20
limit = 10000
[ ` myd_test ` . ` t ` ]
columns_on_select=qty,price+20
columns_on_insert=qty,price
重要:當使用不需要參數的選項時,例如:--no-data 或 --events,您需要為那些始終指示:TRUE/ON/ENABLE 的變數設定任何值。如果您認為添加--no-data=0
會導出數據,那麼這是一個錯誤:
[mydumper]
no-data=0
由於未指定任何數據,因此不會匯出數據。