mysqldump でデータベースのバックアップ、毎日エラー(でもバックアップは出来ていた。)、これを解決してみた。

Webサイト関連/日々の出来事////
  1. HOME
  2. Webサイト関連
  3. mysqldump でデータベースのバックアップ、毎日エラー(でもバックアップは出来ていた。)、これを解決してみた。

これは私の備忘録です。

2020年初秋から「さくらレンタルサーバー(スタンダード)」で、MySQL データベースの cron バックアップでエラーが出ていた。 エラーがでてもバックアップファイルは作成されていたので、解決を後回しにしていた。
だが、毎日のエラーメールが増えるばかりだから昨年末に対策をした。

これはその作業記録を書き留めたもの。

MySQLのデータベースバックアップは朝方にやっているのだが、起床してメールチェックすると次のエラーメッセージを含んだメールがデータベースの数だけ送られてきていた。

mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

エラーメールを遡ってみたら、どうも MySQL 5.7.3* になった頃から発生していた。

詳しいことがわかないので、早速、ググってみた。
やはり、同様のケースを確認したけど日本語より英語の記事が多くて「うっ!」になってしまった。

そこで、DeepL をフル活用して英語サイトを漁り、日本語で同症状に関する記事と比較してみたらみたら、PROCESS権限を付与すれば解決しそうだと言うことが分かった。

・・・が、ウチの場合は無理だった。(root権限じゃないと駄目?)

さらに、ググりは続きある情報を目にした。 その情報を参考にあれこれやってみて、素直にはいかなかったが、結果オーライ!
毎日のエラーメールは無くなった。

・・・で、やったこと。

mysqldump のオプションに –no-tablespaces を付ける。これだけ。但し、このオプションを付ける時は、mysqldump の直後は駄目。 オプションの指定には優先順位(順序)があるそうで、色々とやったらリダイレクトの直前が良さそうなことが分かった。

うちの場合、こんなコマンドラインを指定した。(一部、省略)

TODAY=date +'%y%m%d'
DBDUMP_FILE_1=mysql.$TODAY.LabelName
 :
mysqldump --defaults-extra-file=[設定ファイル名].conf --default-character-set=utf8mb4 [Databse Name] > $DBDUMP_FILE_1

これを、

mysqldump --defaults-extra-file=[設定ファイル名].conf --default-character-set=utf8mb4 [Databse Name] --no-tablespaces > $DBDUMP_FILE_1

・・・に設定して動作確認ができた。
–defaults-extra-file がある場合は「必ず先頭!」にするのがポイント。(先人の知恵に感謝!)

–no-tablespaces は、”CREATE LOGFILE GROUP ステートメントおよび CREATE TABLESPACE ステートメントを出力に書き出さない” と言う MySQL オフィシャルの解説があった。 なるほど・・・ねと、分かったフリw

cron が1日1回の動作で、いちいち時間変更して動作検証するのも面倒なので、昨年末に1週間かけておこなった。

うーん、ヱビスが旨い!

誰かのために参考になれば幸いです。