logo
关于我们

技术分享

技术分享 xtrabackup单表备份与恢复

xtrabackup单表备份与恢复

2021-06-08


yum install percona-xtrabackup; [epel]

备份:innobackupex [option] BACKUP-ROOT-DIR

选项说明

--user;该选项表示备份账号
--password;该选项表示备份的密码
--host;该选项表示备份数据库的地址
--databases;该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test", \
同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表
--defaults-file;该选项指定从哪个文件读取MySQL配置,必须放在命令行第一个选项位置
--incremental;该选项表示创建一个增量备份,需要指定--incremental-basedir
--incremental-basedir;该选项指定为前一次全备份或增量备份的目录,与--incremental同时使用
--incremental-dir;该选项表示还原时增量备份的目录
--include=name;指定表名,格式:databasename.tablename

Prepare:innobackupex --apply-log [option] BACKUP-DIR

--apply-log;一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务. \
因此,此时数据文件仍处理不一致状态。此选项作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
--use-memory;该选项表示和--apply-log选项一起使用,prepare 备份的时候,xtrabackup做crash recovery分配的内存大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G
--export;表示开启可导出单独的表之后再导入其他Mysql中
--redo-only;此选项在prepare base full backup,往其中merge增量备份时候使用

还原:innobackupex --copy-back [选项] BACKUP-DIR

选项说明:
--copy-back;做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir
--move-back;这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心. \
使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本

还原注意事项:
1.datadir目录必须为空。除非指定innobackupex --force-non-empty-directorires选项指定,否则--copy-backup选项不会覆盖
2.在restore之前,必须shutdown MySQL实例,不能将一个运行中的实例restore到datadir目录中
3.由于文件属性会被保留,大部分情况下需要在启动实例之前将文件的属主改为mysql,这些文件将属于创建备份的用户 chown -R mysql:mysql /data/mysql \
以上需要在用户调用innobackupex之前完成--force-non-empty-directories:指定该参数时候,使得innobackupex --copy-back或--move-back选项转移文件到非空目录, \
已存在的文件不会被覆盖。如果--copy-back和--move-back文件需要从备份目录拷贝一个在datadir已经存在的文件,会报错失败

注意:单表导出和导入对版本有要求

~ ]# mysql --version
mysql Ver 15.1 Distrib 10.2.15-MariaDB, for Linux (x86_64) using readline 5.1

1.修改配置文件,启动服务导入测试数据库
sed -i '/\[mysqld\]/a\innodb_file_per_table' /etc/my.cnf
systemctl restart mairadb
msyql < hellodb_innodb.sql

2.备份表和表结构[建议备份到远程主机]
mkdir /backup
innobackupex --include="hellodb.students" /backup/
mysql -e 'show create table hellodb.students' > students.sql;/*备份表结构*/

3.删除表,模拟数据文件损坏
mysql -e 'drop table hellodb.students'
mysql -e 'select * from hellodb.students'

4.创建表文件
vi ./students.sql;/*删除注释信息*/
mysql hellodb < students.sql;
innobackupex --apply-log --export /backup/2018-06-14_15-17-43/;/*整数数据库导出操作,完成后数据库目录下会多出".cfg,.exp"2个文件*/

5.删除创建表文件所产生"students.ibd"表空间文件
~]# ls /data/mysql/hellodb/students.*
/data/mysql/hellodb/students.frm /data/mysql/hellodb/students.ibd
mysql -e 'alter table hellodb.students discard tablespace';/*删除表空间文件[存放用户数据]*/

6.拷贝表数据
cp /backup/2018-06-14_15-17-43/hellodb/students.{cfg,exp,ibd} /data/mysql/hellodb/
chown -R mysql. /data/mysql/hellodb
mysql -e 'alter table hellodb.students import tablespace';/*还原表空间文件*/

 

云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆
  • 标签:
  • 云计算

您可能感兴趣的新闻 换一批

现在下载,可享30天免费试用

立即下载