场景一:从MySQL中导出数据到文本文件

  • 从MySQL中导出数据到文本文件。
    输入如下命令,从MySQL导出表结构和数据(假设导出文件为dump.sql)。
    mysqldump -h ip -P port -u user -p password --default-character-set=char-set --net_buffer_length=10240 --no-create-db --skip-add-locks --skip-lock-tables --skip-tz-utc --set-charset  [--hex-blob] [--no-data] database [table1 table2 table3...] > dump.sql
  • 导入数据文件到 PolarDB-X 1.0 。您可以通过如下两种方式的任意一种导入数据文件到 PolarDB-X 1.0
  • 导入数据文件到 PolarDB-X 1.0 。请参考场景一第3步。
  • 手动创建Sequence对象。
    mysqldump并不会导出 PolarDB-X 1.0 中的Sequence对象,所以如果在源 PolarDB-X 1.0 中使用了Sequence对象,并且需要在目标 PolarDB-X 1.0 中继续使用相同的Sequence对象,则需要手动在目标 PolarDB-X 1.0 中创建同名的Sequence的对象。具体步骤如下:
  • 通过 mysql -h ip -P port -u user --default-character-set=char-set 命令登录目标 PolarDB-X 1.0 ,执行 source /yourpath/dump.sql 命令将数据导入到目标 PolarDB-X 1.0
    说明 该方式会把所有的步骤回显到屏幕上,速度略慢,但是可以观察导入过程。
  • 直接通过 mysql -h ip -P port -u user --default-character-set=char-set< /yourpath/dump.sql 命令将数据导入到目标 PolarDB-X 1.0
  • 上述两个命令中 default-character-set 要设置成实际的数据编码。如果是Windows平台,SOURCE命令指定的文件路径需要对分隔符转义。
  • 导入的时候,由于某些 PolarDB-X 1.0 和MySQL实现上的不同,可能会报错(如 ERROR 1231 (HY000): [a29ef6461c00000][10.117.207.130:3306][****]Variable @saved_cs_client can't be set to the value of @@character_set_client )。此类错误信息并不影响导入数据的正确性。

    场景二:从一个 PolarDB-X 1.0 导入到另一个 PolarDB-X 1.0

    假设您之前有一个测试环境的 PolarDB-X 1.0 ,测试完毕以后,需要把测试过程中的一些表结构和数据导入到生产环境的 PolarDB-X 1.0 中,那么可以按照如下步骤进行操作。

  • 从源 PolarDB-X 1.0 中导出数据到文本文件。
  • 在源 PolarDB-X 1.0 上执行 SHOW SEQUENCES ,获取当前 PolarDB-X 1.0 中的Sequence对象的状态。
  • 在目标 PolarDB-X 1.0 数据库上通过 CREATE SEQUENCE 命令创建新的Sequence对象。

    场景三:从 PolarDB-X 1.0 导出数据到MySQL

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

  • 从源 PolarDB-X 1.0 中导出表结构和数据。
    mysqldump -h ip -P port -u user -p password --default-character-set=char-set --net_buffer_length=10240 --no-create-db --skip-add-locks --skip-lock-tables --skip-tz-utc --set-charset  [--hex-blob] [--no-data] database [table1 table2 table3...] > dump.sql
    说明 请将 PolarDB-X 1.0 的相关参数代入命令中执行。
  • 手动修改拆分表的DDL语句。
    PolarDB-X 1.0 中拆分表的建表语句和MySQL并不兼容。为了后续导入到MySQL中,需手动修改导出的SQL文件,删除以下关键字:
  • DBPARTITION BY hash(partition_key):
  • TBPARTITION BY hash(partition_key):
  • TBPARTITIONS N
  • BROADCAST
  • 例如一个拆分表语句导出如下:
    CREATE TABLE multi_db_single_tbl
    (id int, 
    name varchar(30), 
    primary key(id)) dbpartition by hash(id);                    
    需修改成以下语句:
    CREATE TABLE multi_db_single_tbl
    (id int,
    name varchar(30), 
    primary key(id));
                         
  • 导入修改以后的文件。请参见场景一第3步。

  • 表 1. 参数说明