LoginSignup
4

More than 5 years have passed since last update.

mysqldump の--dump-slaveオプションを使用する時の注意点

Last updated at Posted at 2017-01-16

このオプションを使用すると、mysqldump はダンプ前にスレーブ SQL スレッドを終了し、ダンプ後に再起動します。

MySQL5.5 から追加された --dump-slaveオプションについて落とし穴にハマったのでメモ。
上記のマニュアルの通り、このオプションを使用すると、dump取得中はレプリケーションが停止する。
そのため、以下の点に注意する必要がある。

・ 内部的に STOP SLAVE SQL_THREAD / START SLAVE を実行するため、mysqldump実行用ユーザを別途作成する場合はSUPER権限が必要となる

・ dump取得中はレプリケーションが停止しているが、スレーブのテーブルにアクセスすることは可能となるため、mysqldump実行中はアプリケーションからアクセスが来ないよう、LBなどから切り離す必要がある

※ ちなみに --dump-slave オプション自体はMySQL5.5から導入されたものだが、
  実行元が5.5以上であれば、dumpの取得元であるMySQLは5.1でも問題はない模様

なお、GTIDが有効になっている環境であれば、そもそも--dump-slaveオプションを使用する必要はありません(むしろ非推奨のようです)

https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_dump-slave

Warning
This option should not be used if the server where the dump is going to be applied uses gtid_mode=ON and MASTER_AUTOPOSITION=1.

■ tpccスキーマのitemテーブルのdumpファイルを取得した時の一般クエリログ

実行コマンド:
mysqldump -u dump_user -ppassword --dump-slave=2 -h 192.168.11.33 --single-transaction --routines --events --triggers --default-character-set=sjis --hex-blob --databases tpcc --tables item > test_dump.sql

170111 10:32:17    17 Connect   dump_user@192.168.11.88 on 
                   17 Query     /*!40100 SET @@SQL_MODE='' */
                   17 Query     /*!40103 SET TIME_ZONE='+00:00' */
                   17 Query     SHOW SLAVE STATUS
                   17 Query     STOP SLAVE SQL_THREAD
                   17 Query     SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
                   17 Query     START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
                   17 Query     SHOW VARIABLES LIKE 'gtid\_mode'
                   17 Query     SHOW SLAVE STATUS
                   17 Query     UNLOCK TABLES
                   17 Query     SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='tpcc' AND TABLE_NAME IN ('item'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME
                   17 Query     SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='tpcc' AND TABLE_NAME IN ('item')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
                   17 Query     SHOW VARIABLES LIKE 'ndbinfo\_version'
                   17 Init DB   tpcc
                   17 Query     SHOW TABLES LIKE 'item'
                   17 Query     show table status like 'item'
                   17 Query     SET SQL_QUOTE_SHOW_CREATE=1
                   17 Query     SET SESSION character_set_results = 'binary'
                   17 Query     show create table `item`
                   17 Query     SET SESSION character_set_results = 'sjis'
                   17 Query     show fields from `item`
                   17 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `item`
                   17 Query     SET SESSION character_set_results = 'binary'
                   17 Query     use `tpcc`
                   17 Query     select @@collation_database
                   17 Query     SHOW TRIGGERS LIKE 'item'
                   17 Query     SET SESSION character_set_results = 'sjis'
                   17 Query     show events
                   17 Query     use `tpcc`
                   17 Query     select @@collation_database
                   17 Query     SET SESSION character_set_results = 'binary'
                   17 Query     SHOW FUNCTION STATUS WHERE Db = 'tpcc'
                   17 Query     SHOW PROCEDURE STATUS WHERE Db = 'tpcc'
                   17 Query     SET SESSION character_set_results = 'sjis'
                   17 Query     SHOW SLAVE STATUS
                   17 Query     START SLAVE
                   17 Quit      

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4