mysqldump 逻辑备份的正确姿势

在上一篇文章 MySQL 命令行工具之 mysqldump 深入研究 中,我们搞定了mysqldump的参数和基本原理。那么我们该怎么样最好的使用它的?它有哪些坑呢?

1. 利用mysqldump进行逻辑备份

1)全逻辑备份:

mysqldump -uxxx -p --flush-logs --delete-master-logs --all-databases > alldb.sql (每天晚上进行一次全备)

2)增量备份:

mysqladmin flush-logs (每小时刷一下,保存起来,进行了一次增量备份)

3)缺点:

1> --all-databases 包含了 mysql 数据库,其中包含了权限的数据,所以我们应该加上 --flush-privileges,在恢复时,权限才能生效;

注意 --all-databases 包括了mysql数据库,但是不会包含 information_schema和performance_schema两个数据库。

2> 因为 mysqldump 默认启用了 --lock-tables,所以会导致在备份期间对所有表持有读锁: lock table tb read local,所以所有的update,delete语句

会被阻塞。但是select语句和insert语句不会被阻塞。

3> --delete-master-logs 备份之后,会执行 purge logs to 语句。删除了备份之后的master上的binary log. 一般而言,我们不建议随便删除binary log.

我们应该将它们保存起来,而不是直接删除。以防万一,要留条退路。

4> 该备份方式,虽然在整个备份过程中持有了 lock table tb read local,但是还是可以执行 insert 语句的。所以得到的不是一致性的备份。虽然得到的不是

一致性的备份,但是因为flush log之后,所有的操作 也会记入新的binary log,所以如果使用了所有新的binary log来进行完全恢复的话,最后恢复的数据

也是一致性的。当然不一致性的备份无法用于搭建slave。

如果要得到一致性的备份的话,需要使用 --lock-all-tables 或者使用 --single-transaction 选项。前者使用了全局读锁,不允许任何修改操作。后者使用

了事务的特性来得到一致性备份。

所以我们应该对上面的备份方式进行改良。

2. 使用mysqldump备份的最佳姿势

1)优化锁 和 得到一致性备份:

我们可以使用结合使用 --single-transaction 、--master-data=2 、--flush-logs 来达到将锁定时间大大减少的目的。同时有得到了一致性的备份,而且该一致性备份和 flush 的日志也是一致的;

2)去掉 --delete-master-logs 选项,改为在备份之后,将所有被刷新的 binary log 移到一个地方保存起来;

3)因为使用了 --single-transaction 选项,针对的只能是 innodb 数据,但是mysql数据是Myisam引擎的,所以我们最好将mysql数据库的备份分开来,

另外专门针对 mysql 数据库进行一次操作。当然不分开来备份,可能也没有问题。

4)还要加上 --routines 来备份存储过程和函数,触发器默认会备份。

优化之后,我们得到:

mysqldump -uxxx -p --singel-transaction --master-data=2 --flush-logs --routines --databases db1 db2 db3 > alldb.sql;

mysqldump -uxxx -p --databases mysql > mysql.sql;

如何将mysql一起备份的话:

mysqldump -uxxx -p --singel-transaction --master-data=2 --flush-logs --routines --all-databases > alldb.sql;

3. 使用mysqldump来搭建slave环境

地方

4. 使用mysqldump备份的结果来进行 恢复

撒地方

时间: 2024-10-10 23:25:06

mysqldump 逻辑备份的正确姿势的相关文章

MySQL的逻辑备份(mydumper+mysqldump)

虽说MySQL的逻辑备份经常会由于锁表等缺陷遭到诟病, 实际上在停机窗口时间内, 如果数据量不是太高的话, 做逻辑备份还是挺简单的~ 准备工作:1. 目标库(从这个库备份数据)先要有足够权限的账号(临时的root就可以了~用完就删);2. 对应的工具要安装好, 如mydumper;3. 准备好脚本/命令, 不放心就在测试环境演练一下~ 一切准备就绪之后就可以等停机了~ 这里记下备份&恢复用的命令: 备份: nohup mysqldump -h<host> -u<user>

基于mysqldump实现数据库的逻辑备份

 基于mysqldump实现数据库的逻辑备份 [备份类型] 根据备份时,数据库服务器是否在线: 冷备份:cold backup,服务器要离线,意味着我们的读写操作都不可以进行了,但是服务器离线比较困难. 温备份:warm backup,全局施加共享锁,只可读,不可写的备份叫温备份 热备份:hot backup,数据库不离线,读写操作都可以进行,通常是基于事务的存储引擎才能够完成的 根据备份时的数据集进行分类: 完全备份:full backup:指备份整个库,当下数据集的整个库的数据 部分备份:p

逻辑备份,mysqldump,SELECT…INTO OUTFILE,恢复

逻辑备份 mysqldump mysqldump备份工具最初由Igor Romanenko编写完成,通常用来完成转存(dump)数据库的备份以及不同数据库之间的移植,例如从低版本的MySQL数据库升级到高版本的MySQL数据库,或者从MySQL数据库移植到Oracle和SQL Server等数据库等. mysqldump的语法如下: mysqldump [arguments] > file_name 如果想要备份所有的数据库,可以使用--all-databaes选项: mysqldump --a

mysqldump常用于MySQL数据库逻辑备份

mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du

MySQL逻辑备份mysqldump

一个用mysqldump做逻辑备份的小脚本 用于小数据量的备份,全库,按日期,按库,按表,进行分类 # date -s "2015/01/01" && bash mybackup.sh #!/bin/bash # 使用mysqldump进行逻辑备份 # 目录结构/backup/日期 # 每隔7天删除旧的备份目录 db_backup_root="/backup" today=`date +%Y%m%d` old_backup_dir=`date -d

mysqldump xtrabackup 逻辑备份和物理备份

逻辑备份 逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现. 工具:mysqldump 特点: 1.可移植性比较强 2.备份和恢复的花费时间长,不适用于大型业务系统 物理备份 物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单. 工具:xtrabackup 特点: 1.不具备移植性,备份环境和恢复环境必须是完全相同的 2.备份和恢复时间较快,适用于大型业务系统 mysqldump 备份原理:通过协议连接到mysql数据库

(4.12)mysql备份还原——mysql逻辑备份之mysqldump

关键词:mysql逻辑备份介绍,mysqldump 1.mysql逻辑备份介绍 [1.1]备份内容:数据库的结构定义语句+数据内容的插入语句,备份出来的文件可以编辑 [1.2]使用场景:数据量较少的库,比较适合100G数据量以内的 逻辑备份的特点 (1)sql语句组成的文件,可以编辑截取部分单独使用. (2)备份文件比物理文件小 (3)可以细化到表/表的内容 (4)速度慢 (5)可以跨平台恢复/迁移 2.逻辑备份工具 [1.1]mysqldump(单线程).mysqlpump(多线程,5.7以后

(转)解锁MySQL备份恢复的4种正确姿势

本文根据DBAplus社群第104期线上分享整理而成. 原文:http://dbaplus.cn/news-11-1267-1.html 讲师介绍   冯帅 点融网高级DBA 分享大纲: 备份高于一切,今天汇总一下常用的几种备份方法,以及恢复的步骤. 一.mysqldump 在日常工作中,我们会使用mysqldump命令创建SQL格式的转储文件来备份数据库.或者我们把数据导出后做数据迁移,主备搭建等操作.mysqldump是一个逻辑备份工具,复制原始的数据库对象定义和表数据产生一组可执行的SQL

mysql逻辑备份与还原工具mysqldump

(一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所有数据库 某个或某几个数据库 某个数据库中的表 某个数据库中的表的某些记录 mysqldump的备份结果集有两种文件:一种是将数据转换为标准的SQL语句,另一种是按照指定的分隔符,输出为特定格式的平面文件. (二)mysqldump的用法 可以直接使用mysqldump命令查看mysqldump的用