由于我安装的mysql5.7是最新的版本,而一些老的xtrabackup版本已经不兼容,所以在这里我下载最新的xtrabackup工具
注:我这里没有应用全备和整备,而是用了部分备份,即一个数据库的备份和恢复
注 这是远程备份,备份到指定服务器
环境: centos7
mysql 5.7
xtrabackup 2.4.9
远程连接主机免密码登录 ,
在运行服务器上执行 ssh-keygen
一路回车,还是不要添加密码的好,这时候可以注意一下公钥,秘钥保存位置
把公钥放到备份的服务器上 ssh-copy-id [email protected]
(注意:这两台linux必须能ping通)
一 .安装最新版的xtrabackup
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/tarball/percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz
tar zxvf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz
cd percona-xtrabackup-2.4.9-Linux-x86_64
cp bin/innobackupex /usr/bin
cp bin/xtrabackup* /usr/bin
yum install perl-DBI -y
yum install perl-DBD-MySQL -y
yum install perl-Time-HiRes -y
yum install perl-IO-Socket-SSL –y
yum install perl-TermReadKey.x86_64 –y
yum install -y perl-Digest-MD5
wget https://www.percona.com/downloads/percona-toolkit/2.2.16/RPM/percona-toolkit-2.2.16-1.noarch.rpm
rpm -ivh percona-toolkit-2.2.16-1.noarch.rpm
安装测试是否成功 xtrabackup -version
二.在运行服务器上.创建shell脚本,存放备份数据库相关内容
cd /home
vim mysql_data.sh
添加如下内容:
# vim mysql_xtr.sh
#!/bin/sh
INNOBACKUPEX_PATH=innobackupex #INNOBACKUPEX的命令
INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX_PATH #INNOBACKUPEX的命令路径,自己查找
MY_CNF=/etc/my.cnf #mysql的配置文件,自己查找
MYSQL=/usr/bin/mysql
BACKUP_DIR=/home/longrang # 备份的主目录
DB_NAME=database #要备份的数据库名字
DB_USER=root #数据库登录名
DB_PASS=root #数据库登陆密码
DAYS=5 #每次备份保存的时间
# logfiledate=backup.`date +%Y%m%d%H%M`.txt 日志文件
DATE=`date +%Y%m%d%H%M` #当前时间
TAR_SQL="mysqldata_bak_$DATE.tar.gz"
Host=192.168.1.1 #远程备份主机地址
User=root #远程备份主机用户
# 检查执行环境
if [ ! -x $INNOBACKUPEXFULL ]; then
error "$INNOBACKUPEXFULL未安装或未链接到/usr/bin."
fi
$INNOBACKUPEXFULL --defaults-file=$MY_CNF --user=$DB_USER --password=$DB_PASS --databases=$DB_NAME --stream=tar /. | ssh $User@$Host \ "gzip >$BACKUP_DIR/$TAR_SQL"
3.将脚本文件设置成可执行文件类型
chmod +x /home/mysql_xtr.sh
可测试脚本是否能运行,两种方法:
1. cd /home
./mysql_xtr.sh
2. bash –x /home/mysql_xtr.sh
4.添加计划任务(每天一点三十备份)
crontab -e
30 1 * * * /home/mysql_xtr.sh
5.重启定时服务
service crond restart
三 在备份服务器上
1.在备份服务器上创建备份目录 (此测试生成目录放在home下)
cd /home
mkdir longrang 注:此路径必须和上面脚本中的备份路径一致
2.在home目录下创建删除五天外的备份文件脚本
vim dele.sh
添加如下内容:
DAYS=5
BACKUP_DIR=/home/longrang #(这个文件和上面备份的文件一致)
#删除过期的文件
find $BACKUP_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \; #删>除5天前的备份文件(注意:{} \;中间有空格)
3. 将脚本文件设置成可执行文件类型:
chmod +x /home/dele.sh
4. 检测是否已安装crontab
执行 crontab -e 命令如果报 command not found,就表明没有安装.
安装命令 # yum install -y vixie-cron
5.添加计划任务 (每天一点三十执行)
crontab -e
30 1 * * * /home/dele.sh
6.重启定时任务
service crond restart
四 xtrabackup 部分备份恢复
在备份主机上操作
1.先解压缩(必须带i命令)到指定文件夹
tar ixvf xtra.tar -C /home/longlong
2.准备部分备份
innobackupex --apply-log --export /home/longlong
3.恢复部分备份
1. 停止MySQL:service mysqld stop
2. 将第二步准备过的文件拷贝到/var/lib/mysql下:\cp /home/longlong/* /var/lib/mysql -rf
3. 给文件赋权:chown -R mysql:mysql /var/lib/mysql/
4 启动MySQL:service mysqld start
测试一下,你就知道.