专栏首页运维录mysql 数据导入与导出

mysql 数据导入与导出

开始之前

在日常的运维工作中除了频繁操作基本的SQL语句外,还有另外一种场景,就是数据的导出与导入操作。

举个栗子: 例如逻辑备份需要使用mysqldump导出数据进行逻辑备份数据,或者需要将测试环境的某个表导出、处理后在生产环境使用mysql命令导入数据等。

环境描述

1. MySql 版本 5.7.20

2. 数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+

3个库,其中 test库是我们自己创建的。其余的两个库是 mysql服务器自有的系统库

3. 数据表

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| table1         |
| table2         |
+----------------+

我们在 test库,创建了2个table

导出数据

1. 导出表结构和数据

# 含有`create`和`lock`、`insert`语句,注意选项 `--opt`
# mysqldump --opt 数据库名 -u用户 -p > my-db.sql
mysqldump --opt test -uroot -p > test-full.sql

2. 导出表结构不导出数据

# 含有 `create table` 语句,注意选项 `-d`
# mysqldump -d 数据库名 -u用户 -p > my-db.sql
mysqldump -d test -u root -p > test-table.sql

3. 导出数据不导出表结构

# 含有 `lock` 和 `insert`语句,注意选项 `-t`
# mysqldump -t 数据库名 -u用户 -p > my-db.sql
mysqldump -t test -u root -p > test-data.sql

4. 导出单个表(结构和数据)

# 与上述示例不同,仅导出数据库中的某个表,而不是库中所有表
# mysqldump --opt 数据库名 表名 -u用户 -p > table.sql
mysqldump --opt test table1 -uroot -p > table-single.sql

5. 导出所有库

# 导出全部的数据,包括mysql自身的系统库
# mysqldump --opt --all-databases -u用户 -p > all.sql
mysqldump --opt --all-databases -uroot -p > all.sql

6. 导出并压缩数据

# 使用管道组合 mysqldump 与 gzip 命令
mysqldump --opt test -uroot -pPasswd | gzip > table-full.gz

# 文件类型
file table-full.gz
table-full.gz: gzip compressed data, # 省略...

导入数据

1. 导入SQL数据

# mysql -h Server_IP -u用户 -p 数据库名 < my-db.sql
mysql -h 8.8.8.8 -uroot -p test < table-full.sql

注意: mysqldump 命令使用--opt选项导出的数据默认包含DROP TABLE语句,例如 "DROP TABLE IF EXISTS table1;" 。

这种情况下请在导入数据前做好数据备份工作,或者根据实际需求删除DROP TABLE语句。

2. 导入压缩数据

# 没有 -h 选项,表示服务器为 localhost
gzip -dc table-full.gz | mysql -uroot -p test

命令帮助

mysqldump --help
mysqldump  Ver 10.13 Distrib 5.7.27, for Linux (x86_64)

# 省略...
Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

# 省略...
-h, --host=name
    Connect to host.

-u, --user=name    
    User for login if not current user.

-p, --password[=name]

-d, --no-data
    No row information.

-t, --no-create-info 
    Don't write table creation info.

-A, --all-databases 
    Dump all the databases.
    This will be same as --databases with all databases selected.

--opt Same as --add-drop-table, --add-locks, --create-options,
    --quick, --extended-insert, --lock-tables, --set-charset,
    and --disable-keys. Enabled by default, disable with -skip-opt.
    
-R, --routines
Dump stored routines (functions and procedures).

小结

最后来总结下文章中的知识点

  • mysqldump 与 mysql 两个命令日常工作使用频繁,建议掌握使用方法。
  • mysqldump 导出数据如果很大,可以使用shll管道与gzip命令压缩。
  • 慎用--all-databases选项备份全部数据库,建议独立备份每个库。
  • 对于含有储过程和函数、触发器,还要加上--routines 选项。

http://zongming.net/read-536

本文分享自微信公众号 - 运维录(gh_70d95b8f5f7c),作者:东南

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 运维常用 mysql 语句

    上周隔壁专题推送最后一篇Nginx文章(公众号出门左转 Nginx专题) ,从本周开始每周一推送MySql主题文章(Docker 主题每周四不变),文章内容均为...

    用户1560186
  • Nginx Location

    不知不觉 nginx主题的文章写了60+篇,有最早的也有最近的,有些是记录安装配置,有些是记录问题解决方法,内容质量有深也有浅参差不齐,随着技术迭代有些文章已经...

    用户1560186
  • 如何为 Nginx 添加一个模块?

    这篇文章发布于2013年,介绍如何为nginx添加模块,由于时间久远可能有些内容已经过时,不过"静态添加模块"方法仍然可以使用(从1.9.11版本开始支持loa...

    用户1560186
  • mysqldump 导出数据库各参数详细说明

    mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT...

    大道七哥
  • 第二章 Linux系统基本操作

    登录系统后,在GUI图形界面上点击右键,选择“打开终端”,即可打开命令行窗口。注:虽然我们安装并登录到了GUI图形界面,但是在Linux操作中大多还是习惯于以命...

    晓天
  • AI 只会让你工资上涨:谷歌施密特主席话丰年

    【新智元导读】在巴黎举行的 Viva 技术大会上,施密特作为首席讲者发言。他指出:机器学习和人工智能将为广泛的行业(包括农业、能源、时尚和医疗)提供机会,即使它...

    新智元
  • python asyncio 协程futures结果回调(并行编程 29)

    import asyncio,sys @asyncio.coroutine def f(fu,n): count=0 for i in range(1,...

    用户5760343
  • 学界 | 机器翻译新突破:谷歌实现完全基于attention的翻译架构

    选自arXiv 机器之心编译 参与:吴攀、黄小天、李亚洲 近两年来,机器翻译的突破让人目不暇接,从去年谷歌的颠覆性突破开始到一个月前 Facebook 的全新 ...

    机器之心
  • netty案例,netty4.1基础入门篇四《NettyServer收发数据》

    本章节主要介绍服务端在收到数据后,通过writeAndFlush发送ByteBuf字节码向客户端传输信息。因为我们使用客户端模拟器的编码是GBK格式,所以代码中...

    小傅哥
  • netty案例,netty4.1基础入门篇六《NettyServer群发消息》

    在微信或者QQ的聊天中我们经常会用到一些群聊,把你的信息发送给所有用户。那么为了实现群发消息,在netty中我们可以使用ChannelGroup方式进行群发消息...

    小傅哥

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动