tencent cloud

文档反馈

从单机实例导入到分布式实例

最后更新时间:2024-01-06 12:30:03
    由于分布式数据库的分布式架构对用户透明,一般情况下,只需要预先建好表结构。可以使用 mysqldump、或其他 Navicat、SQLyog 等 MySQL 客户端进行迁移。迁移步骤如下:
    第一步:准备导入导出环境 第二步:导出源表的表结构和数据 第三步:修改建表语句并在目的表中创建表结构 第四步:导入数据

    步骤1:准备导入导出环境

    准备迁移数据前,您需要准备好如下环境:
    云服务器
    建议配置 CPU 2核,内存8GB,磁盘500GB以上(取决于数据量大小)
    Linux
    安装 MySQL 客户端
    如果您迁移的数据量较小(< 10GB),也可以通过外网(互联网)直接导入,无需准备
    TDSQL MySQL 版
    根据预期选择大小,并根据源库字符集,表名大小写,innodb_page_size 大小进行初始化
    创建账号,该账号建议开启全局所有权限
    必要时开启外网 IP

    步骤2:导出源表的表结构和数据

    演示环境

    操作库:caccts
    操作表:t_acct_water_0
    源库:单实例 MySQL
    目标库:TDSQL for Percona、MariaDB

    在源库导出表结构

    通过命令mysqldump -u username -p password -d dbname tablename > tablename.sql导出表结构。
    //命令实例
    mysqldump -utest -ptest1234 -d -S /data/4003/prod/mysql.sock caccts t_acct_water_0 > table.sql

    在源库导出表数据

    通过命令mysqldump -c -u username -p password dbname tablename > tablename.sql导出表数据。
    //命令实例
    mysqldump -c -t -utest -ptest1234 -S /data/4003/prod/mysql.sock caccts t_acct_water_0 > data.sql
    注意:
    导出数据必须通过 mysqldump 工具导出,并且加上 -c 参数,因为这样导出的数据行都带有列名字段,不带列名字段的 sql 会被 TDSQL for Percona、MariaDB 拒绝掉。-t 参数的意义是不导出表结构,只导出表数据。

    上传文件至云服务器某目录

    上传前,您需开启 CVM 外网访问地址,并参见 Linux 系统通过 SCP 上传文件到 Linux 云服务器 上传文件,您至少需要上传刚刚导出的:
    表结构 sql:table.sql
    数据 sql:data.sql

    步骤3:修改建表语句并在目的表中创建表结构

    打开刚导出的表结构文件 table.sql,参考如下格式语句添加主键和 shardkey,并另存为 tablenew.sql。
    CREATE TABLE(
    列名称1 数据类型,
    列名称2 数据类型,
    列名称3 数据类型,
    ....
    PRIMARY KEY('列名称n')
    ENGINE=INNODB DEFAULT CHARSET=xxxx
    shardkey=keyname
    注意:
    必须要设置主键,必须指定 shardkey,必须注意表名大小写问题,建议删除多余注释,否则建表可能不成功。
    
    
    

    步骤4:导入数据

    连接 TDSQL for Percona、MariaDB 实例

    在 CVM 上使用mysql -u username -p password -h IP -P port 登录 MySQL 服务器,然后使用use dbname进入数据库。
    注意:
    您可能需要先创建库。

    导入表结构

    使用刚刚上传的文件,用source命令导入数据。
    1. 先导入表结构:source /文件路径/tablenew.sql;
    2. 再导入数据:source /文件路径/data.sql;
    3. 校验导入情况:select count(*) from tablename;
    注意:
    需先导入建表语句,再导入数据。也可以通过 mysql 的 source 命令直接导入 sql。

    其他方案

    整体来说,只要能够在导入数据前,在目的表先创建对应的表结构(需指定 shardkey),就可以比较顺利的导入数据。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持