當MySQL數據量很小時,我們可以使用mysqldump來備份,無論是myisam引擎還是innodb引擎都是沒有問題的。
但數據量很大,比如上百GB甚至上TB時,再使用mysqldump備份就會很雞肋了,試想光備份一次全量備份要耗費10幾個小時,那就別幹別的了。因爲,畢竟mysqldump時是會鎖表的。
還好我們有xtrabakcup這個工具來備份量級比較大的數據,上百G的數據,僅僅幾十分鐘搞定,這主要取決於磁盤的I/O效率。不過xtrabackp默認只支持備份innodb,而myisam引擎的數據就不友好了。
不過,沒有關係,我們還有一個xtrabackup的變種工具–innobackupex,它不管是innodb還是myisam都通喫。 下面是innobackup工具的安裝以及使用方法。
1 安裝官方的yum源
rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
2 安裝innobackupex包
yum install percona-xtrabackup
3 授權一個專門用來備份的用戶
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bakuser'@'localhost' identified by 'yourpassword';
4 全量備份
innobackupex --defaults-file=/etc/my.cnf --user=bakuser --password='yourpassword' /bakdir/
說明:defaults-file指定配置文件,它需要通過配置文件來獲取一些mysql服務的信息,比如datadir在哪裏。user和password就是剛剛授權的用戶和密碼,最後面的/bakdir爲備份數據存放目錄。
備份完成後,會在/bakdir生成一個以年月日時間爲命名的目錄,這個裏面就是備份的數據。假如備份的目錄爲2017-06-07_17-26-39
5 數據恢復
innobackupex --use-memory=2G --apply-log 2017-06-07_17-26-39
innobackupex --defaults-file=/etc/my.cnf --use-memory=2G --copy-back /bakdir/2017-06-07_17-26-39/
說明:第一步爲恢復前的準備工作,這一步不做是沒法恢復的。第二步執行之前,需要把mysqld服務關閉,而且datadir要清空。
參考鏈接 :
innobackupex備份和恢復MySQL數據 : https://mp.weixin.qq.com/s/ch3NGfCtECvtI-GW6Q8_6Q