暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用mysqldump导出数据

酷数据库 2023-07-17
205

从PolarDB分布式版导出数据到MySQL

从PolarDB分布式版导出数据到MySQL,和在PolarDB分布式版之间相互导入数据的过程类似,也分为以下几个步骤。

  1. 从源PolarDB分布式版中导出数据到文本文件。请参见场景一步骤一。
  2. 登录MySQL,手动创建目标表。如果导出数据包含建表语句,则需要在导出文件中修改建表语句,删除PolarDB分布式版中不兼容MySQL的关键字等信息。

    例如PolarDB分布式版中的某个拆分表:

    CREATE TABLE `table_name` (
        `id` int(11) NOT NULL,
        `k` int(11) NOT NULL DEFAULT '0',
        ...
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 dbpartition by hash(`id`);

    需去掉MySQL不兼容的拆分函数语句,改成:

    CREATE TABLE `table_name` (
        `id` int(11) NOT NULL,
        `k` int(11) NOT NULL DEFAULT '0',
        ...
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
  3. 导入数据文件到PolarDB分布式版中。您可以通过如下两种方式导入数据文件到PolarDB分布式版:
    • 通过mysql -h ip -P port -u user -pPassword --default-character-set=char-set命令登录目标PolarDB分布式版,执行source /yourpath/dump.sql命令将数据导入到目标PolarDB分布式版。
    • 直接通过mysql -h ip -P port -u user -pPassword --default-character-set=char-set< /yourpath/dump.sql命令将数据导入到目标PolarDB分布式版。

FAQ

  1. 问题:使用--all-databases导出所有库失败,没有任何数据输出,但是单独指定库可以导出。

    原因:mysqldump在所有库导出时,会先尝试去找到名为mysql的系统库,但是PolarDB分布式版不存在名为mysql的系统库,因此导出失败。

    解决方法:在PolarDB分布式版中创建一个库名为mysql的空库即可,但是导入时也会导入一个空的名为mysql的库;避免使用--all-databases一次性导出所有库,而是指定库导出。

  2. 问题:mysqldump报错when trying to dump tablespace

    原因:PolarDB分布式版没有tablespace(表空间)的概念。

    解决方法:mysqldump加入参数--no-tablespaces

  3. 问题:mysqldump报错SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-bucket-specified"') FROM information_schema.COLUMN_STATISTICS ...

    原因:查询列统计信息时,因不兼容的JSON格式报错。

    解决方法:mysqldump加入参数--column-statistics=0,跳过导出统计信息。

  4. 问题:mysqldump报错Couldn't execute 'SHOW TRIGGERS ...'

    原因:PolarDB分布式版不支持triggers(触发器)。

    解决方法:mysqldump加入参数--skip-triggers

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论