Rootop 服务器运维与web架构

innobackupex 备份脚本及恢复过程

写了一个全库备份+基于全备的增备脚本(不基于增备做增备)。

#!/bin/bash
#use crond, run at 00:00:00 (full) , per {x} min (increment)

user=root
password=root
savepath=/mnt/db_backup/$(date +%Y_%m_%d)
full_dirname=full
increment_dirname=increment_$(date +%Y_%m_%d_%H_%M_%S)
method=$1

if [ "$method" == "full" ]; then

 innobackupex --host=127.0.0.1 --user=$user --password=$password --no-lock --no-timestamp $savepath/$full_dirname

else

 if [ -d $savepath/$full_dirname ]; then

 innobackupex --host=127.0.0.1 --user=$user --password=$password --no-lock --no-timestamp --incremental-basedir=$savepath/$full_dirname --incremental $savepath/$increment_dirname
 fi

fi

exit

使用方法:
添加linux任务计划:
00 00 * * * sh /root/backup_script/backup.sh full
*/10 * * * sh /root/backup_script/backup.sh increment
保存,重启任务计划服务。

下面为恢复主机全部数据库过程:
PS:
主机用innobackupex备份全部数据库,每天一个全备+每隔x分钟基于全备做增备(不基于增备做增备)。

也可以将备份恢复到备份机器上,但强烈建议主备数据库版本一致

下面是在备用服务器上恢复(如果还在本机恢复,略过安装步骤):

安装mysql,这里直接采用编译好的二进制版本(主DB也是这样装的):

[root@m2 ~]# tar zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
[root@m2 ~]# mv mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql/
[root@m2 ~]# useradd -s /sbin/nologin mysql
[root@m2 ~]# cd /usr/local/mysql/bin/
[root@m2 bin]# ./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
[root@m2 bin]# cd ..
[root@m2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@m2 mysql]# cp support-files/my-default.cnf /etc/my.cnf
[root@m2 mysql]# chmod 755 /etc/init.d/mysqld
剩下的安装步骤不需要。

删除原有mysql所有数据,下一步从备份数据中全部恢复到从DB
[root@m2 mysql]# rm -rf /usr/local/mysql/data/*

处理备份的数据:
把之前 innobackupex 备份的数据复制到从机(全量+最后一个增量)
[root@m2 ~]# innobackupex --apply-log --redo-only /root/2017_02_21/full/
[root@m2 ~]# innobackupex --apply-log /root/2017_02_21/full/ --incremental-dir=/root/2017_02_21/increment_2017_02_21_20_24_58/
[root@m2 ~]# innobackupex --apply-log /root/2017_02_21/full/

还原:
[root@m2 ~]# innobackupex --datadir=/usr/local/mysql/data/ --copy-back /root/2017_02_21/full/

恢复权限:
[root@m2 ~]# chown -R mysql:mysql /usr/local/mysql/data/
[root@m2 ~]# service mysqld start

从备份数据中恢复到从DB以后,数据库信息完全跟主DB的数据库信息一致。包括密码等。

原创文章,转载请注明。本文链接地址: http://www.rootop.org/pages/3680.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。