更新时间:2022-06-17 06:18:21
PolarDB-X支持MySQL官方数据导出工具mysqldump。本文围绕PolarDB-X数据导入导出的几种常见场景对操作步骤和注意事项进行说明。mysqldump命令的详细说明请参见MySQL 官方文档。
mysqldump适合小数据量(低于1000万)的离线导入导出。如果需要完成更大数据量或者实时的数据迁移任务,请参见数据传输服务。
从MySQL导入数据到PolarDB-X,请按照以下步骤进行操作。
1.从MySQL中导出数据到文本文件。
输入以下命令,从MySQL中导出表结构和数据。假设导出文件为dump.sql。
mysqldump -h ip -P port -u user -ppassword --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
参数说明如下,请根据实际情况输入:
参数名 | 说明 | 是否必选 |
ip |
PolarDB-X实例的 IP。 | ✔️ |
port |
PolarDB-X实例的端口。 | ❌ |
user |
PolarDB-X的用户名。 | ✔️ |
password |
PolarDB-X的密码,注意前面有个-p ,之间没有空格。 |
✔️ |
char-set |
指定的编码。 | ✔️ |
--hex-blob |
使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响的字段类型包括BINARY、VARBINARY、BLOB。 | ❌ |
--no-data |
不导出数据。 | ❌ |
table |
指定导出某个表。默认导出该数据库所有的表。 | ❌ |
2.修改建表语句。
从MySQL导出的数据文件包含每个表的建表语句。如果直接在在PolarDB-X上执行这些建表语句,会在PolarDB-X上建立一个单表。如果要对某个表进行分库分表,那么需要手工对建表语句进行修改,关于PolarDB-X建表语句的语法请参见CREATE TABLE语句。
3.导入数据文件到PolarDB-X。您可以通过如下两种方式导入数据文件到PolarDB-X:
mysql -h ip -P port -u user --default-character-set=char-set
命令登录目标olarDB-X,执行source /yourpath/dump.sql
命令将数据导入到目标PolarDB-X。mysql -h ip -P port -u user --default-character-set=char-set< /yourpath/dump.sql
命令将数据导入到目标PolarDB-X。
- 上述两个命令中
default-character-set
要设置成实际的数据编码。如果是Windows平台,source命令指定的文件路径需要对分隔符转义。- 第一种方式会把所有的步骤回显到屏幕上,速度略慢,但是可以观察导入过程。
- 导入的时候,由于某些PolarDB-X和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,测试完毕以后,需要把测试过程中的一些表结构和数据导入到生产环境中的PolarDB-X中,那么可以按照以下步骤进行操作。
SHOW SEQUENCES
,获取当前PolarDB-X中的Sequence对象的状态。CREATE SEQUENCE
命令创建新的Sequence对象。从PolarDB-X导出数据到MySQL,和在PolarDB-X之间相互导入数据的过程类似,也分为以下几个步骤。
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));