それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

automysqlbackupに救われた。新サーバにも導入する。

automysqlbackupに救われた。

SSDが寿命により崩壊し、データが消えたと嘆いていたのですが。mysql のデータは残っていた。

入れたことを忘れていた。

存在を忘れていたautomysqlbackupがバックアップを取ってくれていた。助かる。 まじ救われた。5年前の自分に感謝。

バックアップの保存先。

/var/lib/automysqlbackup

automysqlbackup インストール

debian 11 では。パスワードの設定が必要。以前は debian-sys-adm というユーザーが存在してそれをそのまま使うことができていたが、セキュリティ上の理由の懸念により現在は使えない。

MariaDB [(none)]> SELECT Host, User, Password FROM mysql.user;
+-----------+------------------+-------------------------------------------+
| Host      | User             | Password                                  |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *ABCDEFGHIJKLMNOP123456787890|
+-----------+------------------+-------------------------------------------+

面倒なので、既存のパスワードを消してやる

このため、デフォルトはrootなので、sshでログインしない限り使えない。

set password for root@localhost=password('')

root@localhsot のパスワードを無効にしても大丈夫なのは、ssh でログインしない限り使えないから。リモート( mysql 接続) では使えません。ただしnginxのプロキシでmysql.sock を公開されちゃうとかされたら危険。そのときは知らない。

バックアップが取得されることを確認。

sudo  /usr/sbin/automysqlbackup
sudo find  /var/lib/automysqlbackup/

パスワードを設定する場合

automysqlbackup は単なるスクリプトなので設定は環境変数を使うだけになっている。

/etc/default/automysqlbackup

USERNAME=debian-sys-maint
PASSWORD=my_root_password
DBNAMES="`mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST --batch --skip-column-names -e "show databases"| sed 's/ /%/g'`"

これで、auto mysql dump backup が稼働する。

debian11 での注意

debian-sys-maint と /etc/mysql/debian.cnf が使えなくなっている。

以前は、/etc/mysql/debian.cnf にメンテナンス用のパスワードを記載していたが使えなくなっているので注意が必要。

debian 11 での利用の場合

debian-sys-maint を有効にする。

ALTER USER 'debian-sys-maint'@'localhost' IDENTIFIED BY  'P@assword123456' WITH GRANT OPTION;

sys-maint を使うように設定する。

USERNAME=debian-sys-maint
PASSWORD=P@assword123456

performance_schema を除外する。

DBNAMES="`mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST  \
--batch --skip-column-names -e "show databases"|  \
grep -v performance_schema | sed 's/ /%/g'`"

perfomance_schema.account テーブルがロックできなくて落ちる。

次のようにロックのエラーが出てくる。

mysqldump: Got error: 1142: "SELECT, LOCK TABLES command denied to user 'debian-sys-maint'@'localhost' for table 'accounts'" when using LOCK TABLES

perfomance_schemaは、バックアップになくても影響ないテーブルなので、除外する。

そのために、/etc/cron.daily/automysqlbackup を書き換えて、grep -v を追加した。

参考資料