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
Homebrewを使用することで
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
ベンダー開発ライブラリを 1 つ選択する必要があります。
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 ダンプはデフォルトで無効になっており、binlog ダンプを使用してコンパイルするには、cmake オプションに -DWITH_BINLOG=ON を追加する必要があります。
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、およびテスト データベースをダンプしないようにできます。
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 と同様の実装です。実行プログラムは絶対パスである必要があります。 FILENAME は、処理するファイル名に置き換えられます。 FILENAME は引数として任意の場所に設定できます。
MyDumper では、デフォルト ファイル (別名: --defaults-file パラメータ) がより重要になり始めています。
[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
no-data が指定されているため、データはエクスポートされません。