【数据库运维】MYSQL备份恢复管理(上)

文章详细介绍了MySQL的备份类型,包括热备份、温备份、冷备份以及物理备份和逻辑备份的优缺点。讨论了完全备份、增量备份和差异备份,并提供了mysqldump工具的使用案例,包括单个数据库、表的备份和恢复。此外,还涉及了binlog日志的GTID新特性及其在数据库恢复中的应用。
摘要由CSDN通过智能技术生成

目录

MYSQL备份恢复管理

一,备份类型

二,逻辑备份优缺点

三,MySQL备份内容    

四,MySQL备份工具

五,MySQL备份策略

1,策略一:直接拷贝数据库文件

案例:直接拷贝备份数据库company

2,策略二:mysqldump备份数据库

案例一:备份恢复单个数据库

案例二:备份单个表

案例三:备份数据库的结构

案例四:mysqldump+binlog   完全+增量备份恢复

六,binlog日志的GTID新特性

1,什么是GTID

2,GTID的格式与存储

3,版本支持

4,如何开启

5, DDL和DML语句查看gtid

6,基于GTID进行查看binlog

案例:演示跨binlog文件截取日志。


MYSQL备份恢复管理

一,备份类型

热备份、温备份、冷备份 (根据服务器状态)

热备份:读、写不受影响;

温备份:仅可以执行读操作;

冷备份:离线备份;读、写操作均中止;

物理备份与逻辑备份 (从对象来分)

物理备份:复制数据文件;

逻辑备份:将数据导出至文本文件中;

完全备份、增量备份、差异备份 (从数据收集来分)

完全备份:备份全部数据;

                  备份速度慢,恢复快

增量备份:仅备份上次完全备份或增量备份以后变化的数据;

                  备份速度快,恢复慢;

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

                  备份速度慢,恢复快;

二,逻辑备份优缺点

(1)逻辑备份的优点:

在备份速度上两种备份要取决于不同的存储引擎

物理备份的还原速度非常快。但是物理备份的最小力度只能做到表

逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理

逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高

逻辑备份也对保持数据的安全性有保证

(2)逻辑备份的缺点:

  逻辑备份要对RDBMS产生额外的压力,而裸备份无压力

  逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩

  逻辑备份可能会丢失浮点数的精度信息

三,MySQL备份内容    

数据文件

日志文件(比如事务日志,二进制日志)

存储过程,存储函数,触发器

配置文件(十分重要,各个配置文件都要备份)

用于实现数据库备份的脚本,数据库自身清理的Crontab等……

四,MySQL备份工具

Mysql自带的备份工具

mysqldump 逻辑备份工具,支持所有引擎,MyISAM引擎是温备,InnoDB引擎是热备,备份速度中速,还原速度非常非常慢,但是在实现还原的时候,具有很大的操作余地。具有很好的弹性。

mysqlhotcopy 物理备份工具,但只支持MyISAM引擎,基本上属于冷备的范畴,物理备份,速度比较快。

文件系统备份工具

cp 冷备份,支持所有引擎,复制命令,只能实现冷备,物理备份。使用归档工具,cp命令,对其进行备份的,备份速度快,还原速度几乎最快,但是灵活度很低,可以跨系统,但是跨平台能力很差。

lvm 几乎是热备份,支持所有引擎,基于快照(LVM,ZFS)的物理备份,速度非常快,几乎是热备。只影响数据几秒钟而已。但是创建快照的过程本身就影响到了数据库在线的使用,所以备份速度比较快,恢复速度比较快,没有什么弹性空间,而且LVM的限制:不能对多个逻辑卷同一时间进行备份,所以数据文件和事务日志等各种文件必须放在同一个LVM上。而ZFS则非常好的可以在多逻辑卷之间备份。

其它工具

ibbackup 商业工具 MyISAM是温备份,InnoDB是热备份 ,备份和还原速度都很快,这个软件它的每服务器授权版本是5000美元。

xtrabackup 开源工具 MyISAM是温备份,InnoDB是热备份 ,是ibbackup商业工具的替代工具。

mysqlbackup ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称:mysqlbackup。

MySQL企业备份工具执行在线“热备“,无阻塞的MySQL数据库备份。全备份可以在所有InnoDB数据库上执行,而无需中断MySQL查询或更新。此外,支持增量备份,只备份自上次备份后有变化的数据。另外部分备份,支持特定的表或表空间按需要进行备份。

五,MySQL备份策略

1,策略一:直接拷贝数据库文件

直接拷贝数据库文件(文件系统备份工具 cp)(适合小型数据库,是最可靠的)

当你使用直接备份方法时,必须保证表不在被使用。如果服务器在你正在拷贝一个表时改变它,拷贝就失去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。

当你完成了备份时,需要重启服务器(如果关闭了它)或释放加在表上的锁定(如果你让服务器运行)。要用直接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台服务器主机的适当数据目录下即可。

要确保文件是MyIASM格式或两台机器有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。

准备工作

(1)在配置文件/etc/my.cnf中的[mysqld]下添加命令,使其支持中文

character-set-server=utf8

(2)重启服务

[root@node1 data]# systemctl restart mysqld

(3)查看配置后的结果

mysql> show variables like '%char%';

(4)创建数据库company;并使用

mysql> create database company;
mysql> use company;

(5)在数据库下建表emp

mysql> CREATE TABLE `emp`  (
       `empno` int(4) NOT NULL,
       `ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
       `job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
       `mgr` int(4) NULL DEFAULT NULL,
       `hiredate` date NOT NULL,
       `sai` int(255) NOT NULL,
       `comm` int(255) NULL DEFAULT NULL,
       `deptno` int(2) NOT NULL,
       PRIMARY KEY (`empno`) USING BTREE
     ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

(6)向表emp中插入数据

INSERT INTO `emp` VALUES (1001, '甘宁', '文员', 1013, '2000-12-17', 8000, NULL, 20);
INSERT INTO `emp` VALUES (1002, '黛绮丝', '销售员', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO `emp` VALUES (1003, '殷天正', '销售员', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO `emp` VALUES (1004, '刘备', '经理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO `emp` VALUES (1005, '谢逊', '销售员', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO `emp` VALUES (1006, '关羽', '经理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO `emp` VALUES (1007, '张飞', '经理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO `emp` VALUES (1008, '诸葛亮', '分析师', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事长', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO `emp` VALUES (1010, '韦一笑', '销售员', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO `emp` VALUES (1011, '周泰', '文员', 1006, '2007-05-23', 11000, NULL, 20);
INSERT INTO `emp` VALUES (1012, '程普', '文员', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO `emp` VALUES (1013, '庞统', '分析师', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1014, '黄盖', '文员', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO `emp` VALUES (1015, '张三', '保洁员', 1001, '2013-05-01', 80000, 50000, 50);

(7)在数据库company中查看表emp的信息

案例:直接拷贝备份数据库company

1、停止MySQL服务器。

[root@node1 data]# systemctl stop mysqld

查看mysql是否停止

[root@node1 data]# systemctl status mysqld

2、直接复制整个数据库目录。注意:使用这种方法最好还原到相同版本服务器中,不同版本可能不兼容。

(1)把当前所有的数据目录打包放在/tmp/database.tar.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值