MySQL备份命令mysqldump参数说明与示例

1. 语法选项说明

  • -h, --host=name
    主机名
  • -P[ port_num], --port=port_num
    用于连接MySQL服务器的的TCP/IP端口号
  • --master-data
    这个选项可以把binlog的位置和文件名添加到输出中,如果等于1,将会打印成一个CHANGE MASTER命令;如果等于2,会加上注释前缀。并且这个选项会自动打开--lock-all-tables,除非同时设置了--single-transaction(这种情况下,全局读锁只会在开始dump的时候加上一小段时间,不要忘了阅读--single-transaction的部分)。在任何情况下,所有日志中的操作都会发生在导出的准确时刻。这个选项会自动关闭--lock-tables
  • -x, --lock-all-tables
    锁定所有库中所有的表。这是通过在整个dump的过程中持有全局读锁来实现的。会自动关闭--single-transaction--lock-tables
  • --single-transaction
    通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照。只有当表使用支持MVCC的存储引擎(目前只有InnoDB)时才可以工作;其他引擎不能保证导出是一致的。当导出开启了--single-transaction选项时,要确保导出文件有效(正确的表数据和二进制日志位置),就要保证没有其他连接会执行如下语句:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,这会导致一致性快照失效。这个选项开启后会自动关闭--lock-tables
  • -l, --lock-tables
    对所有表加读锁。(默认是打开的,用--skip-lock-tables来关闭,上面的选项会把关闭-l选项)
  • -F, --flush-logs
    在开始导出前刷新服务器的日志文件。注意,如果你一次性导出很多数据库(使用 -databases=--all-databases选项),导出每个库时都会触发日志刷新。例外是当使用了--lock-all-tables--master-data时:日志只会被刷新一次,那个时候所有表都会被锁住。所以如果你希望你的导出和日志刷新发生在同一个确定的时刻,你需要使用--lock-all-tables,或者--master-data配合--flush-logs
  • --delete-master-logs
    备份完成后删除主库上的日志。这个选项会自动打开``--master-data`。
  • --opt
    -add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys。(默认已开启,--skip-opt关闭表示这些选项保持它的默认值)应该给你为读入一个MySQL服务器的尽可能最快的导出,--compact差不多是禁用上面的选项。
  • -q, --quick
    不缓冲查询,直接导出至stdout。(默认打开,用--skip-quick来关闭)该选项用于转储大的表。
  • --set-charset
    SET NAMES default_character_set加到输出中。该选项默认启用。要想禁用SET NAMES语句,使用--skip-set-charset
  • --add-drop-tables
    在每个CREATE TABLE语句前添加DROP TABLE语句。默认开启。
  • --add-locks
    在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。默认开启。
  • --create-option
    在CREATE TABLE语句中包括所有MySQL表选项。默认开启,使用--skip-create-options来关闭。
  • -e, --extended-insert
    使用全新多行INSERT语法,默认开启(给出更紧缩并且更快的插入语句)
  • -d, --no-data
    不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的。
  • --add-drop-database
    在create数据库之前先DROP DATABASE,默认关闭,所以一般在导入时需要保证数据库已存在。
  • --default-character-set=
    使用的默认字符集。如果没有指定,mysqldump使用utf8。
  • -B, --databases
    转储几个数据库。通常情况,mysqldump将命令行中的第1个名字参量看作数据库名,后面的名看作表名。使用该选项,它将所有名字参量看作数据库名。CREATE DATABASE IF NOT EXISTS db_nameUSE db_name语句包含在每个新数据库前的输出中。
  • --tables
    覆盖--database选项。选项后面的所有参量被看作表名。
  • -u[ name], --user=
    连接服务器时使用的MySQL用户名。
  • -p[password], --password[=password]
    连接服务器时使用的密码。如果你使用短选项形式(-p),不能在选项和密码之间有一个空格。如果在命令行中,忽略了--password-p选项后面的 密码值,将提示你输入一个。

2. 示例

导出一个数据库:

$ mysqldump -h localhost -uroot -ppassword \--master-data=2 --single-transaction --add-drop-table --create-options --quick \--extended-insert --default-character-set=utf8 \--databases discuz > backup-file.sql

导出一个表:

$ mysqldump -u pak -p --opt --flush-logs pak t_user > pak-t_user.sql

将备份文件压缩:

$ mysqldump -hhostname -uusername -ppassword --databases dbname | gzip > backup-file.sql.gz
对应的还原动作为
gunzip < backup-file.sql.gz | mysql -uusername -ppassword dbname

导入数据库:

mysql> use target_dbname
mysql> source /mysql/backup/path/backup-file.sql
或
$ mysql target_dbname <backup-file.sql

导入还有一个mysqlimport命令,暂未研究。

直接从一个数据库向另一个数据库转储:

mysqldump -u用户名 -p --opt dbname | mysql --host remote_host -C dbname2
时间: 2024-07-30 13:49:34

MySQL备份命令mysqldump参数说明与示例的相关文章

MySQL备份之mysqldump和lvm2的使用

逻辑备份:工具 mysqldump, mydumper, phpMyAdmin(备份的缺点:Schema和数据存储一起.会生成巨大的SQL语句.单个巨大的备份文件)连上MySQL后,将数据导出来.考虑到备份的数据可能会比较大,在比较在乎硬盘空间情况下可以使用压缩工具来先压缩后存放. 完全备份并不是指备份所有库是指备份指定数据集当中的所有数据,通常也可以是单个数据库.完全备份+增量备份时,先用mysqldump做一下完全备份,过一个时间后,备份一下这个时间内的二进制日志(每次备份都记录一下位置二进

MySQL备份恢复工具mysqldump

简要说一下MySQL的备份类型: 热备份:读.写不受影响 温备份:仅可以执行读操作 冷备份:离线备份,读.写操作都中止 物理备份:直接复制数据文件 逻辑备份:将数据导出至文本文件中 完全备份:备份全部数据 增量备份:仅备份上次完全备份或增量备份以后变化的数据 差异备份:仅备份上次完全备份以来变化的数据 MySQL的备份工具: mysqldump:逻辑备份工具,适用于小规模数据库,MyISAM(温备),InnoDB(热备) mysqlhotcopy:物理备份工具,温备份 cp:直接复制,冷备 lv

MySQL备份还原&mdash;&mdash;mysqldump工具介绍

mysqldump是一款MySQL逻辑备份的工具,他将数据库里面的对象(表)导出成SQL脚本文件.有点类似于SQL SEVER的"任务-生成脚本"的逻辑备份功能.mysqldump是比较常用的备份方法,适合于在不同MySQL版本之间的迁移.升级.不足之处就是数据库比较大时,mysqldump的效率不高. mysqldump的主要参数收集整理注释如下,如果你要查看mysqldump的具体参数信息,可以使用命令mysqldump –help --add-drop-table       :

MySQL数据库备份命令mysqldump参数详解

mysqldump对于MySQL数据库备份是有一个很好用的命令,并且是MySQL自带的.-d:只备份表结构,备份文件是SQL语句形式:只备份创建表的语句,插入的数据不备份. -t:只备份数据,数据是文本形式:表结构不备份 -T [--tab]:表结构与数据分离,表结构为sql文件,数据为普通文件 -A:导出所有数据库 -B:导出指定数据库 -x, --lock-all-tables: 锁表锁表原理:从执行定时备份脚本起(带-x参数),不能往表里更新,但是缺点,锁表后无法更新,如果单库一般在低谷,

Mysql权限分配用户和windows下Mysql备份命令简介

一.备份 1.根据用户名,ip,数据库名称做相应修改,需要注意是,不需要登陆mysql,在cmd命令行下执行,以我本机为例, -- 不能登陆mysql客户端-- mysql导出数据 --将moy_test数据库数据导出在路径为d盘的bak.sql文件中 mysqldump -u root -p moy_test > d:/bak.sql -- mysql导入数据 -- 将d盘的bak.sql文件,导入到moy_test数据库中 mysql -u root -p moy_test < d:/ba

mysql备份工具--mysqldump备份以及恢复

https://help.aliyun.com/knowledge_detail/41738.html mysql全备:记录pos位置 mysqldump -h10.10.10.1 -uadmin -p --master-data=2 --single-transaction -R --events -q --all-databases > 2.sql cat 2.sql |head -22 在导出的备份中的22行会看到pos位置点和具体的binlog文件名称 CHANGE MASTER TO

mysql备份之mysqldump工具

参考文档: 利用mysqldump+二进制日志实现备份恢复数据库:http://www.178linux.com/60616 mysql进阶篇(三种备份方法总结:lvm, mysqldump, xtrabackup):http://www.178linux.com/9781 注意:备份文件和二进制日志文件不能与mysql放在同一磁盘下 节点1 1.节点1上修改mysql配置文件,开起二进制日志保存 这里我将二进制日志放在/data/mysql/目录下,/data/是我创建的另外一个lvm磁盘,本

mysql备份脚本-mysqldump

背景:全库备份 备份流程: 1.生成DB列表,将DB名字写入文件 2.定义备份函数,结果写入SQL文件 3.压缩文件,减少磁盘占用量 4.设置保留天数,定期删除n天之前的 5.通过for循环读取DB列表文件,依次进行mysqldump 1 #!/bin/bash 2 3 PORT='5001' 4 PASSWD='admin' 5 SOCKED="/data/socket/mysql${PORT}.sock" 6 BACKUP_FILE='/data/mysqlData/backup'

Mysql备份迁移——Mysqldump(.NET调用Mysqldump.exe方式)——(解决视图嵌视图报错)

利用Mysqldump备份和迁移,我想很多人都用过,具体参数不介绍了,这里主要讲.NET调用Mysqldump进行备份和.NET调用Mysql.exe进行导入数据. 这里使用的是5.1版的Mysqldump.exe和Mysql.exe(5.5版的用过,没测试成功) 因为要解决导入时视图嵌视图会报错的情况,所以本案分成两步操作. 第一步:只迁移表结构.视图.存储过程.函数.事件等.(为何这里数据不一起导呢,因为到视图需要加上--extended-insert=false,这样导数据会很慢,所以分成