博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysqldump的基本用法
阅读量:2448 次
发布时间:2019-05-10

本文共 3507 字,大约阅读时间需要 11 分钟。

Mysqldump为逻辑备份工具,通过sql或文本方式导出数据;

运行该命令的用户对要导出的对象应该有select/show view/trigger权限以导出相应表/视图/触发器,如果不指定—single-transaction还应具有lock tables权限;

 

限制

不适合大规模数据备份:如果以InnoDB表为主,采用mysqlbackup进行物理备份;如果MyISAM为主,则采用mysqlhotcopy

 

工作机制

可逐行抽取,也可缓存整个表内容然后一次dump,但对于大表则比较消耗内存;

--quick采用row-by-row模式,也可使用—opt(包含--quick)--skip-quick则使用缓存机制;

Mysqldump可生成两种文件:文本文件和sql文件;

--tab=dirname选项为每个表生成两个文件sqltxt(select … into outfile,需要file权限)

 

选项

 

复制相关

--dump-slave:生成change master语句

--apply-slave-statements:指定—dump-slave时,在change master to前后添加stop slave/start slave

--include-master-host-port:对生成的change master添加master_host/master_port选项

--master-data(1|2):可用于创建slave,该选项会输出change master to 并包含binlog的具体位置,在导入slave后就不必再手工配置change master to信息;如果值为2则以注释的方式生成;

此选项会自动禁止—lock-tables同时激活—lock-all-tables(除非指定了—single-transaction)

需要reload权限,并且启用了二进制日志;

 

Sql相关

--add-drop-table:每个create table前添加drop table

--complete-insert:生成完整的insert,包含列名

--no-data:不dump表内容

 

网络相关

--compress/-C:压缩服务器/客户端之间的通信信息

--max_allowed_packet

--net_buffer_lengthTCP/IPbuffer大小,当使用—extended-insert生成insert … values时,每个insert受限于net_buffer_length,同时注意mysql服务器中该变量的设置;

 

性能相关

--delayed-insert:生成insert delayed语句,5.6.6 不再支持delayed insert

--extended-insert:生成insert … values,导入时可批量执行,减少sql parse

--disable-keys:仅用于MyISAM表的非唯一索引,在导入所有行后再创建索引;每个表的insert前后分别有

                 /*!40000 ALTER TABLE tbl_name DISABLE KEYS */

                  ……

                /*!40000 ALTER TABLE tbl_name ENABLE KEYS */

--opt:为多个选项集合--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset

--quickrow-by-row导出数据

 

事务相关

--flush-logs:在dump前刷新日志文件,需要reload权限

--add-locks:每个表前后生成lock tables/unlock tables

--lock-all-tables/-x:获取global read lock锁定所有表,与--single-transaction/--lock-tables不兼容

--lock-tables/-l:对于每个即将dump的db,提前锁定其下所有表;对MyISAM采用read local,InnoDB最好采用--single-transaction

--no-autocommit:将每个表的所有insert添加set autocommit=0/commit

--single-transaction:只用于事务表,不必锁定要导出的表;将事务隔离级别设置为repeatable read,在dump数据前执行start transaction

注:5.5.3之前,使用该选项时相应表不能进行alter/create/drop/rename/truncate table操作,一致性读不能隔离这些操作;而5.5.3引入metadata lock解决了这一问题;

 此选项在dump之前需要获取global read lock

Assume that we make a full backup of all our InnoDB tables in all databases using the following command on Sunday at 1 p.m., when load is low:

shell> mysqldump --single-transaction --all-databases > backup_sunday_1_PM.sql

The resulting .sql file produced by mysqldump contains a set of SQL INSERT statements that can be used to reload the dumped tables at a later time.

This backup operation acquires a global read lock on all tables at the beginning of the dump (using FLUSH TABLES WITH READ LOCK). As soon as this lock has been acquired, the binary log coordinates are read and the lock is released. If long updating statements are running when the FLUSH statement is issued, the backup operation may stall until those statements finish. After that, the dump becomes lock-free and does not disturb reads and writes on the tables.

 

 

用途

复制数据库

Mysqldump db1 > dump.sql –不能指定—databases,否则文件开头会有use db1

Mysqladmin create db2

Mysql db2 < dump.sql

 

导出存储程序

--events:导出scheduler event

--routines:存储过程和函数

--triggers:触发器,默认导出

这些选项分别由对应的skip-***

 

分别导出表定义和内容

--no-data:只导出表定义

--no-create-info:只导出表数据

导出所有的create语句

Mysqldump –no-data –routines –events test > dump defs.sql

 

验证升级兼容性

先导出各种对象定义sql,检验新版本是否支持创建语法

然后导出并同步表数据,进行测试查询

 

 

相关工具

Mysqldump无法并行执行

mk-parallel-dump可以并行导出表数据,但是不建议用于备份

 

mydumper也是并行导出

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-757888/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15480802/viewspace-757888/

你可能感兴趣的文章
word文档插入复选框_如何将复选框添加到Word文档
查看>>
sql truncate_如何在SQL Delete和SQL Truncate语句后使用数据库备份恢复数据
查看>>
为SQL Server Always On可用性组配置域控制器和Active Directory
查看>>
SQL Server连接面试SQL Server数据库管理员问答
查看>>
ssisdb_SSISDB入门
查看>>
如何在SQL Server Management Studio中创建和配置链接服务器以连接到MySQL
查看>>
使用PowerShell和T-SQL在多服务器环境中规划SQL Server备份和还原策略
查看>>
ansi_nulls_影响查询结果SQL Server SET选项-SET ANSI_NULLS,SET ANSI_PADDING,SET ANSI_WARNINGS和SET ARITHABORT
查看>>
使用Microsoft数据迁移助手在Oracle数据库和SQL Server之间迁移的具体示例
查看>>
大数据数据科学家常用面试题_面试有关数据科学,数据理解和准备的问答
查看>>
sql2012 ssrs_如何在SQL Server并行数据仓库中处理SSRS多值参数过滤
查看>>
使用Azure Data Studio在Docker容器上使用SQL Server 2017进行备份和还原操作
查看>>
使用sql语句生成报表_SQL Server报表服务:如何使用报表生成器处理常见的最终用户要求
查看>>
如何使用SQL Server 2016系统版本的时态表跟踪数据更改的历史记录
查看>>
sql语句集合里有集合_学习SQL:集合论
查看>>
mac命令行将输出写入文件_如何使用命令行将备份,文件和脚本迁移到云中/从云中迁移
查看>>
sql数据库性能指标_SQL Server磁盘性能指标–第2部分–其他重要的磁盘性能指标
查看>>
sql数据库性能指标_SQL Server磁盘性能指标–第1部分–最重要的磁盘性能指标
查看>>
SQL Server复制
查看>>
ssis zip压缩文件_SSIS平面文件与原始文件
查看>>