MySQL完全备份、增量备份与恢复[转]

原文链接:http://www.360doc.com/content/11/1209/09/834950_170836197.shtml

场景:每周日执行一次完全备份,每天下午1点执行增量备份

[ 适用版本 ] MySQL 4.x – 6.x

[ 配置 ]

执行增量备份的前提条件是MySQL打开log-bin日志开关,例如在my.ini或my.cnf中

加入

log-bin=/opt/Data/mysql-bin

“log-bin=”后的字符串为日志记载目录,一般建议放在不同于mysql数据目录的磁盘上。

[ 完全备份]

假定星期日下午1点执行完全备份,适用于MyISAM存储引擎。

mysqldump –lock-all-tables –flush-logs –master-data=2 -u root -p test >
backup_sunday_1_PM.sql

对于InnoDB 将–lock-all-tables替换为–single-transaction

–flush-logs 为结束当前日志,生成新日志文件

–master-data=2 选项将会在输出SQL中记录下完全备份后新日志文件的名称,

用于日后恢复时参考,例如输出的备份SQL文件中含有:

– CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000002′,
MASTER_LOG_POS=106;

其他说明:

如果mysqldump加上–delete-master-logs
则清除以前的日志,以释放空间。但是如果服务器配置为镜像的复制主服务器,用mysqldump
–delete-master-logs删掉MySQL二进制日志很危险,因为从服务器可能还没有完全处理该二进制日志的内容。在这种情况下,使用 PURGE
MASTER LOGS更为安全。

[ 增量备份 ]

每日定时使用 mysqladmin flush-logs来创建新日志,并结束前一日志写入过程。并

把前一日志备份,例如上例中开始保存数据目录下的日志文件 mysql-bin.000002 , …

[ 从备份中恢复 ]

* 恢复完全备份

mysql -u root -p < backup_sunday_1_PM.sql

* 恢复增量备份

mysqlbinlog mysql-bin.000002 … | mysql -u root -p

注意此次恢复过程亦会写入日志文件,如果数据量很大,建议先关闭日志功能

参考:http://bbs.bitscn.com/171622

常用参数:

–lock-tables, -l

Lock all tables before dumping them. The tables are locked with READ LOCAL to
allow concurrent inserts in the case of MyISAM

tables. For transactional tables such as InnoDB and BDB, –single-transaction
is a much better option, because it does not need

to lock the tables at all.

Please note that when dumping multiple databases, –lock-tables locks tables
for each database separately. Therefore, this

option does not guarantee that the tables in the dump file are logically
consistent between databases. Tables in different

databases may be dumped in completely different states.

–no-data, -d

Do not write any table row information (that is, do not dump table contents).
This is very useful if you want to dump only the

CREATE TABLE statement for the table.

–opt

This option is shorthand; it is the same as specifying –add-drop-table
–add-locks –create-options –disable-keys

–extended-insert –lock-tables –quick –set-charset. It should give you a fast
dump operation and produce a dump file that can

be reloaded into a MySQL server quickly.

The –opt option is enabled by default. Use –skip-opt to disable it. See the
discussion at the beginning of this section for

information about selectively enabling or disabling certain of the options
affected by –opt.

* –compatible=name

它告诉 mysqldump,导出的数据将和哪种数据库或哪个旧版本的 MySQL
服务器相兼容。值可以为
ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options
等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。

* –complete-insert,-c

导出的数据采用包含字段名的完整 INSERT
方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet
参数的影响而导致插入失败。因此,需要谨慎使用该参数,至少我不推荐。

* –default-character-set=charset

指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1
字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。

* –disable-keys

告诉 mysqldump 在 INSERT 语句的开头和结尾增加 /*!40000
ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */;
语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。

* –extended-insert = true|false

默认情况下,mysqldump 开启 –complete-insert
模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。

* –hex-blob

使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有
BINARY、VARBINARY、BLOB。

* –lock-all-tables,-x

在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 –single-transaction 和
–lock-tables 选项。

* –lock-tables

它和 –lock-all-tables
类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用
–single-transaction 选项。

* –no-create-info,-t

只导出数据,而不添加 CREATE TABLE 语句。

* –no-data,-d

不导出任何数据,只导出数据库表结构。

* –opt

这只是一个快捷选项,等同于同时添加 –add-drop-tables
–add-locking –create-option –disable-keys –extended-insert –lock-tables –quick
–set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 –skip-opt
禁用。注意,如果运行 mysqldump 没有指定 –quick 或 –opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。

* –quick,-q

该选项在导出大表时很有用,它强制 mysqldump
从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。

* –routines,-R

导出存储过程以及自定义函数。

* –single-transaction

该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN
不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。

本选项和 –lock-tables 选项是互斥的,因为 LOCK TABLES
会使任何挂起的事务隐含提交。

要想导出大表的话,应结合使用 –quick 选项。

* –triggers

同时导出触发器。该选项默认启用,用 –skip-triggers 禁用它

时间: 2024-10-01 06:06:01

MySQL完全备份、增量备份与恢复[转]的相关文章

mysql全备份 + 增量备份

mysql全备份 + 增量备份 配置文件: 管理mysql配置文件,打开binlog日志 对于mysql数据库: log_bin = /var/log/mysql/mysql_bin.log server-id = 1(必须有,否则重启fail) 对于mariadb数据库: log_bin = /var/log/mysql/mysql-bin.log 修改配置文件后需要重启mysql服务: service mysql restart | /etc/init.d/mysql restart 可登陆

MySQL 完全备份 + 增量备份+完全恢复

简介 1·完全备份与增量备份的概念2·使用 mysqldump 完全备份3·使用 mysqldump 进行表结构备份4·完全备份恢复的两种方法5·使用 flush logs 进行增量备份6·增量备份恢复7·基于时间点与位子的恢复8·MySQL 备份思路 完全备份与增量备份的概念 1·MySQL 完全备份:是对整个数据库的备份.数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,它也是增量备份的基础.它的优点:备份与恢复操作简单,缺点是数据存在大量的重复,占用大量的备份空间,备份时间长.2·

Mysql -- 完全备份 + 增量备份 + 恢复

文章目录 一.数据库备份的分类 二.MySQL 完全备份 (1)完全备份特点 (2)mysqldump 备份库 1.针对单个库进行完全备份 2.针对多个库进行完全备份 3.对所有库进行完全备份 (3)恢复数据库操作 1.source 命令 2.使用 mysql 命令 (4)mysqldump 备份表 1.备份表 2.备份表的结构 (5)恢复表的操作 三.MySQL 增量备份 一.数据库备份的分类: 1.从物理与逻辑的角度,备份可以分为: 物理备份:对数据库操作系统的物理文件(数据文件.日志文件等

mysql全备份+增量备份笔记总结

备份基础知识 冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行: 温备(warm backup): 服务在线,但仅支持读请求,不允许写请求: 热备(hot backup):备份的同时,业务不受影响. 这种类型的备份,取决于业务的需求,而不是备份工具 MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具 完全备份:full backup,备份全部字符集. 增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使

linux mysql 物理备份-增量备份

大家好,我是霸王卸甲,今天给大家带来的是数据库中的物理备份,物理备份又包括增量备份和差异备份,今天要讲的是增量备份!!!!!!! 物理备份 + binlog 准备工作:PERCONA XtraBakuo它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份.它不暂停服务创建Innodb热备份:为mysql做增量备份:在mysql服务器之间做在线表迁移:使创建replication更加容易:备份mysql而不增加服务器的负载.percona是

MySQL XtraBackup 备份

备注:先安装XtraBackup 下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/ 此处我的版本是:percona-xtrabackup-24-2.4.6-2.el7.x86_64.rpm 本地安装: yum localinstall percona-xtrabackup-24-2.4.6-2.el7.x86_64.rpm 查看  OK,安装完成 一.XtraBackup全备及恢复 1.创建一个备份用户,并授权 create us

MySQL完全备份、增量备份与恢复

在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果.所以数据库需要备份.这里以新版mysql5.7为例. 一.数据库备份分类: 从物理与逻辑的角度,备份可分为物理备份和逻辑备份. (1)物理备份:对数据库操作系统的物理文件(如数据文件.日志文件等)的备份.又可以分为冷备份和热备份. 冷备份:关闭数据库时进行的备份操作 热备份:在数据库运行状态中进行备份操作,这种备份方法依赖于数据库的日志文件. (2)逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份. 从数据库的备份策

mysql 数据库定时备份 增量/全备份

实验楼的 MySQL 数据库需要设计一个自动备份方案,能够每周执行一次全备份,每天执行一次增量备份. 数据库名称为 shiyanlou,管理的用户名为 shiyanlou,密码为 shiyanlou.注意需要先手动启动 MySQL 服务. 目标 设计并实现备份方案,任务完成后满足以下要求: MySQL 服务处于运行状态 需要为服务器中的 shiyanlou 用户设定计划任务 计划任务中设定每周的周一凌晨3点执行一次全备份 计划任务中设定每天凌晨3点执行一次增量备份,周一不执行 请不要编写额外的脚

MySQL增量备份与恢复实例【转】

小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的MySQL版本为5.5.40 for Linux (x86_64). 增量备份要确保打开了二进制日志,参考mysql的日志系统: mysql> show variables like '%log_bin%'; 首先对pak数据库做一个完整备份: $ mysqldump -h localhost -u

MySQL增量备份与恢复

MySQL增量备份与恢复 技能目标 理解MySQL增量备份的概念 理解MySQL增量备份与恢复的方法 1:增量备份的概念 完全备份每次把所有文件全部备份一边占用空间较大,增量备份就解决了这一问题它可以在你完全备份后如果做了修改或者需要备份的文件不大就用增量备份去解决这一问题 2:增量备份的特点 (1)二进制文件保存了所有更新或者可能更新数据库操作 (2)二进制文件在启动MySQL服务后开始记录 (3)只需要执行刷新就能创建新日志 增量备份实战演练 下面是生产环境中的案例,对它进行增量备份操作 1