mysqldump备份工具

本文详细介绍了mysqldump工具在MySQL备份中的应用,包括mysqldump的基本选项,针对MyISAM和InnoDB存储引擎的备份策略,以及一系列实战案例,如特定数据库备份、分库备份、完全备份与还原、增量备份和误删除恢复等。对于生产环境,文章提出了InnoDB和MyISAM的不同备份建议。
摘要由CSDN通过智能技术生成
mysqldump说明

mysqldump:是MySQL的客户端命令,通过mysql协议连接至mysql服务器进行备份

命令格式

mysqldump [OPTIONS] database [tables]   #支持指定数据库和指定多表的备份,但数据库本身定义不备份

mysqldump [OPTIONS] –B DB1 [DB2 DB3...] #支持指定数据库备份,包含数据库本身定义也会备份

mysqldump [OPTIONS] –A [OPTIONS]        #备份所有数据库,包含数据库本身定义也会备份

mysqldump参考

参考文档.

mysqldump常见选项

-A, --all-databases #备份所有数据库,含create database

-B, --databases db_name…  #指定备份的数据库,包括create database语句

-E, --events:#备份相关的所有event scheduler

-R, --routines:#备份所有存储过程和自定义函数
    --triggers:#备份表相关触发器,默认启用,用--skip-triggers,不备份触发器
    --default-character-set=utf8 #指定字符集
    --master-data[=#]: #此选项须启用二进制日志
                    #1:所备份的数据之前加一条记录为CHANGE MASTER TO语句,非注释,不指定#,默认为1,适合于主从复制多机使用
                    #2:记录为被注释的#CHANGE MASTER TO语句,适合于单机使用
                    #此选项会自动关闭--lock-tables功能,自动打开-x | --lock-all-tables功能(除非开启--single-transaction)

-F, --flush-logs #备份前滚动日志,锁定表完成后,执行flush logs命令,生成新的二进制日志文件,配合-A 或 -B 选项时,会导致刷新多次数据库。建议在同一时刻执行转储和日志刷新,可通过和--single-transaction或-x,--master-data 一起使用实现,此时只刷新一次二进制日志
    --compact #去掉注释,适合调试,生产不使用

-d, --no-data #只备份表结构

-t, --no-create-info #只备份数据,不备份create table

-n, --no-create-db #不备份create database,可被-A或-B覆盖
    --flush-privileges #备份mysql或相关时需要使用

-f, --force       #忽略SQL错误,继续执行
    --hex-blob #使用十六进制符号转储二进制列,当有包括BINARY, VARBINARY,BLOB,BIT的数据类型的列时使用,避免乱码

-q, --quick     #不缓存查询,直接输出,加快备份速度

mysqldump的MyISAM存储引擎相关的备份选项

MyISAM不支持事务,只能支持温备;不支持热备,所以必须先锁定要备份的库,而后启动备份操作

-x,--lock-all-tables #加全局读锁,锁定所有库的所有表,同时加--single-transaction或--lock-tables选项会关闭此选项功能,注意:数据量大时,可能会导致长时间无法并发访问数据库

-l,--lock-tables #对于需要备份的每个数据库,在启动备份之前分别锁定其所有表,默认为on,--skip-lock-tables选项可禁用,对备份MyISAM的多个库,可能会造成数据不一致
#注:以上选项对InnoDB表一样生效,实现温备,但不推荐使用

mysqldump的InnoDB存储引擎相关的备份选项

InnoDB 存储引擎支持事务,可以利用事务的相应的隔离级别,实现热备,也可以实现温备但不建议用

--single-transaction
#此选项Innodb中推荐使用,不适用MyISAM,此选项会开始备份前,先执行START TRANSACTION指令开启事务

#此选项通过在单个事务中转储所有表来创建一致的快照。 仅适用于存储在支持多版本控制的存储引擎中的表(目前只有InnoDB可以); 转储不保证与其他存储引擎保持一致。 在进行单事务转储时,要确保有效的转储文件(正确的表内容和二进制日志位置),没有其他连接应该使用以下语句:ALTER TABLE,DROPTABLE,RENAME TABLE,TRUNCATE TABLE,此选项和--lock-tables(此选项隐含提交挂起的事务)选项是相互排斥,备份大型表时,建议将--single-transaction选项和--quick结合一起使用
生产环境实战备份策略

InnoDB建议备份策略

mysqldump –uroot -p –A –F –E –R --single-transaction --master-data=1 --flushprivileges --triggers --default-character-set=utf8 --hex-blob

>${BACKUP}/fullbak_${BACKUP_TIME}.sql

MyISAM建议备份策略

mysqldump –uroot -p –A –F –E –R –x --master-data=1 --flush-privileges --triggers --default-character-set=utf8 --hex-blob

>${BACKUP}/fullbak_${BACKUP_TIME}.sql
mysqldump备份还原实战案例

实战:特定数据库的备份脚本

[root@centos8 ~]#cat backup_hellodb.sh

#!/bin/bash
TIME=`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值