[Docker] MySQL コンテナのスケジュールされたバックアップ

私たちは普段、ネイティブ mysql を使用することが多く、mysql バックアップもよく知られています。ユーザー名が root、パスワードが 123456 の mysql データベースがあり、スキーマが db1 と db2 であるデータをエクスポートするとします。
ローカルにエクスポートする場合、次のように渡すことができます。

mysqldump -uroot -p123456 --databases db1 db2 > /data_backup/xxx.sql

スキーマが db1 および db2 であるデータを、パスが /data_backup/xxx.sql であるファイルにエクスポートします。
しかし、mysql が docker イメージの場合、どのようにエクスポートすればよいでしょうか?
利用を考えている学生も多いかもしれません

docker exec -it $container_name mysqldump -uroot -p123456 --databases db1 db2 > /data_backup/xxx.sql

輸出する。ただし、上記のステートメントを直接使用してエクスポートすると、xxx.sql のデータ バックアップを取得できますが、タイマーでステートメントを実行すると、空の xxx.sql ファイルが取得されます。
なぜ?
通常、実行できるステートメントやスクリプトはタイマーによっても実行でき、タイマーは単なるトリガーされたアクションであると考えられます。
はい、何も問題はありませんが、問題は実行をトリガーする方法にあります。
手動で実行する場合は、 docker exec -it を使用して mysqldump を実行するための疑似端末を作成するので、実行可能です。
ただし、タイマーが自動的にトリガーされる場合、タイマーは元々ターミナル内にあるため、-it を介して疑似ターミナルを作成する必要はありません。後者にはホスト マシンの環境変数がないため、エラーが発生します。報告。
したがって、正しいコマンドは次のとおりです。

docker exec -i $container_name mysqldump -uroot -p123456 --databases db1 db2 > /data_backup/xxx.sql

tを削除するだけです。

おすすめ

転載: blog.csdn.net/kida_yuan/article/details/128985180