Mysql 数据库导入导出比较快的方式

2021-06-16 15:17:47 浏览数 (2)

1、备份原来数据库表结构,在新库中恢复表结构,必须跟原库一模一样,包括索引等。

2、在原库上flush table,会生成一个cfg文件

代码语言:javascript复制
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数据文件

代码语言:javascript复制
alter table 表名 discard tablespace;

4、将原库上的表的.ibd文件和.cfg文件传输到新库

代码语言:javascript复制
scp -r 老数据库服务器用户名@老数据库服务器ip:老数据库文件路径  新数据库路径
如:
scp -r root@127.0.0.1:/mysql/data/wang/table.ibd /mysql/data/wang

5、原库解锁表,会删除.cfg文件

代码语言:javascript复制
unlock tables;

6、新库修改文件权限,数据文件抽过来之后默认为 root 权限,改为 mysql 权限

代码语言:javascript复制
chown -R mysql.mysql *

7、在新库中执行以下语句,导入新抽取的数据文件

代码语言:javascript复制
alter table 表名 import tablespace;

0 人点赞