使用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"