web-dev-qa-db-ja.com

圧縮されたMySQLダンプを復元する際のバイナリログの無効化

既存のデータベースのスレーブを構築するのに忙しい。スレーブをマスターと同じ状態にする前に、インポートしたデータのビンログを作成したくありません。

これは主に、100 Gのデータをインポートする際のスペースを節約するためです。

mysqldump somelargedb | gzip > /somewhere/withspace/dump/somelargedb.sql.gz

非圧縮のこのファイルは100 Gbの範囲です。圧縮後は約2Gb

5
nelaaro

私はこの答えを見つけました。

https://geert.vanderkelen.org/2009/disabling-binary-logging-when-restoring-a-mysql-dump/

bash $ (echo "SET SESSION SQL_LOG_BIN=0;"; cat dump.sql) > dump_nobinlog.sql

より良い解決策は次のようになります。上記サイトのコメントより。しかし、データの量はかなり多いので、データがエクスポートされるのを待つためにさらに数時間を費やしたくありません。これには、ダンプ時のファイルの圧縮も含まれません。

$ echo "SET SESSION SQL_LOG_BIN=0;" > dumpfile   
$ mysqldump .... >> dumpfile

私はそれを次のように適合させました。

echo "SET SESSION SQL_LOG_BIN=0;" | gzip | zcat - /somewhere/withspace/dump/somelargedb.sql.gz | mysql -u root -p somelargedb
5
nelaaro

これは、.gzダンプに対して次の方法で実行できます。

(echo "SET SESSION SQL_LOG_BIN=0;"; gzip -dc dump.sql.gz) | mysql

または、リモートサーバーから直接データベースをコピーする場合:

(echo "SET SESSION SQL_LOG_BIN=0;"; mysqldump --Host your_Host --verbose --compress my_database) | mysql my_database

Mysqldumpとmysqlの両方のユーザーとパスワードが.cnfファイルに追加されていることを意味します(例:~/.my.cnf

2
RussCoder