mysqldump和mysqlbinlog实现完全备份和增量备份

本文详细介绍了MySQL的完全备份与增量备份的概念和实现方法,包括mysqldump工具的使用,如温备、热备支持,以及如何结合mysqlbinlog进行增量备份。通过示例展示了如何使用mysqldump进行部分备份、全库备份,以及如何利用mysqlbinlog进行增量备份和恢复操作。
摘要由CSDN通过智能技术生成

一、数据备份基础:

1、备份类型:

完全备份:整个数据集;

部分部分:只备份数据子集;     

增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据;

差异备份:仅备份最近一次完全备份以来变化的数据;

2、备份方式:

(1)、与存储引擎有关:热备份、温备份、冷备份:

      热备:读写操作均可执行;

      温备:读操作可执行;但写操作不成;

      冷备:读写操作均不可进行;

(2)、与存储引擎无关:物理备份、逻辑备份

      物理备份:直接复制数据文件进行备份;

      逻辑备份:从数据库中“导出”数据另存而进行的备份;

3、引擎支持的备份方式:

MyISAM:支持温备,不能热备

      InnoDB:支持热备          

4、备份时需要考虑的因素:

      持续时长、备份过程的时长、备份负载、恢复过程的时长        

5、备份什么

      数据

      二进制日志、innodb的事务日志

      代码(存储过程、存储函数、触发器、事件调度器)

      服务器的配置文件         

6、备份方案的设计:

      数据集:完全+增量;

      备份手段:物理、逻辑;     

7、备份工具:

mysqldump:逻辑备份工具,适用所有存储引擎,温备;完全备份、部分备份;对InnoDB存储引擎支持热备;

cp,tar等复制归档工具:物理备份工具,适用所有存储引擎;冷备:完全备份,部分备份;   

      mysql> SHOW BINARY|MASTER LOGS; 查看当前服务器所使用的二进制状态

      mysql> SHOW MASTER STATUS;查看当前正在使用的二进制状态

      mysql> SHOW BINLOG EVENTS IN '' FROMpos; 查看某一个指定的二进制日志中的文件内容

mysqlbinlog:查看二进制日志文件并利用其做增量备份

      mysqlbinlog [OPTION] log_file

           --start-position        从哪个位置开始做增量备份

           --stop-position        增量备份到哪个位置结束

           --start-datetime=    从哪个时间点开始做增量备份

           --stop-datetime=     增量备份到哪个时间点结束

二、备份工具详解:mysqldump、mysqlbinlog                      

1、逻辑备份工具:mysqldump,mydumper,phpMyAdmin

(1)、mysqldump:客户端命令,通过mysql协议连接至mysqld服务器

      man mysqldump

      mysqldump [options] [db_name [tbl_name...]]   

       shell> mysqldump [options] db_name[tbl_name ...]

            shell> mysqldump [options]--databases db_name ...

            shell> mysqldump [options]--all-databases

       备份的数据集:

           -A,--all-databases              备份所有数据库

           -B db_name,...                备份指定数据库

           --databases db_name,...       备份指定数据库

(2)引擎支持备份方式及实现:

MyISAM:只支持温备;必须锁定备份库,而后才能启动备份操作,

支持锁定的参数如下:

          --lock-all-tables, -x :锁定所有库的所有表

            --lock-tables, -l:对于每个单独的数据库,在启动备份之前锁定其所有表;

           注意:这两个参数对InnoDB表一样生效,实现温备;

      InonoDB:支持热备,可以直接启用备份,无需锁定表。

           --single-transaction

(3)、其他选项:

      -E,--events:备份指定数据库相关的所有event scheduler;

      --routines, -R:备份指定数据库相关的所有存储过程和存储函数;  

      --triggers:备份表的相关的触发器;

      --master-data :

           1)、记录为CHANGE MASTER TO语句,此语句不被注释;

           2)、记录为注释的CHANGE MASTER TO语句

            mysqldump--master-data=2 --all-databases > dumpfile

      --flush-logs:日志滚动

           锁定表完成后,执行flush logs命令;

2、备份建议:         

二进制日志文件不应该与数据文件放在同一磁盘;

建议还原时关闭二进制日志记录

      mysql> SHOW GLOBAL VARIABLES LIKE'%log%';

      sql_log_bin  ON

      mysql> SET sql_log_bin = OFF;

三、利用mysqldump做完全备份还原

1、mysqldump做部分备份和完全备份:                    

[root@www ~]# cphellodb.sql /root/

cp:"hellodb.sql" 与"/root/hellodb.sql" 为同一文件

[root@www ~]#file hellodb.sql

hellodb.sql:ASCII text, with very long lines

[root@www ~]#less hellodb.sql

-- MySQL dump10.13  Distrib 5.5.33, for Linux (x86_64)

--

-- CurrentDatabase: `hellodb`

CREATE DATABASE/*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `hellodb`;

-- Tablestructure for table `classes`

DROP TABLE IFEXISTS `classes`;

/*!40101 SET@saved_cs_client     =@@character_set_client */;

/*!40101 SETcharacter_set_client = utf8 */;

CREATE TABLE`classes` (

  `ClassID` tinyint(3) unsigned NOT NULLAUTO_INCREMENT,

  `Class` varchar(100) DEFAULT NULL,

  `NumOfStu` smallint(5) unsigned DEFAULT NULL,

  PRIMARY KEY (`ClassID`)

) ENGINE=MyISAMAUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

/*!40101 SETcharacter_set_client = @saved_cs_client */;

 

#修改MyISAM引擎为InnoDB,使其支持热备

[root@www ~]#sed -i 's/MyISAM/InonoDB/g' hellodb.sql

[root@www ~]#sed -i 's/InonoDB/InnoDB/g' hellodb.sql

[root@www ~]#less hellodb.sql

-- MySQL dump10.13  Distrib 5.5.33, for Linux (x86_64)

--

-- Host:localhost    Database: hellodb

--------------------------------------------------------

-- Serverversion       5.5.33-log

 

-- MySQL dump10.13  Distrib 5.5.33, for Linux (x86_64)

--

-- Host:localhost    Database: hellodb

--------------------------------------------------------

-- Serverversion       5.5.33-log

 

DROP TABLE IFEXISTS `classes`;

/*!40101 SET@saved_cs_client     =@@character_set_client */;

/*!40101 SETcharacter_set_client = utf8 */;

CREATE TABLE`classes` (

  `ClassID` tinyint(3) unsigned NOT NULLAUTO_INCREMENT,

  `Class` varchar(100) DEFAULT NULL,

  `NumOfStu` smallint(5) unsigned DEFAULT NULL,

  PRIMARY KEY (`ClassID`)

) ENGINE=InnoD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值