XtraBackup基本安装及innobackupex使用方法,远程备份
#获得下载地址
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/redhat/6/x86_64/percona-xtrabackup-2.3.3-1.el6.x86_64.rpm
yum install percona-xtrabackup-2.3.3-1.el6.x86_64.rpm
#完全备份
innobackupex --user=root --password=123456 /db_bak
#恢复,已复制整个结构的方式恢复数据库,执行前必须stop
mysql服务,否则会出现不可预知的错误
service mysqld stop
#此时恢复还是会报 /var/lib/mysql/ is not empty,需要删掉/var/lib/mysql/目录下所有的文件
cd /var/lib/mysql/
rm -rf /var/lib/mysql/*
#全量恢复
innobackupex --user=root --password=123456 --apply-log /db_bak/2016-01-13_14-21-24/ ---回写日志这一步 不能少
innobackupex --user=root --password=123456 --copy-back /db_bak/2016-01-13_14-21-24/
#设置权限,恢复之后 发现权限都是root,需要修改成mysql,到了这一步全量还原算是完成了,记得重启服务
chown -R mysql:mysql /var/lib/mysql/
service mysqld start
#增量备份
innobackupex --user=root --password=123456 --incremental-basedir=/db_bak/2016-01-13_14-21-24 --incremental /db_bak
#增量备份恢复:
#将所有的增量备份挨个应用到完整备份的数据文件中,然后再将完整备份中的数据恢复到数据库中
#停止mysql服务(必须)
service mysqld stop
#删除数据文件
cd /var/lib/mysql/
rm -rf /var/lib/mysql/*
#重做全备份的日志
innobackupex --apply-log --redo-only /db_bak/2016-01-13_14-21-24/
#应用第一个增量备份
innobackupex --user=root --password=123456 --apply-log /db_bak/2016-01-13_14-21-24/ --incremental-dir=/db_bak/2016-01-14_11-47-00/
#日志已经写入全备份中,重做全备份即可
innobackupex --user=root --password=123456 --apply-log /db_bak/2016-01-13_14-21-24/ ---回写日志这一步 不能少
innobackupex --user=root --password=123456 --copy-back /db_bak/2016-01-13_14-21-24/
#删除mysql日志,这一步步能少
MySQL目录下的ib_logfile0和ib_logfile1两个文件
cd /var/lib/mysql/
cp ib_logfile0 ib_logfile0_bak
cp ib_logfile1 ib_logfile1_bak
rm -rf ib_logfile0
rm -rf ib_logfile1
#设置权限,恢复之后 发现权限都是root,需要修改成mysql,到了这一步全量还原算是完成了,记得重启服务
chown -R mysql:mysql /var/lib/mysql/
service mysqld start
#出现数据崩溃 或者 如copied innodb but log 不符的情况
需要设置
innodb_force_recovery=6
innodb_purge_thread=0
重启服务,
然后 在mysqldump导出数据库逻辑备份
在将 设置改成默认
innodb_force_recovery=0
innodb_purge_thread=1
重启服务 还原数据库即可,
出现MySQL Plugin 'InnoDB' init function returned error.
删除MySQL目录下的ib_logfile0和ib_logfile1两个文件,就可以解决问题了
mysql 会重新生成这两个日志
#远程备份,备份到
10.50.85.104,需要安装sshpass
cd /etc/yum.repos.d
wget http://download.opensuse.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo
yum install sshpass
#压缩
innobackupex --user=root --password=123456 --stream=tar ./ | gzip | sshpass -p 'WCcj1Fylr5Hc!@' ssh root@10.50.85.104 "cat - > /var/db_bak/backup.tar.gz"
#备份mysiam表
myisam表的备份则是通过发出命令flush tables with read lock,然后拷贝myisam的相关表文件
所以此时 只能进行读 不能进行任何写操作 这里指针对所有库