- 数据备份与恢复
常用的 MySQL 备份工具 的缺点?
• 物理备份缺点
– 跨平台性差
– 备份时间长、冗余备份、浪费存储空间
mysqldump 备份缺点
– 效率较低,备份和还原速度慢
– 备份过程中,数据插入和更新操作会被挂起
1.1 软件介绍
• 一款强大的在线热备份工具
– 备份过程中不锁库表,适合生产环境
– 由专业组织 Percona 提供(改进 MySQL 分 支)
• 主要含两个组件
– xtrabackup : C 程序,支持 InnoDB/XtraDB
– innobackupex :以 Perl 脚本封装 xtrabacku p ,还支持 MyISAM
1.2 软件安装
[root@room9pc17 mysql]# scp percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm root@192.168.4.50:/root/
[root@room9pc17 mysql]# scp libev-4.15-1.el6.rf.x86_64.rpm root@192.168.4.50:/root/
[root@host50 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
[root@host50 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
[root@host50 ~]# innobackupex --help
[root@host50 ~]# man innobackupex
1.3 命令格式
innobackupex [选项]
1.4 常用选项
–host 主机名
–user 用户名
备份选项 --port 端口号.
–password 密码
–databases 数据库名
–no-timestamp 不用日期命名备份文件存储的子目录名
恢复数据选项 --redo-only 日志合并
–apply-log 准备恢复数据
–copy-back 拷贝数据
–incremental 目录名 增量备份
–incremental-basedir=目录名 增量备份时,
指定上一次备份数据存储的目录名
–incremental-dir=目录名 准备恢复数据时,指定增量备份数据存储的目录名
–export 导出表信息
import 导入表空间
1.5 备份命令格式
1.5.1 完全备份与恢复
- 完全备份
]# innobackupex --uesr 用户名 --password 密码 --no-timestamp /备份目录名
-完全恢复
]# innobackupex --appli-log /目录名 #准备恢复数据
]# innobackupex --copy-back /目录名 #恢复数据
1.5.2 恢复单张表的所有数据
1.5.3 增量备份与恢复
-增量备份
]# innobackupex --uesr 用户名 --password 密码 --incremental /增量目录 --incremental-basedir=/目录名 --no-timestamp
-增量恢复
]# innobackupex --apply-log --redo-only /目录名 --incremental-dir=/目录名
#准备恢复数据
]# innobackupex --copy-back /目录名 #恢复数据
-
innobackupex 完全备份与恢复
2.1 完全备份]# innobackupex --uesr root --password 123qqq...A --no-timestamp /allbak
完全恢复备份步骤:
2.1.1 停止数据库服务]# systemctl stop mysqld ]# netstat -ntlup | grep :3306
2.1.2 清除数据库目录
]# rm -rf /var/lib/mysql/*
2.1.3 准备恢复数据
]# cat /opt/allbak/xtrabackup_checkpoints ]# innobackupex --apply-log /opt/allbak
2.1.4 拷贝备份数据到数据库目录下
]# cat /opt/allbak/xtrabackup_checkpoints ]# innobackupex --copy-back /opt/allbak
2.1.5 修改所有者/所属组(mysql)
]# chown -R mysql:mysql /var/lib/mysql ]# ls -l /var/lib/mysql
2.1.6 启动服务
]# systemctl restart mysqld
2.1.7 管理员登陆查看数据
]# mysql -uroot -p123qqq...A
2.2 使用完全备份文件,恢复单张表的所有数据
恢复单张表的所有数据步骤:
2.2.1 删除表空间文件
mysql> alter table db5.b discard tablespace;
2.2.2 在备份文件里,导出表信息
]# innobackupex --apply-log --export /db5bak
2.2.3 把导出表信息文件拷贝到数据库目录下
]# cp /dbbak/db5/b.{exp,cfg,ibd} /var/lib/mysql/db5
2.2.4 修改表信息文件的所有者及所属组为(mysql)
]# ls -l /var/lib/mysql/db5/*
]# chown -R mysql:mysql /var/lib/mysql/
2.2.5 导入表空间
mysql> alter table db5.b import tablespace;
2.2.6 删除数据库目录下的表信息文件
]# rm -rf /var/lib/mysql/b.{cfg,exp}
2.2.7 查看表记录
mysql> select * from db5.b;
3 增量备份与恢复
3.1增量备份与恢复
增量备份:备份上次备份后,所有新产生的数据
增量备份:192.168.4.50
3.1.1 首次备份:备份所有数据
]# innobackupex --user root --password 123qqq...A --no-timestamp /fullbak
3.1.2 增量备份:
插入信息纪录
]# innobackupex --user root --password 123qqq...A --incremental /new1dir
--incremental-basedir=/fullbak --no-timestamp
插入信息记录
]# innobackupex --user root --password 123qqq...A --incremental /new2dir
--incremental-basedir=/new1dir --no-timestamp
[root@host50 ~]# scp -r /fullbak root@192.168.4.51:/opt/
[root@host50 ~]# scp -r /new1dir root@192.168.4.51:/opt/
[root@host50 ~]# scp -r /new2dir root@192.168.4.51:/opt/
3.2 增量恢复:192.168.4.51
3.2.1 停止服务
]# systemctl stop mysqld
3.2.2 清空数据库目录
]# rm -rf /var/lib/mysql/*
3.3.3 准备恢复数据
]# innobackupex --apply-log --redo-only /opt/fulldak
3.3.4 合并数据
]# innobackupex --apply-log --redo-only /opt/fulldak --incremental-dir=/opt/new1dir
]# innobackupex --apply-log --redo-only /opt/fulldak --incremental-dir=/opt/new2dir
3.3.5 拷贝数据到数据库目录下
]# innobackupex --copy-back /opt/fullbak
3.3.6 修改数据库目录的所有者和所属组为mysql
]# chown -R mysql:mysql /var/lib/mysql
3.3.7 启动服务
]# systemctl restart mysqld
3.3.8 查看数据
]# mysql -uroot -p123qqq...A
]# rm -rf /opt/new1dir/
]# rm -rf /opt/new2dir/