mysql备份恢复 增量-部分库恢复 脚本

#将percona工具上传至/mysql/app中
cd /mysql/app/
tar -xzvf percona-xtrabackup-2.4.6-Linux-x86_64.tar.gz
echo "PATH=$PATH:/mysql/app/percona-xtrabackup-2.4.6-Linux-x86_64/bin">>~/.bash_profile
source ~/.bash_profile
#开启binlog日志
mkdir -p /mysql/log/3306/binlog
chown -R mysql:mysql /mysql/log/3306/binlog
chmod -R 775 /mysql/log/3306/binlog/
echo "###################log setting##############">>/mysql/data/3306/my.cnf
echo "log_bin=/mysql/log/3306/binlog/itpuxdb-binlog">>/mysql/data/3306/my.cnf
echo "log_bin_index=/mysql/log/3306/binlog/itpuxdb-binlog.index">>/mysql/data/3306/my.cnf
echo "binlog_format='ROW'">>/mysql/data/3306/my.cnf
echo "binlog_rows_query_log_events=on">>/mysql/data/3306/my.cnf

/mysql/app/mysql/bin/mysqld_safe --defaults-file=/mysql/data/3306/my.cnf --user=mysql &


mysql -uroot -proot -S /mysql/data/3306/mysql.sock
create user 'backup'@'localhost' identified by 'backup';
grant reload, lock tables, process, replication client on *.* to 'backup'@'localhost';
flush privileges;
exit;

#1.备份部分库
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=backup --password=backup --no-timestamp  /mysql/backup/fullback08011  --databases="itpux"  --parallel=2

#2.业务操作 增量操作
mysql -uroot -proot -S /mysql/data/3306/mysql.sock
use itpux;
create table itpuxtdsy(id int,name varchar(40));
insert into itpuxtdsy values(1,'data01'),(2,'data02'),(3,'data03'),(4,'data04'),(5,'data05');
commit;
select * from itpuxtdsy;
exit;
#3.增量备份1
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=backup --password=backup --no-timestamp --incremental  /mysql/backup/incback01 --incremental-basedir=/mysql/backup/fullback08011   --databases="itpux" --parallel=2
(依赖全备)

#4.业务操作2
mysql -uroot -proot -S /mysql/data/3306/mysql.sock
use itpux;
create table itpuxtdsy2(id int,name varchar(40));
insert into itpuxtdsy2 values(6,'data06'),(7,'data07'),(8,'data08'),(9,'data09'),(10,'data10');
commit;
select * from itpuxtdsy2;
exit;
#5.增量备份2
innobackupex --defaults-file=/mysql/data/3306/my.cnf --user=backup --password=backup --no-timestamp --incremental /mysql/backup/incback02 --incremental-basedir=/mysql/backup/incback01   --databases="itpux" --parallel=2
(增量依赖上一个增量备份)

#6.增量恢复(prepare阶段)
步骤1:准备恢复完全备份first(--apply-log-only:--apply-log --redo-only)
innobackupex --apply-log --redo-only /mysql/backup/fullback08011


#步骤2:恢复增量到完全备份
#增量1恢复
innobackupex --apply-log --redo-only /mysql/backup/fullback08011  --incremental-dir=/mysql/backup/incback01
#(将incback01恢复到fullback0512中去)
#增量2恢复(最后一次不加--redo-only):
innobackupex --apply-log /mysql/backup/fullback08011 --incremental-dir=/mysql/backup/incback02
#(将incback02恢复到fullback0512中)
#步骤3:准备完全备份恢复第二次 合并  回滚未提交的数据 数据达到一致性(--apply-log 最后一次不加 --redo-only)
innobackupex --apply-log /mysql/backup/fullback08011

#7.停止数据库 模拟删除数据库目录
service mysql stop

mkdir -p /mysql/data/3306/tempbak
#--恢复失败 还可以把原来的目录恢复起来
cp -r /mysql/data/3306/data/itpux /mysql/data/3306/tempbak/
rm -rf /mysql/data/3306/data/itpux

#--3.copy阶段 部分备份和恢复 不能直接用--copy-back  只能手工复制相应的数据库+ibdata数据字典
cp -r /mysql/backup/fullback08011/itpux /mysql/data/3306/data/
cp -r /mysql/data/3306/data/ibdata* /mysql/data/3306/tempbak/
rm -f /mysql/data/3306/data/ibdata*
cp -r /mysql/backup/fullback08011/ibdata* /mysql/data/3306/data/
#4.改权限 启动数据库 验证数据是否恢复
chown -R mysql:mysql /mysql/data/3306/data/itpux
chown -R mysql:mysql /mysql/data/3306/data/ibdata*
cd /mysql/data/3306
./mysql.start
mysql -uroot -proot -S /mysql/data/3306/mysql.sock
use itpux;
select * from itpux.itpuxtdsy;
select * from itpux.itpuxtdsy2;
exit;

猜你喜欢

转载自blog.csdn.net/ichglauben/article/details/81334545