1、备份原来数据库表结构,在新库中恢复表结构,必须跟原库一模一样,包括索引等。
2、在原库上flush table,会生成一个cfg文件
SELECT
CONCAT(
'flush table ',
Group_concat(aa.table_name),
' for export;'
)
FROM
(
SELECT
CONCAT(
TABLE_SCHEMA,
'.',
TABLE_NAME
) AS table_name
FROM
information_schema. TABLES
WHERE
TABLE_SCHEMA = '数据库名'
) aa
3、在新库中执行以下语句,删除新库的.ibd
数据文件
alter table 表名 discard tablespace;
4、将原库上的表的.ibd
文件和.cfg
文件传输到新库
scp -r 老数据库服务器用户名@老数据库服务器ip:老数据库文件路径 新数据库路径
如:
scp -r root@127.0.0.1:/mysql/data/wang/table.ibd /mysql/data/wang
5、原库解锁表,会删除.cfg
文件
unlock tables;
6、新库修改文件权限,数据文件抽过来之后默认为 root 权限,改为 mysql 权限
chown -R mysql.mysql *
7、在新库中执行以下语句,导入新抽取的数据文件
alter table 表名 import tablespace;