Percona XtraBackup - 将数据库备份恢复到包含其他数据库的 MySQL 服务器

Percona XtraBackup - restoring a database backup into a MySQL server containing other databases

我正在尝试使用 Percona XtraBackup (15 Gb) 迁移大型 MySQL 数据库。

恢复备份的默认 innobackupex 命令需要移动或删除 mysql datadir (/var/lib/mysql) :

mkdir /tmp/mysql
cd /var/lib/mysql/; mv * /tmp/mysql/
innobackupex --user=user --password=password --copy-back /data/backups/new_backup

目标 MySQL 服务器已包含多个数据库。有没有办法将数据库与现有数据库一起还原(不会有架构名称冲突)?

TIA

不,恐怕没有办法做您想做的事。

对于这种大小的数据库,您可以使用 mysqldump,然后将数据恢复到您想要的位置 https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

这里有一篇您可能会觉得有用的文章。它描述了如何将数据拆分为多个 csv 文件,这比使用 mysqldump 转储和恢复 to/from 一个 SQL 文件更快,尤其是当您可以选择使用多线程时。

https://www.percona.com/blog/2018/02/22/restore-mysql-logical-backup-maximum-speed/

与往常一样,在移动或更改数据时,请务必在对实时数据使用这些技术之前进行测试。

希望这对您有所帮助。

确实可以使用 innobackup/xtrabackup 将数据库还原到 运行 MySQL 服务器。

不要使用 --copy-back,而是使用 --exportimport each tablespace one at a time。这很容易编写脚本。

xtrabackup --export 将创建 .exp、.ibd 和 .cfg 文件。