mysql的备份和恢复有多种方式,本文章只记录基于xtrabackup的备份,也是目前mysql备份工具中使用最广泛的备份工具。
一、备份:
1):正常情况下,我们可以对单表进行备份,在进行恢复。这种方式除了测试以外,也可以将表的数据库迁移到测试库中。
单表备份:
备份表--解压文件--恢复表
[root~]#innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --include='wl.suborder' --stream=tar /data/backup > /data/backup/suborder.tar.gz
将备份放到目标服务器上进行解压
[root~]#tar -ixf suborder.tar.gz -C /data/databak/
2)、如果是全备,需要--apply-log --export 将全备进行export恢复,只需从中找到需要恢复表的ibd和cfg文件即可
恢复备份文件,这里需要注意的--export参数,改参数支持导出单个表以导入到另一个服务。
--export This option is passed directly to xtrabackup's --export
option. It enables exporting individual tables for import
into another server. See the xtrabackup documentation for
details.
[root ~]#ll /data/databak/se/suborder*
-rw-rw---- 1 root root 2097152 9月 13 13:40 suborder.ibd
-rw-r--r-- 1 root root 3382 9月 13 13:57 suborder.cfg
-rw-r--r-- 1 root root 16384 9月 13 13:57 suborder.exp
-rw-rw---- 1 root root 23968 9月 13 13:40 suborder.frm
定义表--删除表空间--拷贝*.ibd/*.cfg文件--导入表空间
mysql > create table wl.suborder*****************************;
mysql > ALTER TABLE wl.suborder DISCARD TABLESPACE;
[root@simlinux ~]#cp /data/databak/se/{suborder.ibd,suborder.cfg} /usr/local/mysql/data/se/
[root@simlinux ~]#chown mysql.mysql /usr/local/mysql/data/wl/
mysql > ALTER TABLE wl.suborder IMPORT TABLESPACE;
注:
MySQL 使用 .cfg 文件以指定的格式存储 InnoDB 字典。这个格式与目的相同存储了 XtraDB 字典的 .exp 不同。严格来讲,一个 .cfg 文件在导入表空间到 MySQL 5.6 或者 Percona Server 5.6 的时候并不是必须的。一个表空间即便是来自另一个实例,也能够被成功导入,但 InnoDB 存储引擎会检验 schema 看对应的 .cfg 文件是否存在于同一目录下。每个 .exp 或者 .cfg 文件在导入相应的表的时候用到。
.cfg文件包含InnoDB字典的特殊存储格式;如果目的库是XtraDB,需要拷贝searchaccount.ibd、searchaccount.exp