MySQL 的 InnoDB 只能用 mysqldump,而沒辦法使用 cp 來備份,這點可以使用 Percona 出的 innobackupex 來解決~
Percona 出很多 MySQL 的工具,可以做同步、快速備份 等等 ..
使用 Percona innobackupex 備份 MySQL
以下已經假設安裝好 Percona,所以直接安裝 xtrabackup 的套件。
- apt-get install percona-xtrabackup
innobackupex 備份會將 DB 全部複製下來 (含 MyISAM、InnoDB.. 等等),innobackupex 會需要兩個步驟:
- 先將目前的複製起來
- sync 到目前最新的 Log 紀錄
innobackupex 備份命令 (backup)
- innobackupex --user=root --password=backup /home/user/2017-01-01 # 會產生 /home/user/2017-01-01/$TIMESTAMP/ 的目錄
- innobackupex --user=root --password=backup --apply-log /home/user/2017-01-01/$TIMESTAMP/ # 若記憶體不想吃太兇,可以使用此參數限制 --use-memory=4G
- 註:以上 $TIMESTAMP 按 Tab 就會直接帶入
- /home/user/2017-01-01/$TIMESTAMP/ # 這裡面已經是備份好的資料
- scp -R /home/user/2017-01-01/$TIMESTAMP/ backup_server: # 整個目錄可以直接複製即可
innobackupex 還原命令 (restore)
- innobackupex --copy-back /home/user/2017-01-01/$TIMESTAMP/
- chown -R mysql:mysql /var/lib/mysql
- cat /var/lib/mysql/xtrabackupbinloginfo # 這邊會有要做 replcation 所需要的資料