MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法

目次

スポンサードリンク

mysqldumpコマンドでダンプファイルを取得する際、以下のようにエラーとなりダンプファイルが取得できませんでした。

[root@hostname tmp]# mysqldump --user=root -p --single-transaction --master-data=2 --flush-logs --databases databasename > /tmp/dump_20241111.sql
mysqldump: Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)

エラーの原因

エラーの原因は、mysqldumpコマンドのオプションと指定していた「–master-data=2」にありました。このオプションはマスタースレーブ環境のデータベースからダンプを取得する際に必要なオプションです。このオプションを指定すると、mysqldumpの出力に現在のマスターサーバーのバイナリログに関する情報がコメントとして含まれます。これにより、スレーブサーバーでこのダンプファイルを復元した場合、マスターサーバーとの位置合わせを行うための情報として利用できます。

「–master-data=2」を指定すると、バイナリログに関する情報を出力しようとしますが、そもそもこのデータベースではバイナリログが有効になっていなかった ため、エラーとなっていました。

エラーの対処方法

マスタースレーブ環境に関する情報をダンプファイルに含める必要が無いため、コマンドから、–master-data=2 を削除すればエラーは解消します。

また、意図せずバイナリログが無効になっていた場合は、MySQLの設定ファイル(通常は/etc/mysql/my.cnfなど)を編集し、バイナリログを有効にすることでエラーは解消します。

log_bin=mysql-bin

設定ファイルに上記設定を追加後、MySQLサーバーを再起動し、再度mysqldumpコマンドを実行します。


SQLパズル 第2版: プログラミングが変わる書き方/考え方
SQLに関する実践的な問題75問について解説した書籍。SQLで解決するものからテーブル設計自体を見直す解決方法など実践的なノウハウが学べる良書です。