开源数据库Mysql_DBA运维实战 (备份与还原)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 开源数据库Mysql_DBA运维实战 (备份与还原)

Mysql数据库的备份与还原🍃



备份对于数据库而言是至关重要的。当数据文件发生损坏、MySQL服务出现错误、系统内核崩溃、计算机硬件损坏或者数据被误删等事件时,使用一种有效的数据备份方案,就可以快速解决以上所有的问题。MySQL提供了多种备份方案,包括:逻辑备份、物理备份、全备份以及增量备份,你可以选择最适合自己使用的方式备份数据。


物理备份通过直接复制包含有数据库内容的目录与文件实现,这种备份方式适用于对重要的大规模数据进行备份,并且要求实现快速还原的生产环境。典型的物理备份就是复制 MySQL数据库的部分或全部目录,物理备份还可以备份相关的配置文件。但采用物理备份需要MySQL处于关闭状态或者对数据库进行锁操作,防止在备份的过程中改变发送数据。物理备份可以使用mysqlbackup对InnoDB数据进行备份,使用mysqlhotcopy对MyISAM数据进行备份。另外,也可以使用文件系统级别的cp、scp、tar、rsync等命令。


逻辑备份通过保存代表数据库结构及数据内容的描述信息实现
,如,保存创建数据结构以及添加数据内容的SQL语句,这种备份方式适用于少量数据的备份与还原。逻辑备份需要查询MySQL服务器获得数据结构及内容信息,因为需要查询数据库信息并将这些信息转换为逻辑格式,所以相对于物理备份数据结构及内容信息,因为需要查询数据库信息并将这些信息转换为逻辑格式,所以相对于物理备份而言比较慢。逻辑备份不会备份日志、配置文件等不属于数据库内容的资料。逻辑备份的优势在于不管是服务层面、数据库层面还是数据表层面的备份都可以实现,由于是以逻辑格式存储的,所以这种备份与系统、硬件无关。


全备份将备份某一时刻所有的数据,增量备份仅备份某一段时间内发生过改变的数据。通过物理或逻辑备份工具就可以完成完全备份,而增量备份需要开启MySQL二进制日志,通过日志记录数据的改变,从而实现增量差异备份。


mysqldump参数大全:https://blog.51cto.com/SongR/7092848

percona-xtrabackup官方站点:https://www.percona.com/


备份🍃


关于备份的原因⭐

防止丢失和误删

备份的目标⭐

1.数据的一致性

2.服务的可用性


备份技术⭐


物理备份/冷备份

直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但是不能恢复到不同的MySQL版本。

tar    cp     scp

拷贝数据的   优点    快  

                     缺点    服务停止 后才可拷贝


逻辑备份/热备份


备份的是建表,建库,插入等操作所执行SQL语句(DDL  DML DCL), 适用于中小型数据库。

mysqldump   mydumper

效率相对比较低


备份种类⭐

完全备份

土财主专用(金融)


增量备份

连续回复

f39744a8721d40ebb531feae43bfa59c.png


特点:

因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。


差异备份

跳跃恢复

34e81bee4b1d448aa435446a5466c1c6.png


特点:

占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。


还原🍃


percona-xtrabackup🍃



40af6eebb43b476c8dd0e8a10b881d61.png


Percona XtraBackup是一个开源的MySQL数据库热备工具,允许你在备份的时候不锁表。支持备份的存储引擎有InnoDB, XtraDB, MyISAM ;支持的MySQL版本 5.1 5.5, 5.6 , 5.7;无论是7X24的高负载数据库环境,还是低TPS的数据库环境,Percona XtraBackup都能完成备份而不影响生产环境


Percona XtraBackup是世界上唯一开源免费的MySQL热备工具,可以对InnoDB 和 XtraDB存储引擎的表进行非堵塞备份。


为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。



percona是一家老牌的mysql技术咨询公司。它不仅提供mysql的技术支持、培训、咨询,还发布了mysql的分支版本--percona Server。并围绕percona Server还发布了一系列的mysql工具。


特点


1 快速可靠完成备份

2 备份期间不会打断正在进行的事务

3 由于有压缩备份选项可以节省磁盘空间和网络带宽

4 自动的备份校验

5 更快的恢复速度,更短的恢复时间


备份过程


1.首先拷贝Innodb表的数据文件(利用两个进程 一个拷贝文件一个拷贝变化)

2.如果支持 backup lock,利用LOCK TABLE FOR BACKUP拷贝非Innodb表的数据文件(percona MySQL 5.6+ 支持oracle的MySQL支持吗?)

3.使用 LOCK BINLOG FOR  BACKUP 禁止所有改变Exec_Master_Log_Pos 或 Exec_Gtid_Set的操作。完成redo log的备份和获取binlog的日志中的坐标输出到备份目录。然后释放锁


2763c3084f7a4bcfbdffcb7998d563ed.png


实例


1-1 完全备份流程

#连接数据库,开始备份。

innobackupex --user=root --password='QianFeng@123' /xtrabackup/full

#查看备份目录。数据库,配置文件,日志文件


ls /xtrabackup/full/

ls /xtrabackup/full/2017-08-01_00-00-02/

#观看二进制日志位置

cat /xtrabackup/full/2017-08-01_00-00-18/xtrabackup_binlog_info

1-2 完全恢复流程

#停止数据库
systemctl stop mysqld

#清理环境(模拟损坏)

rm -rf /var/lib/mysql/*

rm -rf /var/log/mysqld.log

#生成回滚日志(指定备份点)

innobackupex --apply-log /xtrabackup/full/2017-08-01_00-00-18/

#恢复文件
innobackupex --copy-back /xtrabackup/full/2017-08-01_00-00-18/

#登陆验证

ls /var/lib/mysql

chown -R mysql.mysql /var/lib/mysql

systemctl start mysqld

mysql -uroot -p'QianFeng@123'
2-1 增量备份流程

#使用指定数据库

create database testdb;
use testdb;

create table test(id int);
insert into test values (1);
select * from test;

  mysql> select * from test;
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)


#完整备份(周一)


#增量备份(周二)

rm -rf /xtrabackup/*   ;
date 09010000
innobackupex --user=root --password='QianFeng@123' /xtrabackup
ll /xtrabackup/
date 09020000   更新时间
mysql -uroot -p'QianFeng@123' -e  'insert into testdb.test values (2)'
innobackupex --user=root --password='QianFeng@123' 
--incremental /xtrabackup/ 
--incremental-basedir=/xtrabackup/2017-09-01_00-00-04
basedir基于周一的备份。会生成一个今天的。
ls  /xtrabackup/


 

2-2 增量恢复流程


#停止数据库

systemctl stop mysqld

#清理环境

rm -rf /var/lib/mysql/*

rm -rf /var/lib/mysql/*

#周一

innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04 回滚合并

#周二

innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04

--incremental-dir=/xtrabackup/2017-09-02_00-00-26

#恢复

innobackupex --copy-back /xtrabackup/2017-09-01_00-00-06  

chown -R mysql.mysql /var/lib/mysql

systemctl start mysqld


登陆查询记录。请思考记录是第几天的,想回复3,怎么办

 

systemctl stop mysqld
innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04  
--incremental-dir=/xtrabackup/2017-09-03_00-00-27
# rm -rf /var/lib/mysql/*
innobackupex --copy-back /xtrabackup/2017-09-01_00-00-04 
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
mysql -uroot -p'QianFeng@123' -e 'select * from testdb.test'


mysqldump + binlog🍃




70e8f4fdc3be4bd493174ddaed7ac3c1.pngedbd888da14141819a546721218e71a4.pnge599a4a1228346a88949358f6de758ab.png34425ec2aabd4718af189db8fa236e1d.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
19 3
|
5天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
17 3
|
6天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
20 4
|
4天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
13 1
|
1天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
16 0
|
5天前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
30天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
60 3
Mysql(4)—数据库索引
|
15天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
18天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
74 4
|
24天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?