1. 程式人生 > 資料庫 >【MySQL Database】Percona XtraBackup備份

【MySQL Database】Percona XtraBackup備份

使用官方Yum Repository安裝Percona XtraBackup
[root@wallet01 ~]# wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@wallet01 ~]# rpm -ivh percona-release-latest.noarch.rpm
[root@wallet01 ~]# yum install -y percona-xtrabackup-24

建立使用者,授予必要的許可權
[root@wallet01 ~]# mysql -uroot -pabcd.1234
mysql> create user xtrabackup@'localhost' identified by 'xtrabackup';
Query OK, 0 rows affected (0.10 sec)

mysql> grant reload,lock tables,replication client,process on *.* to xtrabackup@'localhost';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

全量備份指令碼
[mysql@wallet01 ~]$ vim full_backup.sh 
#!/bin/bash
user='xtrabackup'
passwd='xtrabackup'
backup_dir='/home/mysql/backup'
/usr/bin/xtrabackup --backup --user=$user --password=$passwd --target-dir=$backup_dir/`date '+%Y-%m-%d_%H-%M-%S'`

[mysql@wallet01 ~]$ chmod a+x full_backup.sh 

增量備份指令碼
[mysql@wallet01 ~]$ vi incr_backup.sh 
#!/bin/bash  
user='xtrabackup'
passwd='xtrabackup'
backup_dir='/home/mysql/backup'
last_day=$(date -d "1 days ago" +%Y-%m-%d)
filename=$(find $backup_dir -name "$last_day*" -print|awk -F / '{print $NF}')
/usr/bin/xtrabackup --backup --user=$user --password=$passwd --incremental-basedir=$backup_dir/$filename 
--target-dir=$backup_dir/`date '+%Y-%m-%d_%H-%M-%S'`

[mysql@wallet01 ~]$ chmod a+x incr_backup.sh  

備份策略:週日全量備份,週一至週六增量備份
[mysql@wallet01 ~]$ crontab -e
00 3 * * 0 /home/mysql/full_backup.sh>/home/mysql/backup/full_backup.log 2>&1
00 3 * * 1-6 /home/mysql/incr_backup.sh>/home/mysql/backup/incr_backup.log 2>&1

保留最近兩週的備份檔案
[mysql@wallet01 ~]$ find /home/mysql/backup/ -type d -mtime +14 -exec rm -rf {} \;