【笔记】用户指南—数据导入和导出—使用mysqldump导入导出数据

简介: 本文介绍了通过mysqldump工具将PolarDB-X数据导入导出的几种常见场景和详细操作步骤。 PolarDB-X支持MySQL官方数据导出工具mysqldump。mysqldump命令的详细说明请参见MySQL 官方文档。

mysqldump工具介绍

mysqldump能够导出表结构信息和表内数据,并转化成SQL语句的格式方便用户直接导入,SQL语法如下:


DROP TABLE IF EXISTS `table_name`;
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`);
INSERT INTO `table_name` VALUES (...),(...),...;
INSERT INTO `table_name` VALUES (...),(...),...;
...

mysqldump工具导出数据的命令使用方式举例:


shell> mysqldump -h ip -P port -u user -pPassword --default-character-set=char-set --net_buffer_length=10240 --no-create-db --no-create-info --skip-add-locks --skip-lock-tables --skip-tz-utc --set-charset  [--hex-blob] [--no-data] database [table1 table2 table3...] > dump.sql

mysqldump的参数说明可通过mysqldump --help命令查看或查询MySQL 官方文档,常用参数说明如下,请根据实际情况输入:

参数名 说明
ip PolarDB-X实例的IP。
port PolarDB-X实例的端口。
user PolarDB-X的用户名。
password PolarDB-X的密码,注意前面有个-p,之间没有空格。
char-set 指定的编码。
--hex-blob 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响的字段类型包括BINARY、VARBINARY、BLOB。
--no-data 不导出数据。
table 指定导出某个表。默认导出该数据库所有的表。
--no-create-info 不导出建表信息
--net_buffer_length 传输缓冲区大小。影响Insert语句的长度,默认值1046528。

导出的SQL语句格式文件,有两种方法导入数据库中:

  • SOURCE语句导入数据
## 1.登录数据库

shell> mysql -h ip -P port -u user -pPassword --default-character-set=char-set
## 2.通过source语句执行文件中的sql语句导入数据
mysql> source dump.sql
  • mysql命令导入数据
shell> mysql -h ip -P port -u user -pPassword --default-character-set=char-set< /yourpath/dump.sql

下面从不同场景介绍mysqldump工具的使用实例。

PolarDB-X和MySQL之间数据传输时不推荐导出表结构,因为PolarDB-X包含分库分表功能,CREATE TABLE中的拆分函数等与MySQL不兼容,不兼容的关键字包括:

  • DBPARTITION BY hash(partition_key)
  • TBPARTITION BY hash(partition_key)
  • TBPARTITIONS N
  • BROADCAST

如果导出表结构,需在导出的SQL语句文件中修改建表语句,才能正确导入。所以推荐只导出表内数据,手动登录数据库进行建表操作,然后再导入数据。

场景一:从MySQL导入到PolarDB-X

从MySQL导入数据到PolarDB-X,请按照以下步骤进行操作。

  1. 从MySQL中导出数据到文件。输入以下命令,从MySQL中导出表内数据(不推荐导出表结构),假设导出文件为dump.sql。
mysqldump -h ip -P port -u user -pPassword --default-character-set=char-set --net_buffer_length=204800 --no-create-db --no-create-info --skip-add-locks --skip-lock-tables --skip-tz-utc --set-charset --hex-blob database [table1 table2 table3...] > dump.sql
  1. 登录PolarDB-X,手动建立目标表,关于PolarDB-X建表语句的语法请参见CREATE TABLE。如果未加--no-create-info参数,导出的dump.sql文件中包含MySQL端的建表语句,也可在文件中进行修改建表语句。

导入数据文件到PolarDB-X中。您可以通过如下两种方式导入数据文件到PolarDB-X:
    • 通过mysql -h ip -P port -u user -pPassword --default-character-set=char-set命令登录目标PolarDB-X,执行source /yourpath/dump.sql命令将数据导入到目标PolarDB-X。
    • 直接通过mysql -h ip -P port -u user -pPassword --default-character-set=char-set< /yourpath/dump.sql命令将数据导入到目标PolarDB-X。
  1. 说明
    • 上述两个命令中default-character-set要设置成实际的数据编码。如果是Windows平台,source命令指定的文件路径需要对分隔符转义。
    • 第一种方式会把所有的步骤回显到屏幕上,速度略慢,但是可以观察导入过程。
    • 导入的时候,由于某些PolarDB-X和MySQL实现上的不同,可能会报错,错误信息类似ERROR 1231 (HY000): a29ef6461c00000[**]Variable @saved_cs_client can't be set to the value of @@character_set_client。此类错误信息并不影响导入数据的正确性。

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

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

  1. 从源PolarDB-X中导出数据到文本文件。请参见场景一步骤一。
  2. 导入数据文件到PolarDB-X。请参见场景一步骤三。
  3. 手动创建Sequence对象。mysqldump并不会导出PolarDB-X中的Sequence对象,所以如果在源PolarDB-X中使用了Sequence对象,并且需要在目标PolarDB-X中继续使用相同的Sequence对象,则需要手动在目标PolarDB-X中创建同名的Sequence的对象。具体步骤如下:
    1. 在源PolarDB-X上执行SHOW SEQUENCES,获取当前PolarDB-X中的Sequence对象的状态。
    2. 在目标PolarDB-X数据库上通过CREATE SEQUENCE命令创建新的Sequence对象。
  1. Sequence命令详情请参见Sequence

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

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

  1. 从源PolarDB-X中导出数据到文本文件。请参见场景一步骤一。
  2. 登录MySQL,手动创建目标表。如果导出数据包含建表语句,则需要在导出文件中修改建表语句,删除PolarDB-X中不兼容MySQL的关键字等信息。例如PolarDB-X中的某个拆分表:
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`);
  1. 需去掉MySQL不兼容的拆分函数语句,改成:
CREATE TABLE `table_name` (
`id` int(11) NOT NULL,
`k` int(11) NOT NULL DEFAULT '0',
...
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
  1. 导入数据文件到PolarDB-X。请参见场景一步骤三。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
人工智能 分布式计算 搜索推荐
元宇宙:通往未来数字世界的入口
【10月更文挑战第27天】元宇宙,一个融合虚拟现实、增强现实、人工智能和区块链等技术的多维度数字世界,正成为连接现实与虚拟的桥梁。它不仅提供沉浸式的社交、娱乐和商业体验,还预示着数字时代的深刻变革,对经济、文化和社会产生深远影响。本文探讨元宇宙的定义、特征、关键技术及其未来影响。
|
SQL 存储 缓存
阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse
讲师焦明烨介绍了StarRocks的数据湖能力,如何使用阿里云EMR StarRocks构建基于Paimon的极速实时湖仓,StarRocks与Paimon的最新进展及未来规划。
545 59
|
C语言 开发者
C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧
本文深入探讨了C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧,并通过案例分析展示了其应用,展望了未来的发展趋势,旨在帮助读者提升程序质量和开发效率。
670 5
|
机器学习/深度学习 安全 物联网
智能时代下的数据安全:挑战与对策
本文深入探讨了在快速发展的信息技术背景下,数据安全面临的新挑战及应对策略。文章首先分析了当前数据泄露和滥用的风险,随后提出了一系列针对性的技术和管理措施,旨在增强个人和企业的数据防护能力。通过案例分析,本文揭示了数据保护的最佳实践,并对未来数据安全技术的发展方向进行了展望。
|
缓存 安全 Linux
docker镜像管理问题
【10月更文挑战第3天】
260 1
|
机器学习/深度学习 前端开发 JavaScript
230+本图灵编程高清文字版无水印电子书合集【制作不易,点赞收藏❤️】
今日精选,200余本图灵出版的高质量编程电子书,覆盖编程、系统架构、算法及机器学习等热门领域,助你全面提升技术能力。无论你是初学者还是资深开发者,都能从中找到适合自己的学习资源,从《Python编程:从入门到实践》到《深度学习入门》,每一本书都将是你技术成长道路上的良师益友,帮助你在瞬息万变的技术浪潮中站稳脚跟,稳步前行。
515 2
|
机器学习/深度学习 人工智能 自然语言处理
一周打完1000场官司,中科院发布首个AI法庭AgentCourt!
【9月更文挑战第27天】中国科学院近日发布了名为AgentCourt的人工智能法庭技术,引发广泛关注。该技术可在一周内完成1000场官司的审理,有望显著提升司法效率,减少人为干扰,但同时也面临质疑,如是否能准确理解案件复杂性及背后的伦理、隐私和安全等问题。支持者认为它有助于提高判决公正性和一致性,而反对者则担忧其可能导致司法过程机械化,忽视人文因素。AgentCourt在自然语言处理和知识图谱构建方面展现了最新进展。论文详情见:https://doi.org/10.48550/arXiv.2408.08089
298 9
|
数据采集 机器学习/深度学习 人工智能
探索人工智能与大数据的融合之路####
本文将深入探讨人工智能(AI)与大数据之间的共生关系,揭示二者如何相互促进,共同推动技术边界的拓展。不同于传统摘要的概述形式,本部分将以一个生动的比喻开篇:如果把大数据比作广阔无垠的数字海洋,那么人工智能就是航行其间的智能航船,两者相辅相成,缺一不可。随后,简述文章将从数据采集、处理、分析到决策应用的全流程中,详细阐述AI如何借助大数据的力量实现自我迭代与优化,以及大数据如何在AI算法的驱动下释放出前所未有的价值。最后,预告文章还将探讨当前面临的挑战与未来趋势,为读者勾勒一幅AI与大数据融合发展的宏伟蓝图。 ####
|
机器学习/深度学习 自然语言处理 人机交互
深度学习之情感生成与交互
基于深度学习的情感生成与交互是一个新兴的研究领域,旨在通过深度学习技术生成具有情感的反应,以增强人机交互的自然性和有效性。该技术涉及情感识别、自然语言处理、计算机视觉等多个领域,并在多个应用场景中展现出潜力。
307 4
|
监控 安全 关系型数据库