nakaoka3の技術ブログ

2023年中に52本なにか書きます

mysqldump 5.7.34 で mysqldump --single-transaction したきにハマった

mysqldump(5.7.42)でmysqldump --single-transaction をしたら Couldn't execute 'FLUSH TABLES WITH READ LOCK':というエラーがでた。

mysqldumpのバージョンを5.7.34にして同じように実行したら成功した。

brew install mysql@5.7 でインストールした mysqldumpは以下のバージョンだった。

$ mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.42, for osx10.17 (x86_64)

brew uninstall mysql@5.7をして、brew install mysqldump@5.7をして、以下のバージョンのmysqldumpを入れた。

$ mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.34, for osx10.17 (x86_64)

ユーザーのSHOW GRANTSは以下の通り。

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, PROCESS, INDEX, ALTER, LOCK TABLES ON *.* TO 'foobar'

5.7.34のリリースノートに mysqldump のbugfixがあるけど、関係ありそうでなさそう。

Using --single-transaction with mysqldump version 5.7.41 required either the RELOAD or FLUSH_TABLES privilege. This requirement now applies only when both gtid_mode=ON (default OFF) and with --set-gtid-purged = ON|AUTO (default AUTO). (Bug #109685, Bug #109701, Bug #34993824, Bug #34998910, Bug #35020512)

References: This issue is a regression of: Bug #105761, Bug #33630199.

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-42.html

mysqldump 難しい。