innobackex備份數據庫

使用innobackex來備份數據庫, 由於xtrbackup只能用於備份innodb引擎的數據庫,而innobackex 既能夠備份innodb引擎的數據庫,也能夠備份myisam引擎的數據庫。備份時也可分爲全量備份和增量備份html

一 innobackex 的安裝

1 安裝依賴包

yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

2 安裝 xtrbackup
下載地址  https://www.percona.com/downloads/XtraBackup/LATEST/

cd /usr/local/src
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

二 全量備份

1 建立並受權備份用戶用戶
mysql -uroot -p123456
grant reload,process,lock tables,replication client on *.* to 'backupuser'@'localhost' identified by '123456';
flush privileges;

查詢
show grants for backupuser@localhost

2 建立備份保存目錄
mkdir /data/backup

3  全量備份mysql
#備份完成後,會在指定的保存目錄中生成一個時間戳目錄,該時間戳目錄名稱也是恢復時的apply-log
innobackupex  --defaults-file=/etc/my.cnf   --user=backupuser --password='123456' -S /tmp/mysql.sock  /data/backup

4 其餘用法

其餘參數
--safe-slave-backup     若是是主從架構 從始終用這個參數備份
--no-timestamp         默認新建一個以時間戳命名的備份目錄,--no-timestamp會跳過此功能
--slave-info       若是是主從架構, 從用這個參數備份

在備份從庫時,能夠使用該參數, 加上--slave-info備份目錄下會多生成一個xtrabackup_slave_info 文件, 這裏會保存主日誌文件以及偏移, 文件內容相似於:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0。
這個參數適用的場景:假設如今有主庫A和從庫B,目前想再添加一臺備庫C,並讓備庫C以主庫A爲master;由於主庫A是生產庫,壓力通常比較大,因此咱們就在備庫B上備份一個數據庫,而後把這個備份拿到C服務器上 並導入到C庫,接下來再在C服務器上執行change master的命令:其中 master_host是A的ip,而master_log_file和master_log_pos就是這個xtrabackup_slave_info裏面的值
--parallel   此參數用於開啓多個子進程併發備份多個數據文件(注意,一個數據文件只會有一個進程完成備份)。能夠加快備份速度。可是在服務器資源不足時,謹慎使用。 如--parallel=4


解壓tar    
tar -xizf    xxxx.tar.gz     //注意這裏要求加上-i參數

解壓xbstream
xbstream -x <   xbstream文件 -C  要解壓的目錄 
例: xbstream -x < 1.xbstream  -C /root

備份到遠程 
https://www.cnblogs.com/hllnj2008/p/5207066.html
# innobackupex --stream=tar /tmp | ssh root@192.168.1.7 \ "cat - > /backup/bak.tar" ###非壓縮方式
# innobackupex --stream=tar /tmp | ssh root@192.168.1.7 \ "gzip >/backup/bak.tar.gz" ###壓縮方式
例:
sudo /bin/innobackupex  --defaults-file=/etc/my.cnf  --user=backupuser  --password=123456   -S /tmp/mysql.sock   --parallel=4  --safe-slave-backup --stream=tar  /data/backup/full/ | ssh -p 222  denis@192.168.192.20 \ "gzip - > 123/backup.tar.gz"


三 全量備份恢復測試
模擬故障, mysql的數據損毀, 以前已經有全量備份

1 中止mysql服務 不容許mysql進程存在

/etc/init.d/mysqld stop
ps aux |grep "mysqld"



2 刪除mysql原有數據

mv /data/mysql /data/mysql.bak
mkdir /data/mysql


3 恢復mysql

初始化
# –use-memory=512M指定備份時使用的內存爲512M,默認爲100M, 注意單位。默認爲字節
innobackupex --use-memory=512M --apply-log /全量備份時間戳目錄/



恢復mysql , 設置權限
#使用–copy-back參數恢復
innobackupex --defaults-file=/etc/my.cnf --copy-back /全量備份時間戳目錄/
chown -R mysql:mysql /data/mysql


啓動mysql , 查看數據是否恢復成功
/etc/init.d/mysqld start
ps aux |grep "mysqld"
相關文章
相關標籤/搜索