ロリポップサーバーのMySQLのバージョンが8.x系になっている(なお,SSH上にて)
公開日:
最終更新日:
要約
ロリポップサーバーのMySQLがSSH環境では8.x系で動作している一方、Web上では5.6系が稼働していることが判明。mysqldumpで古い5系用のコマンドを実行するとエラーが発生するため、--skip-column-statisticsオプションを追加し対応。バックアップはcronでも正常に動作しているようだが、環境ごとのバージョン違いに注意が必要である。
ロリポップサーバーのデータベースを mysqldump でバックアップをとっています。
バックアップをとるshファイルを修正する必要があったので,久しぶりにSSHでアクセスし,バックアップ用の shファイルを走らせたところ次のエラー。
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')
(後略
なんだこりゃ。
調べたところ,mysql5系で書いたmysqldumpのコマンドを8系で走らせたら出るエラーらしい。
mysqldumpコマンドで "Unknown table 'COLUMN_STATISTICS' in information_schema (1109)" と怒られる原因と対策
ロリポップのMySQLはWeb上では5.6

画像は2021年11月15日時点です。
今後,ロリポップも値上がりするので,MySQL 8.x 系を導入するのかもしれません。
ちなみに,SSHでログインしてコマンドをたたくと,8.x系だと教えてくれます。

ターミナル上で動いている mysql は 8系を使っているが,web上で動いている mysql は 5系ってことなのかな。

一方,これまでのバックアップが走っていなかったというと,そうでもなく,日付を見る限り,ちゃんとバックアップがとれています。
cron が呼び出す mysql は5系なのかもしれない。
--skip-column-statistics オプションをつけてエラー回避
この問題はmysqldumpコマンドに
mysqldumpコマンドで "Unknown table 'COLUMN_STATISTICS' in information_schema (1109)" と怒られる原因と対策--skip-column-statisticsというオプションを設定して、ANALYZE TABLE文の自動生成をやめさせることで回避できる。
上のブログに従って,オプションをつけたところ,ターミナル上でもエラーは出なくなりました。
*その結果が,上の写真の 11月15日の22:07のファイルです。
しかし,cron 上でエラーが起きたりするといやですね。
何かあったら追記します。
その後(11月16日追記)

どうやら,うまくバックアップ用の cron は走っている様子です。