mysqldump命令详解

这篇具有很好参考价值的文章主要介绍了mysqldump命令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注意:备份加入--databases 备份文件中会有创建数据库的语句,否则没有

建议:导出库加入、导出表不加此参数

一、mysqldump命令备份Mysql数据库的参数说明

在用mysqldump备份使用那些参数选项是最完美的组合呢?

--skip-opt                 ----跳过   --add-drop-table, --add-locks,--create-options, --quick, --extended-insert等

--create-option         ----添加create相关的选项

--single-transaction   ----一致性备份,保证导出数据一致性

-q                            ----采用快速的dump方式(提高导出性能)

-e                            ----采用多重insert语句形式(提高还原性能),当一个表的数据量很大情况下不知道会不会导致死锁?

--no-autocommit      ----采用批量提交方式(提高还原性能)

-R                            ----导出存储过程,函数,和触发器

--master-data           ----如果有写log-bin且版本为5.0以上的版本,打开-lock-all-tables

                               则再加上 --master-data=1  (输出中会带change master 便于从库搭建)

                               则再加上 --master-data=2  (输出中会带注释change master便于从库搭建)

--events                    ----如果是5.1以上的版本使用,包含事件

--compress               ----客户端与服务器之间启用压缩

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000028', MASTER_LOG_POS=154;

mysqldump产生两种类型的输出,具体取决于是否指定了该--tab 选项:

没有--tab, mysqldump将SQL语句写入标准输出。该输出包含 CREATE用于创建转储对象(数据库,表,存储的例程等)的INSERT语句,

以及 用于将数据加载到表中的语句。可以将输出保存在文件中,并稍后使用mysql重新创建转储的对象来重新加载 。选项可用于修改SQL语句的格式,并控制转储哪些对象。

使用--tab, mysqldump为每个转储的表产生两个输出文件。服务器以制表符分隔的文本形式写入一个文件,每表行一行。该文件tbl_name.txt 在输出目录中命名 。

服务器还将CREATE TABLE表的语句发送 到mysqldump,将其写为tbl_name.sql 在输出目录中命名的文件 。

不带--databases,转储输出不包含CREATE DATABASE or USE 语句。这有几个含义:

重新加载转储文件时,必须指定默认数据库名称,以便服务器知道要重新加载的数据库。

对于重新加载,可以指定一个与原始名称不同的数据库名称,这使您可以将数据重新加载到另一个数据库中。

如果要重装的数据库不存在,则必须首先创建它。

因为输出将不包含任何 CREATE DATABASE语句,所以该--add-drop-database 选项无效。如果使用它,则不会产生任何 DROP DATABASE语句。

二、mysqldump (sql 格式输出) ,默认标准输出到屏幕

单数据库导出:

mysqldump -uroot -p'gzjpm0330' -S /tmp/mysql.sock kyriba > /home/mysql/backup/kyriba_fullback.sql

mysqldump -uroot -p'gzjpm0330' -S /tmp/mysql.sock --databases kyriba > /home/mysql/backup/kyriba_fullback01.sql

单表导出:

mysqldump -uroot -p'gzjpm0330' -S /tmp/mysql.sock kyriba  k_bank  > /home/mysql/backup/kyriba_k_bank.sql

多数据库导出:

mysqldump -uroot -p'gzjpm0330' -S /tmp/mysql.sock  --databases kyriba mysql >/home/mysql/backup/kyriba_mysql_fullback.sql

全部数据库导出:

mysqldump -uroot -p'gzjpm0330' -S /tmp/mysql.sock  --all-databases  >/home/mysql/backup/database_fullback.sql

多库导出可以使用参数:-B 代替--databases

全库导出可以使用参数:-A 代替--all-databases

三、mysqldump输出定界格式文件,并且输出为实际数据的.txt文件和对象结构的.sql 文件(注意不用于导出库)

--fields-terminated-by:指定列值的分隔符,默认值Tab符

--fields-enclosed-by:指定列值的包括符,默认值没有(对于字符中包含列分隔符的直接包括起来)例如:12#kk#2#4,2与4间包括了#,使用包括符后,”2#4“

--fields-optionally-enclosed-by: 指定非数字列的包括符,默认值没有(有就使用,没有就不使用)

--fields-escped-by:指定转义符,默认值转义符\

--lines-terminated-by:指定行结束符,默认值就是换行符

通用性强的CSV 格式导出:

mysqldump -uroot -p'gzjpm0330' -S /tmp/mysql.sock --tab=/home/mysql/backup/k_bank kyriba k_bank --fields-terminated-by=',' --fields-enclosed-by='"'

--tab :备份输出到此位置

导出以逗号分隔,列值使用双引号引住

导出后有.txt(数据)和.sql(结构) 文件。每个表都有这两个文件

导出不包含数据:

shell> mysqldump --no-data test > dump-defs.sql

导出不包含结构:

shell> mysqldump --no-create-info test > dump-data.sql

四、使用mysqldump测试升级不兼容性

在考虑进行MySQL升级时,谨慎地将较新的版本与当前的生产版本分开安装。然后,您可以从生产服务器中转储数据库和数据库对象定义,

并将它们加载到新服务器中,以验证是否已正确处理它们。(这对于测试降级也很有用)

在生产服务器上:

shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql

在升级的服务器上:

shell> mysql < dump-defs.sql

因为转储文件不包含表数据,所以可以对其进行快速处理。这使您能够发现潜在的不兼容性,而无需等待冗长的数据加载操作。在处理转储文件时查找警告或错误。

验证定义是否正确处理后,转储数据并尝试将其加载到升级的服务器中。

在生产服务器上:

shell> mysqldump --all-databases --no-create-info > dump-data.sql

在升级的服务器上:

shell> mysql < dump-data.sql

现在检查表内容并运行一些测试查询

五、恢复

要重新加载由mysqldump编写的 包含SQL语句的转储文件,请将其用作mysql客户端的输入 。

如果转储文件是由mysqldump使用 --all-databases或 --databases选项创建的 ,

则它包含CREATE DATABASE和 USE语句,并且无需指定默认数据库以将数据加载到其中:

1、定界符格式恢复

先恢复表结构:

mysql -uroot -p'gzjpm030' -S /tmp/mysql.sock kyriba </home/mysql/backup/k_bank/k_bank.sql

恢复数据:

mysql>use kyriba;

mysql>LOAD DATA INFILE  '/home/mysql/backup/k_bank/k_bank.txt' into table k_bank;

这种方式用的很少,对于语法要求很高。

2、SQL 格式恢复(默认的方式)

2.1、使用重定义符<

恢复kyriba数据库(注意导出方式)

1、先创建数据库

mysql -uroot -p'gzjpm030' -S /tmp/mysql.sock kyriba  < /home/mysql/backup/kyriba_fullback.sql

2、直接恢复

mysql -uroot -p'gzjpm030' -S /tmp/mysql.sock  < /home/mysql/backup/kyriba_fullback01.sql

恢复k_bank 表

mysql -usystem -p -S /usr/local/mysql/data/mysql.sock kyriba <  kyriba_k_bank.sql

2.2、使用source(先创建kyriba数据库)

mysql>use kyriba;

mysql>source /home/mysql/backup/kyriba_fullback.sql;

1、mysqldump 从全备份中恢复单库、单表

恢复单库:(前提条件库是要存在的,恢复的是库里的对象)

mysql -uroot -p'gzjpm030' -S /tmp/mysql.sock  kyriba --one-database < database_fullback.sql

恢复单表:

先获取表结构:3种都可以,建议使用第3个,前面两个都需要获取备份中下一个表的名称(顺序与show tables 查看的一样)

awk '/^-- Table structure for table `t2`/,/^-- Table structure for table `t3`/{print}'  gl_test_full05.sql > t2.sql

sed -n -e '/-- Table structure for table `t2`/,/-- Table structure for table `t3`/p'  gl_test_full05.sql > t2_sed.sql

sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `t4`/!d;q' gl_test_full05.sql > t4.sql

获取表的数据:

grep -i 'INSERT INTO `t4`' gl_test_full05.sql >> t4.sql

恢复:

mysql -usystem -p -S /usr/local/mysql/data/mysql.sock gl_test < t4.sql文章来源地址https://www.toymoban.com/news/detail-773059.html

到了这里,关于mysqldump命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows服务器使用Mysqldump备份MySQL数据库方法

    Windows服务器使用Mysqldump备份MySQL数据库方法 1.进入到MySQL安装目录的bin目录下,进入cmd F:20220601dev_softwaremysql-8.0.11-winx64 2.执行备份命令: 3.导入备份 数据: 4.验证数据表是否备份成功

    2024年02月10日
    浏览(50)
  • 编写shell脚本,利用mysqldump实现MySQL数据库分库分表备份

     查看数据和数据表 删除头部Database和数据库自带的表  编写脚本 检查脚本运行备份数据库 分表分库备份成功 还原检测 删除数据库并查看库 开始还原 使用备份的库进行还原,由于是压缩文件,使用压缩还原 查看数据库  

    2024年02月05日
    浏览(41)
  • MySQL 数据库导入命令 SOURCE 详解

    在 MySQL 数据库中,可以使用 SOURCE 命令来执行 SQL 脚本文件,并将其内容导入到当前数据库中。这是一个非常有用的命令,特别是当需要导入大量数据或者执行复杂的数据库操作时。本文将详细介绍 SOURCE 命令的使用方法,并提供相应的源代码示例。 使用 SOURCE 命令导入 SQL 脚

    2024年02月03日
    浏览(39)
  • mysqldump 使用 及数据库升级

    – 导出20220101年之前的数据 机构贷库(jigoudai)下的合同表(ods_contract_detail_v) 带表结构 – 导出20220101年之前的数据 机构贷库(jigoudai)下的合同表(ods_contract_detail_v) 不带带表结构 · · ---------------------------------------------------------------------------------------------------------- ---

    2023年04月08日
    浏览(25)
  • springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库

    代码讲解: 3-点赞功能-定时持久化到数据库(pipeline+lua)-完善过程2_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1w14y1o7BV 本文章代码: blogLike_schedule/like03 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like03 数据

    2024年02月15日
    浏览(40)
  • JDBC 技术 | Java连接MySQL数据库(四万字零基础保姆级超全详解)

    管他啥是啥,看就完了!如果觉得博主写的不错,可以点赞关注支持一下博主哦!有什么地方存在不足或者错误的,烦请各位大佬在评论区指正。万分感谢!! 本文结合了韩顺平零基础学java,黑马程序员零基础学 JavaWeb,等多个视频的相关知识内容整理而来。花费了很多很多

    2024年02月05日
    浏览(49)
  • windows下使用mysqldump备份数据库并上传到阿里云OSS

    powershell 下使用 | Out-file -Encoding utf8 设置字符格式 cmd 参数说明 --single-transaction 不阻塞程序的情况下保证导出数据一致性,InnoDB 支持 --default-character-set 设置字符集 --hex-blob 转换 bit 类型 --routines 导出存储过程以及自定义函数 --events 导出事件 下载 ossutil 工具:下载并安装命令

    2024年04月08日
    浏览(28)
  • MySQL数据库命令

    一、数据库 二、表 三、操作数据 四、查询数据 五、单表操作 5-1 排序 5-2 聚合 5-3 分组 5-4 主键 5-5 唯一约束 5-6 非空约束 5-7 事物 5-8 事务四大特性 特性 含义 原子性 每个事务都是一个整体,不可再拆分。事务中所有的sql要么全部执行成功,要么都失败 一致性 事务在执行前

    2024年02月02日
    浏览(40)
  • 【MYSQL】MYSQL数据库命令大全

    root 用户登录 使用mysql数据库 更新用户表的root账户,设置为任意ip都可以访问,密码修改为123456 刷新权限 退出 显示当前的数据库 创建数据库 MYSQL中允许用户使用做为数据库名,但是需要用反引号把引起来 查看数据库字符集 使用数据库 查看下当前使用的是哪个

    2024年02月02日
    浏览(32)
  • MySql——数据库常用命令

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包