MySQL
常用语句
用户相关\管理相关\数据相关
视图\事件\存储过程\函数\游标\触发器
事务\分区
常用工具
管理优化
锁问题
MySQL日志
异步复制
半同步复制
复制管理
5.7开启并行复制
双主备份
故障问题
索引
时区
mysql_random_data_load 数据生成
表的导出导入
MySQLdump逻辑备份
XtraBackup全备
XtraBackup增备
XtraBackup原表数据恢复
安装MySQL
ProxySQL中间件
Atlas中间件
keepalived安装
MHA安装
MHA恢复
mha复制检查报错及解决过程
集群Cluster安装
维护Cluster
开启审计功能
本文档使用MrDoc发布
返回首页
-
+
MySQLdump逻辑备份
2019年11月24日 14:32
admin
#MYSQLDUMP >####mysqldump [连接选项] --database 数据库 [表名] > 备份文件 >####mysqldump [连接选项] --databases(-B) 数据库 [数据库2 数据库3 ...] > 备份文件 >####mysqldump [连接选项] --all-databases(-A) > 备份文件 >####mysqldump [连接选项] --all-databases(-A)| gzip > 备份文件 连接选项: -u #指定用户名 -p #指定密码 -h #指定服务器IP -P #指定端口 -------------------------------------------------------- --add-drop-database #每个数据库创建语句前加DROP DATABASE --add-drop-table #在每个表创建语句前加DROP TABLE -n #不包含数据库的创建语句 -t #不包含数据表的创建语句 -d #不包含数据 --skip-triggers #不包含触发器的创建语句 -R #导出存储过程和函数 -E #导出事件 -T #将指定数据表中的数据备份为单纯的数据文本和建表SQL两个文件 --fields-terminated-by 'name' #字段分隔符,默认'\t' --fields-enclosed-by 'name' #字段引用符,默认不使用 --fields-optionally-enclosed-by 'name' #转义字符,默认'\' --fields-escaped-by 'name' #记录结束符,默认'\n'\ -F #备份前刷新日志 -l #给所有表加读锁 --default-character-set=name #设置导出的客户端字符集 --- ##示例 ####使用--quick选项:这将执行一个快速的备份,减少带宽使用。 mysqldump --quick --user=username --password=password --host=localhost database_name > backup.sql --- ####使用--compress选项:这将压缩备份文件,从而减少传输的数据量和带宽使用。 mysqldump --compress --user=username --password=password --host=localhost database_name | gzip > backup.sql.gz --- ####使用--single-transaction选项:这将使用一个单独的事务来备份数据库,从而避免锁定表,并减少带宽使用。 mysqldump --single-transaction --user=username --password=password --host=localhost database_name > backup.sql --- ####使用--max-allowed-packet选项:这将限制mysqldump发送的数据包大小,从而减少带宽使用。 mysqldump --max-allowed-packet=10M --user=username --password=password --host=localhost database_name > backup.sql --- ####使用--net-buffer-length选项:这将设置网络缓冲区的大小,从而限制mysqldump使用的带宽。 mysqldump --net-buffer-length=10K --user=username --password=password --host=localhost database_name > backup.sql --- ##备份 mysqldump -uroot -p -A --single-transaction --master-data=2 --flush-logs > /data_bak/master.sql #压缩 mysqldump -uroot -p -A --single-transaction --master-data=2 --flush-logs | gzip > /data_bak/master.sql.gz 其他选项: -A, --all-databases:所有数据库 --single-transaction:保证各个表具有数据一致性快照。 #常用 --lock-all-tables:保证整个数据库(所有schema)的数据具有一致性快照。相当于全局读锁,#一般少用 --master-date[=value] 1: 记录为CHANGE MASTER TO 语句、语句不被注释 2: 记录为注释的CHANGE MASTER TO语句 基于二进制还原只能全库还原 master-data主要是为了记录binlog的log和pos -E, --events: 备份事件调度器 -R, --routines: 备份存储过程和存储函数 --triggers: 备份表的触发器; --skip-triggers -F,--flush-logs: 日志滚动,生成新的binlog文件 锁定表完成后执行日志滚动 ####3、备份同个库多个表 >格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 表1 表2 .... > 文件名.sql mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql ####4、同时备份多个库 >格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql mysqldump -h192.168.1.100 -uroot -ppassword --databases cmdb bbs blog > /data/backup/mutil_db.sql ####5、备份指定表符合要求的记录 mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路 ####6、备份指定表 mysqldump -uroot test $(mysql -uroot -pxxxxxxx-A -D test -Bse "show tables where Tables_in_test like \"e_reportcustomerfee%\";")|gzip > vos.sql.gz ##恢复 ###1、查看备份的binlog信息 cat /data_bak/master.sql | grep master-bin  ###2、恢复备份 #方法一: mysql -uroot -p -Dd9cloud < 备份文件.sql #解压 gunzip < 备份文件.sql.gz | mysql -uroot -p -Dd9cloud #方法二: mysql> SET sql_log_bin=OFF; #暂时先将二进制日志关闭 mysql> source /data_bak/master.sql #恢复数据,所需时间根据数据库时间大小而定 mysql> SET sql_log_bin=ON; 开启二进制日志 ###3、binlog重做 mysqlbinlog /var/lib/mysql/master-bin.000022 | grep -A 100 "# at 862" #查看binlog,根据需求可把不要的position跳过 #grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行 #grep -B 5 foo file 显示foo及前5行 #grep -A 5 foo file 显示foo及后5行 mysqlbinlog --start-position=862 --stop-position=1196 /var/lib/mysql/master-bin.000022 | mysql -uroot -p #还原到最新
分享到: