写了一个全库备份+基于全备的增备脚本(不基于增备做增备)。
#!/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的数据库信息一致。包括密码等。
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3680.html