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 難しい。