定期備份 mysql 資料到其他機器

最理想的方式當然是做 cluster,但是有時候沒這麼理想。

比方說最近遇到的例子就是有些機器在 google cloud 上,有些在 aliyun 上,但是從 aliyun 連 google cloud 真的是望眼欲穿,就連反過來從 google cloud 要連 aliyun 都是考驗耐心,所以,如果用 cluster 或者是在程式部分去 update 多個 database,實在不是明智之舉。因此,只好善用 mysqldump 跟 scp

mysqldump -u username -pPASSWORD username table_1 > /tmp/sqldump/table_1.sql
mysqldump -u username -pPASSWORD username table_2 > /tmp/sqldump/table_2.sql
zip -r /tmp/sqldump.zip /tmp/sqldump/
scp /tmp/sqldump.zip root@IP_ADDRESS:/tmp/sqldump.zip
ssh root@IP_ADDRESS 'cd /; unzip -o /tmp/sqldump.zip; rm -f sqldump.zip; cat /tmp/sqldump/*.sql | mysql -u username -pPASSWORD username;'

剩下的就是寫 crontab 了