如何在实例之间安全地移动MariaDB数据库目录

时间:2018-07-06 17:08:32

标签: mariadb

考虑一下您有两个MariaDB实例(也许在不同的物理服务器上)的情况,每个实例具有不同的data_dir。

第一个实例具有DATA_DIR1,其中包含InnoDB数据库DB1和DB2的文件夹

第二个实例具有DATA_DIR2,其中包含InnoDB数据库DB3和DB4的文件夹

假设您要将DB2从第一个实例移动到第二个实例。

如何在实例之间安全地复制文件(即,不执行mysqldump,这对于大型数据库而言太慢了)。或者,可以选择使用mariabackup部分备份,因为那不会像mysqldump一样慢。

尤其是要正确指示第一个实例不再看到DB2,并正确指示第二个实例现在应该识别已放置在DATA_DIR2中的DB2副本,需要做什么? / p>

2 个答案:

答案 0 :(得分:1)

在第一个实例上,键入SHOW CREATE DATABASE DB2。对于DB2内部的每个表,输入SHOW CREATE TABLE <TABLE_NAME>

使用这些命令的输出在第二个数据库实例内重新创建数据库和(空)表。

在第二个实例上,对于DB2数据库中的每个表,键入ALTER TABLE <TABLE_NAME> DISCARD TABLESPACE;

首先,对于DB2中的每个表,输入FLUSH TABLES <TABLE_NAME>,<TABLE_NAME>,... FOR EXPORT;

将文件从第一个实例的DB2目录复制到第二个实例的DB2目录。

在第一个实例上,键入UNLOCK TABLES

在第二个实例上,对于数据库中的每个表,键入ALTER TABLE <TABLE_NAME> IMPORT TABLESPACE;

来源:https://dev.mysql.com/doc/refman/8.0/en/innodb-transportable-tablespace-internals.html

答案 1 :(得分:0)

无法复制文件,至少不能原样复制。

查看“可移动表空间”(如果您的版本中可用)。这样就可以准备将​​文件复制。