设为首页 加入收藏

TOP

MySQL Backup mysqldump 常用选项与主要用法(三)
2019-09-17 17:33:59 】 浏览:57
Tags:MySQL Backup mysqldump 常用 选项 主要 用法
pt
默认开启,包含了一系列选项的集合,主要有 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset,如果要禁用,可以使用选项 --skip-opt

  • --quick, -q
    对于大表的dump很有帮助。默认开启。该选项使mysqldump直接从表中获取数据输出而不经过MySQL的缓存。

  • 事务选项(Transactional Options)

    • --add-locks
      指定dump文件中每张表INSERT语句之前添加LOCK TABLES语句,INSERT语句之后添加UNLOCK TABLES语句。这样可以提高导入效率。

    • --flush-logs, -F
      在dump开始之前切换日志。该选项需要RELOAD权限。如果与选项 --all-databases联合使用的话会导致每dump一个库之前都要进行日志切换。如果有使用选项 --lock-all-tables--master-data或者 --single-transaction,则在dump过程当中只进行一次日志切换。如果希望dump与日志的切换同时发生,则使用 --flush-logs与选项 --lock-all-tables--master-data或者 --single-transaction一同使用。

    • --flush-privileges
      在dump完mysql数据库之后添加FLUSH PRIVILEGES语句。

    • --lock-all-tables, -x
      在dump过程中锁住所有数据库中所有表。该选项会自动关闭 --single-transaction--lock-tables选项。

    • --lock-tables, -l
      在dump每个库时锁定库中的表。这个选项只能保证库中表的状态一致,因为针对每个库进行加锁,所以无法保证所有库都是一致状态。

    • --no-autocommit
      指定dump文件中每条INSERT语句包含在SET autocommit = 0COMMIT语句之间。

    • --order-by-primary
      在dump每张表的时候以表的主键或第一个唯一索引为序。对于导出是MyISAM表而导入是InnoDB表很有用。

    • --single-transaction
      在dump开始之前将会话事务隔离级别设置成REPEATABLE READ并执行语句START TRANSACTION,只适用于事务引擎的表如InnoDB。当指定该选项进行dump的过程中,应该避免其它会话连接执行如下语句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE,因为一致性读并不能隔离以上语句,所以当mysqldump执行SELECT语句进行dump表数据时,其它会话执行以上语句容易产生数据不一致或者报错。
      该选项与 --lock-tables是互斥的,因为LOCK TABLES语句会导致在执行的事务隐式提交。

    用法示例

    • 备份所有库
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 -A > test_all.sql
    • 备份一个或多个库
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 -B test1 test2 > test1_test2.sql
    • 备份一张表或多张表
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 t1 > test1_t1.sql
    或
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --tables t1 > test1_t1.sql
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 t1 t2 > test1_t1_t2.sql
    或
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --tables t1 t2 > test1_t1_t2.sql 
    • 备份库结构(同时会包含表结构)
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 --no-data -B test1 test2 > test1_test2.sql
    • 只备份表结构
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 --no-data test1 --tables t1 t2 > test1_t1_t2.sql
    • 只备份表数据(不包含建表语句)
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 --no-create-info test1 --tables t1 t2 > test1_t1_t2.sql
    • 忽略一张或多张表备份
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --ignore-table=test1.t1 --ignore-table=test1.t2 > test1_ig_t1_t2.sql 
    • 输出文件通过管道传到gzip命令进行压缩
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 -A | gzip > test_all.sql.gz
    • 指定where条件备份表数据
    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --triggers --single-transaction --master-data=2 test1 --tables t1 --where='c1>1000000' > test1_t1_w.sql

    不包含建表语句

    # mysqldump -uadmin -p -h192.168.58.3 -P3306 -E -R --trigger
    首页 上一页 1 2 3 4 下一页 尾页 3/4/4
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Redis 可视化工具 Redis Desktop .. 下一篇(3) MySQL分区表使用方法

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目