考虑一下您有两个MariaDB实例(也许在不同的物理服务器上)的情况,每个实例具有不同的data_dir。
第一个实例具有DATA_DIR1,其中包含InnoDB数据库DB1和DB2的文件夹
第二个实例具有DATA_DIR2,其中包含InnoDB数据库DB3和DB4的文件夹
假设您要将DB2从第一个实例移动到第二个实例。
如何在实例之间安全地复制文件(即,不执行mysqldump,这对于大型数据库而言太慢了)。或者,可以选择使用mariabackup部分备份,因为那不会像mysqldump一样慢。
尤其是要正确指示第一个实例不再看到DB2,并正确指示第二个实例现在应该识别已放置在DATA_DIR2中的DB2副本,需要做什么? / p>
答案 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)
否无法复制文件,至少不能原样复制。
查看“可移动表空间”(如果您的版本中可用)。这样就可以准备将文件复制。