AWS には、それぞれサイズが 1~2 GB と推定される 100 を超えるクライアントデータベースを持つプロジェクトがあります。標準のAWS RDS毎日のスナップショットではなく、mysqldumpを介して各データベースを毎日バックアップする必要があります。
Bashでは、リストを繰り返し、各データベースを順番にダンプするのに数時間かかることがあります。私の質問は
Bashフォークを実行し、データベースを並列にダンプすることをお勧めしますか?
ベストアンサー1
client_db.list
データベース名のリストを含むファイルがあり、すべてのデータベースが1つのRDSインスタンスに属しているとします。live-db.example.internal
> cat client_db.list
client01_dbname
client02_dbname
client03_dbname
...
...
client_template
基本ソリューション
解決策は次のとおりです。GNUパラレル apt install parallel
各データベースに対して mysqldump を並列に実行するために使用されます。
parallel -j2 -a client_db.list mysqldump -uroot -pXXXXXXXXX -hlive-db.example.internal \
--single-transaction \
--skip-lock-tables {} '>' ./backup/{.}.sql
詳細
-j2
RDSインスタンスのvCPUの数に応じて、mysqldumpが両方のデータベースで同時に実行されることを示します。
出力は次のとおりです。
ls -lh
total 3.4G
-rw-r--r-- 1 jenkins jenkins 26M Jun 4 10:56 client01_dbname.sql
-rw-r--r-- 1 jenkins jenkins 26M Jun 4 10:54 client02_dbname.sql
-rw-r--r-- 1 jenkins jenkins 26M Jun 4 10:54 client03_dbname.sql
...
...
-rw-r--r-- 1 jenkins jenkins 26M Jun 4 10:54 client_template.sql