要把docker mysql container的資料倒出來
當然可以透過像MySql workbench倒回即可
但目標是透過ansible腳本可以遠端隨時把db dump出來
所以需要的是透過單一指令執行
基本作法是
先進入container
sudo docker exec -it mysql99 bash
再執行mysql dump指令
mysqldump -u root -p mydb > mydb.sql
可以簡化成由docker exec直接執行
sudo docker exec -it mysql99 bash -c 'mysqldump -u root -p mydb > mydb.sql'
但如果要自動化這有一個問題是,每次都需要輸入password
解決方式是 在my.cnf加入設定
[mysqldump]
user=xxx
password=xxx
指令可以再簡化連使用者都不用輸入
sudo docker exec -it mysql99 bash -c 'mysqldump mydb > mydb.sql'
已經準備好自動化的指令
接下來就可以使用ansible腳本來執行
dump.yml
- name: Dump MySQL db
hosts: myhost
tasks:
- name: Dump MySQL DB -e db要帶匯出的db名稱
become: true
shell:
cmd: "docker exec -it contianerName bash -c 'mysqldump {{db}} > {{db}}_{{ ansible_date_time.date }}.sql'"
register: output
- debug:
var: output
執行
ansible-playbook -i hosts.yml -e db=mydb dump.yml
就會將mydb dump到 mydb_20200501.sql這樣帶有日期的sql檔案
沒有留言:
張貼留言