Mysql5.7—运维常用备份方式(超全)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xsboke.blog.51cto.com/12096269/1925641   小生博客:http://xsboke.

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xsboke.blog.51cto.com/12096269/1925641

   小生博客:http://xsboke.blog.51cto.com

   小生 Q Q1770058260

  

 

                             -------谢谢您的参考,如有疑问,欢迎交流


一、 Mysqldump备份结合binlog日志恢复

使用 mysqldump 进行全库备份,并使用 binlog 日志备份,还原时,可以使用 binlog 日志恢复到备份前的任意位置或时间

  1. Binlog简介

  • 主要用于主从复制和恢复数据库,使用mysqlbinlog命令查看binlog二进制日志文件

  • 下面我们通过一个实例,演示,binlog是怎么恢复到某个时间点的

wKioL1kYY-_xpUiJAAD_sLj9r6Q054.jpg

重启mysql服务使配置生效

wKiom1kYY_qC4IulAAAnPBJQrHQ303.jpg

验证binlog是否开启成功

wKiom1kYZAbhu8EUAABVSRL_FIM435.jpg

创建测试使用的数据库和表并插入数据

wKioL1kYZBrjaUXhAADqpt2PoCs834.jpg

为了方便实验,我们将有误操作的记录,放到一个新的binlog日志文件中

wKiom1kYZCSxExz-AAC-f3ARAJk085.jpg

现在发现删除zhangsan是误操作,现在需要将zhangsan恢复

,去查看binlog日志文件,根据位置实现将表还原到没有删除zhangsan时,然后跳过删除zhangsan的位置,恢复tom

wKiom1kYZDbRspBiAALAQ2oLiho665.jpg

可以做一个分析图,用来分析出,恢复时指定的区号

wKioL1kYZELjL0XMAACKwbi8DIg283.png

  • 从此图可以分析出,mysql-bin.00001文件全部恢复即可,

  • Mysql-bin.00002219-416区是不需要恢复的

下面开始模拟

首先根据需求导出部分binlog日志

wKioL1kYZHXyJpEfAADW2057xHc342.jpg

模拟删除数据库

wKiom1kYZH7T37IYAABPNUUMa_U660.jpg

通过binlog日志恢复

wKiom1kYZInTFuNQAADY3KsTHn0915.jpg

验证

wKioL1kYZJbwCKfyAABerflHfu0433.jpg

  2. Mysqldump简介

  • mysqldumpmysql用于备份和数据转移的一个工具;

  • sql语句封装到文件,文件包含所有重建你的数据库所需要的 SQL命令如CREATE DATABASECREATE TABLEINSERT等等,可以用来实现轻量级的快速迁移或恢复数据库

  • mysqldump 是将数据表导成 SQL 脚本文件,可以在不同的 MySQL 版本之间使用

  • mysqldump用于数据量很小的备份(大概几个G),当数据量大的时候不建议使用

  • 导出对象:单个表、多个表、单个数据库、多个数据库、所有数据库

   1) 示例

     导出指定数据库或单个表

     wKioL1kYZOqSNq02AABvYNpgW3Q387.jpg

     wKiom1kYZOuzEwyrAABqht1lSec402.jpg

     导出多个数据库

     wKiom1kYZQmTKLPGAAB2r88ndNw143.jpg

     导出所有

     wKioL1kYZRuhfC9RAABvlaX7FRc477.jpg

     完整备份数据库并重新开启一个新binlog

     wKioL1kYZTexcydLAACB-73Kz7c576.jpg

     导入

     wKiom1kYZUaRHTmXAAAospwbMco222.jpg

   2)Mysqldump备份方案

    周日凌晨1点全库备份;

     周一到周六凌晨每隔4个小时增量备份一次;

     设置crontab任务,每天执行备份脚本;



     首先设置cronta任务

     wKiom1kYZZfDbJzgAACPL9M5DGs811.jpg

     编辑mysqlfullbackup脚本

     wKiom1kYZarx_GaAAAFtu81Lum0060.jpg

     编辑mysqldailybackup.sh脚本内容

     wKiom1kYZcPjpg1bAAM4iS8U9Ic666.jpg

二、 Xtrabackup备份工具

  1. Xtrabackup简介

  • Xtrabackup属于物理备份,支持物理热备,开源,性能比ibbackup

  • Xtrabackup支持增量备份、完整备份、差异备份,与binlog日志组合

  • Xtrabackup提供两个命令行工具:

  • Xtrabackup:可以备份innodbxtraDB存储引擎的表

  • Innobackupex:支持备份innodbmyisam表的存储引擎,使用perl语言编写,执行过程中会执行一个读锁

  2. 注意事项

  • 因为xtrabackup属于物理热备,所以在备份的时候可能出现已经提交但是没有将数据写入数据文件或没有提交的事务,所以在恢复时需要解决这个问题,使用—applog-log参数可以将已经备份的数据中已提交的数据写入数据文件,未提交的数据全部回滚,以保证数据的唯一性

  • 数据恢复时需要删除data下的所有文件

  • 还原后,需要设置恢复文件的属主属组,mysql才能正常运行

  3. Xtrabakup的优点

  • 备份速度快,可以用于较大的数据库,弥补mysqldump的部分不足

  • 支持热备份,备份过程不打断事务的执行

  • 支持压缩备份节约磁盘空间和流量

  • 自动实现备份检验

  • 还原速度快

  4. Xtrabackup安装

首先下载xtrabackup并且进行安装

Wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

   wKiom1kYZvzzRWFYAAA0G1pDzA8603.jpg

   wKiom1kYZxLR0GwOAAB3BLO6Z6k338.jpg

   

   安装相关插件

   wKioL1kYZzaCgtUsAAAw1aRyd2U798.jpg

   安装percona-toolkit

Wget https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm

wKioL1kYZ0jDkD55AAEJ_W9Jvy8445.jpg

  5. Xtrabackup+binkog

   Xtrabackup+binlog可以实现时间点还原

   1)首先创建备份目录

     wKiom1kYZ2rj6N3EAAAm3l4mp6A347.jpg

   2)注意开启binlog日志

     wKiom1kYZ4KS5fH5AAA5W-wI44s881.png

   3)执行完整备份(使用xtrabackup的“流”及“压缩备份”功能)

     wKioL1kYZ6ngZY67AACx5OqEegc007.jpg

   4)查看备份

     wKioL1kYZ7nh9PCOAAFou4_4NSA889.jpg

5)在生产环境中,还会备份binlog日志

可以使用—start-position—stop-position以跳过误删除的位置,去备份binlog日志,这里不再演示

6)Xtrabackup还原

 还原前需要解决数据一致性的问题

    wKioL1kYZ-WxT5LtAAFI3K2NCVY763.jpg

    开始还原

    wKiom1kYZ_bzI3APAABv89bRpwE653.jpg

    为还原的文件设置属主属组

    wKioL1kYaAGwrsFlAAD3arGUhB0718.jpg

    wKiom1kYaAmBOIqMAAA2-cltvW0437.jpg

    最后如果需要恢复到某个时间点,可以利用备份的binlog日志文件恢复

  6. 在生产环境中使用的备份用户可能不是root,这时需要注意权限了

   wKioL1kYaCPh_0j_AAE5_9vh1mM844.jpg


本文出自 “小生blog” 博客,请务必保留此出处http://xsboke.blog.51cto.com/12096269/1925641


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
存储 关系型数据库 MySQL
RDS MySQL 数据库运维简述
从运维的视角,汇总云数据库RDS MySQL使用的避坑指南。文章初版,维护更新,欢迎指点。
991 3
|
25天前
|
运维 关系型数据库 MySQL
运维|MySQL 数据库被黑,心力交瘁
前一阵有一个测试用的 MySQL 数据库被黑了,删库勒索的那种,这里记录一下事情经过,给自己也敲个警钟。
35 2
|
5月前
|
SQL 运维 关系型数据库
MySQL数据库运维第一篇(日志与主从复制)
MySQL数据库运维第一篇(日志与主从复制)
|
1月前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
46 1
|
3月前
|
存储 SQL 运维
运维开发.MySQL.范式与反范式化
运维开发.MySQL.范式与反范式化
56 1
|
3月前
|
运维 关系型数据库 MySQL
在Linux中,MySQL数据库日常运维中涉及哪些关键任务?
在Linux中,MySQL数据库日常运维中涉及哪些关键任务?
|
3月前
|
运维 关系型数据库 MySQL
"MySQL运维精髓:深入解析数据库及表的高效创建、管理、优化与备份恢复策略"
【8月更文挑战第9天】MySQL是最流行的开源数据库之一,其运维对数据安全与性能至关重要。本文通过最佳实践介绍数据库及表的创建、管理与优化,包括示例代码。涵盖创建/删除数据库、表结构定义/调整、索引优化和查询分析,以及数据备份与恢复等关键操作,助您高效管理MySQL,确保数据完整性和系统稳定运行。
380 0
|
3月前
|
SQL 存储 关系型数据库
运维笔记.MySQL.基于mysqldump数据备份与恢复
运维笔记.MySQL.基于mysqldump数据备份与恢复
53 0
|
5月前
|
SQL 存储 关系型数据库
精通MySQL:从基础到高级运维实战
第一章:MySQL入门与基础 1.1 MySQL概述 简要介绍MySQL的历史、发展及其在数据库领域的地位
|
6月前
|
SQL 运维 关系型数据库
MySQL 运维篇
该文本涵盖了数据库管理的关键方面,包括DDL(CREATE, DROP, ALTER等)用于定义数据库结构,DML(INSERT, DELETE, UPDATE, SELECT)用于数据操作,DCL(GRANT, REVOKE, COMMIT, ROLLBACK)涉及权限管理和事务控制,以及DQL用于数据查询。还介绍了MySQL的安装过程,包括源码编译和二进制安装方法,以及启动服务、设置初始密码和修改用户密码的步骤。
99 1