innobackupex备份指定的部分数据库和表

innobackupex备份指定的部分数据库和表

2023年7月30日发(作者:)

innobackupex备份指定的部分数据库和表

原官⽅⽂档没有如何恢复的⽅法,恢复部分是我⾃⼰加的。 -----------------------------------------------------------这是⼀条分割线-----------------------------------------------------------Percona XtraBackup的功能之⼀“部分备份(partial backups)”,即让⽤户可以备份指定的表或数据库。要注意的是:你希望备份的表必须是在独⽴的表空间中,即该表在创建以前,你的MySQL开启了innodb_file_per_table设置。 还⼀点要注意的是:不要将preparedbackup备份的东西拷贝回去。部分备份使⽤的是导⼊表(importing the tables),⽽不是全库备份的--copy-back参数。尽管有时简单的拷贝备份⽂件可以成功,但是这种⽅法很容易导致数据库的不⼀致,因此不推荐⼤家这么做。创建部分备份(Creating Partial Backups) 部分备份共有三种⽅式,分别是:1. ⽤正则表达式表⽰要备份的库名及表名(参数为--include);2. 将要备份的表名或库名都写在⼀个⽂本⽂件中(参数为--tables-file)以及 3. 将要备份表名或库名完整的写在命令⾏中(参数为:--databases)。(译者注:不管你备份哪个库或是哪张表,强烈推荐把mysql库也⼀起备份,恢复的时候要⽤。)⽅式⼀:使⽤--include参数 这种⽅式通过正则表达式来匹配数据库名和表名,你需要写完整的数据库名及表名,如果数据库有⽤户名密码请使⽤--user和--password指定相关信息。,格式如下:ame。下⾯是⼀个例⼦:$ innobackupex --include='^mydatabase[.]mytable' /path/to/backup --user=backup --password=backup

上⾯的⽅式会和其他使⽤innobackupex命令的备份⽅式⼀样,创建⼀个时间戳命名的⽂件夹,不同的是,最终只包括那些正则表达式匹配的表。 要注意的是,这个命令最后会传给xtrabackup --tables命令执⾏,并且会为每个数据库(包括不需要备份的数据库)创建⼀个对应的⽂件夹。⽅式⼆:使⽤--tables-file参数 这种⽅式是将所有要备份的完整表名都写在⼀个⽂本⽂件中,每⾏⼀个完整表名,然后程序读取这个⽂本⽂件进⾏备份。完整表名即:ame。如果数据库有⽤户名密码请使⽤--user和--password指定相关信息。下⾯是⼀个例⼦:$ echo "e" > /tmp/

$ innobackupex --tables-file=/tmp/ /path/to/backup --user=backup --password=backup

上⾯的⽅式会和其他使⽤innobackupex命令的备份⽅式⼀样,创建⼀个时间戳命名的⽂件夹,不同的是,最终只包括那些⽂件中指定的表名。 这个命令最后会传给xtrabackup --tables-file命令执⾏,⽽不是--tables,因此这个命令只会创建那些需要备份的数据库⽂件夹。⽅式三:使⽤--databases参数 使⽤这种⽅式,⽤户既可以将所有要备份的数据库名和完整表名都写在⼀起,以空格分隔,也可以将数据库名、完整表名写在⼀个⽂件中,每⾏⼀个,如果数据库有⽤户名密码请使⽤--user和--password指定相关信息。下⾯是⼀个例⼦。$ innobackupex --databases="e mysql" /path/to/backup --user=backup --password=backup

上⾯的⽅式会和其他使⽤innobackupex命令的备份⽅式⼀样,创建⼀个时间戳命名的⽂件夹,最终结果将包括mydatabase数据库中的mytable表,以及整个完整的mysql数据库。 准备部分备份(Preparing Partial Backups) 执⾏preparing partial backups,与恢复独⽴的表(Restoring Individual Tables)很类似:使⽤--apply-log和--export参数,并包含上⼀步⽣成的时间戳⽂件夹,如下:$ innobackupex --apply-log --export /path/to/backup/2015-11-09_16-33-58

执⾏命令的时候,对于那些不需要备份的表,会出现表不存在的提⽰。不⽤担⼼,这是正常现象。下⾯是可能出现的错误提⽰:111225 0:54:06 InnoDB: Error: table 'mydatabase/mytablenotincludedinpartialb'

InnoDB: in InnoDB data dictionary has tablespace id 6,

InnoDB: but tablespace with that id or name does not exist. It will be removed from data dictionary.

同时,你还会看到系统⽣成对要备份的表创建导出⽂件的提⽰,信息如下:xtrabackup: export option is specified.

xtrabackup: export metadata of table 'employees/departments' to file `.//` (2 indexes)

xtrabackup: name=PRIMARY, =80, page=3

xtrabackup: name=dept_name, =81, page=4

注意,你能够对已经执⾏过准备备份(already-prepared backup)的⽂件执⾏带有--export和--apply-log参数的命令,来⽣成.exp⽂件。 最终,记得观察下⾯的输出,已确定准备备份⼯作结束。111225 00:54:18 innobackupex: completed OK!

恢复部分被备份(Restoring Partial Backups)1. 停⽌MySQL:service mysql stop2. 将/var/lib/mysql下⾯的所有⽂件全部删除:rm /var/lib/mysql/* -rf(如果前⾯没有备份mysql数据库, 那么在删除数据⽂件后要重建mysql系统表,重建命令是sudo mysql_install_db --user=mysql,但重建会导致原有⽤户信息全部丢失)3. 将第⼆步准备过的⽂件拷贝到/var/lib/mysql下:cp /usr/local/backup/2015-11-09_16-33-58/* /var/lib/mysql -rf4. 给⽂件赋权:chown -R mysql:mysql /var/lib/mysql/5. 启动MySQL:service mysql start

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690655143a387649.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信