(四)Mysql 数据库备份恢复全攻略

一、数据库备份

  1. 数据库备份目的和数据库故障类型

    • 目的
      • 当发生故障时,将损失降到最低。
      • 保证能够快速从备份数据中恢复,确保数据稳定运行。
    • 故障类型
      • 程序错误:Mysql 服务器端程序故障无法使用。
      • 人为误操作:权限过大误删除数据。
      • 运算错误:数据增删改查询 sql 语句错误。
      • 磁盘故障:磁盘物理损坏存储数据无法读取。
      • 不可抗力自然灾害:地震、海啸、山洪、台风、火灾等。
  2. 物理逻辑角度备份

    • 物理备份
      • 冷备份:停止数据库服务,对数据存储位置进行备份,如/usr/local/mysql/data/
      • 热备份:两地三中心数据备份,包括主从复制、主主复制、MHA、MGR 等方式。
      • 温和备份:禁止写入数据允许读取,对数据库进行备份,最大限度保证数据的完整性。
    • 数据库备份策略
      • 完整备份:第一次使用备份时间长、速度慢、占用空间大。
      • 差异备份:在做完整备份后,对产生的数据使用差异备份,速度快、占用空间小。
    • 增量备份:针对数据库日志文件进行备份。
  3. 备份常见的方式

    • 冷备份:可以使用tarcp等命令。
    • 专用工具:MysqldumpMysqlhotcopy等。
    • 第三方工具:PXBXtrabackupinnobackupexxbstream等。
    • 二进制日志:方便将数据恢复到指定的日志或者指定时间范围内。

二、Mysql 数据库备份恢复

  1. Mysql 数据库冷备份

    • 停止数据库服务,使用命令[root@centos01 ~]# systemctl stop mysqld
    • 备份数据,使用命令[root@centos01 ~]# tar zcf /opt/2024_09_12_mysql_data.tar.gz /usr/local/mysql/data
    • 模拟误删除数据,使用命令[root@centos01 ~]# rm -rf /usr/local/mysql/data/*
    • 解压恢复数据,使用命令[root@centos01 ~]# tar zxf /opt/2024_09_12_mysql_data.tar.gz -C /opt/
    • 恢复数据,使用命令[root@centos01 ~]# cp -r /opt/usr/local/mysql/data/* /usr/local/mysql/data/将备份的数据恢复到 Mysql 数据根目录,然后使用[root@centos01 ~]# ls /usr/local/mysql/data/查看数据目录,最后使用[root@centos01 ~]# chown -R mysql:mysql /usr/local/mysql/data/修改数据所有者。
    • 启动服务,使用命令[root@centos01 ~]# systemctl start mysql
    • 查询恢复数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from hb3066.student;';
  2. mysqldump 备份

    • mysqldump选项:
      • --databases:备份数据库。
      • --all-database:备份所有数据库。
    • 备份指定的 hb3066 数据库的 student 表,使用命令[root@centos01 ~]# mysqldump -uroot -ppwd@123 hb3066 student >./student.sql,然后使用[root@centos01 ~]# less./student.sql查看备份文件。
    • 将 student 表恢复到 benet 数据库中,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'create database benet;';创建数据库 benet,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'show databases;';查看创建的 benet 数据库,然后使用[root@centos01 ~]# mysql -uroot -ppwd@123 benet <./student.sql恢复数据到 benet 数据库,最后使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.student;';查询恢复到 benet 数据库的 student 表。
    • 对数据库进行备份和恢复,使用命令[root@centos01 ~]# mysqldump -uroot -ppwd@123 --databases benet >./benet.sql备份 benet 数据库,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop database benet;';模拟删除 benet 数据库,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'show databases;';确认删除 benet 数据库,最后使用[root@centos01 ~]# mysql -uroot -ppwd@123 <./benet.sql恢复误删除的数据库 benet,并使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.student;';查询 benet 数据库的 student 表。
    • 备份所有数据库,使用命令[root@centos01 ~]# mysqldump -uroot -ppwd@123 --all-databases >./all_database.sql,然后使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop database benet;';模拟删除 benet 数据库,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'show databases;';确认删除,最后使用[root@centos01 ~]# mysql -uroot -ppwd@123 <./all_database.sql恢复数据库。
  3. 增量备份恢复作用和特点

    • 作用:对 Mysql 的数据库日志进行备份,发生误操作时通过日志实现数据恢复。
    • 特点:灵活性强,恢复简单方便。
    • 配置注意事项开启二进制日志:使用命令[root@centos01 ~]# vim /etc/my.cnf,在文件中添加[mysqld]log-bin=mysql-bin设置二进制日志文件名字。
    • 阅读二进制日志,使用命令[root@centos01 ~]# mysqlbinlog /usr/local/mysql/data/mysql-bin.000004
    • 切割日志生成新的二进制日志,使用命令[root@centos01 ~]# mysqladmin -uroot -ppwd@123 flush-logs
    • 插入最新数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123进入 Mysql 命令行,然后使用mysql> insert into benet.student values ('张三','男',16,'333333333333333333');mysql> insert into benet.student values ('张四','男',16,'335555533333333333');mysql> insert into benet.student values ('张五','男',19,'335999999333355555');插入数据。
    • 备份二进制日志,使用命令[root@centos01 ~]# cp /usr/local/mysql/data/mysql-bin.000005./
  4. 增量恢二进制日志恢复

    • 模拟删除数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 benet <./student.sql
    • 根据二进制日志文件恢复数据,使用命令[root@centos01 ~]# mysqlbinlog --no-defaults./mysql-bin.000005 | mysql -uroot -ppwd@123
  5. 增量二进制日志基于位置恢复数据

    • 位置选项
      • --stop-position:结束位置往前恢复。
      • --start-position:从前往后恢复。
    • 模拟删除数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 benet <./student.sql
    • 模拟从前往后恢复数据,使用命令[root@centos01 ~]# mysqlbinlog./mysql-bin.000005 | more读取二进制日志,然后使用[root@centos01 ~]# mysqlbinlog --start-position 4./mysql-bin.000005 | mysql -uroot -ppwd@123从前往后恢复。
    • 模拟从后往前恢复数据,再次模拟删除数据后,使用命令[root@centos01 ~]# mysqlbinlog --stop-position 620./mysql-bin.000005 | mysql -uroot -ppwd@123
  6. 增量二进制日志基于时间恢复数据

    • 时间选项
      • --start-datetime:起始时间往后恢复。
      • --stop-datetime:结束时间往前恢复。
    • 起始时间往后恢复数据,模拟删除数据后,使用命令[root@centos01 ~]# mysqlbinlog --start-datetime='2024-09-12 19:22:01'./mysql-bin.000005 | mysql -uroot -ppwd@123
    • 结束时间往前恢复数据,模拟删除数据后,使用命令[root@centos01 ~]# mysqlbinlog --stop-datetime='2024-09-12 19:29:07'./mysql-bin.000005 | mysql -uroot -ppwd@123

通过以上各种备份恢复方式,我们可以在不同的情况下有效地保护和恢复 Mysql 数据库中的数据,确保数据的安全性和可用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/881503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维工具之ansible

Ansible 1.什么是ansible? ​ ansible是基于ssh架构的自动化运维工具&#xff0c;由python语言实现&#xff0c;通过ansible可以远程批量部署等。 2.部署前提 ​ 控制端需要安装ansible,被控制端要开启ssh服务&#xff0c;并允许远程登录&#xff0c;被管理主机需要安装py…

卸载PLSQL及标准卸载流程

目录 1. 卸载PLSQL2. 删除注册表3. 删除数据信息 1. 卸载PLSQL 等待进度条走完 2. 删除注册表 regedit 右击删除 3. 删除数据信息 由于AppData是隐藏文件&#xff0c;需要勾选隐藏的项目。 重启电脑&#xff0c;PLSQL就卸载成功了。

【python面试宝典7】线程池,模块和包

目录标 题目37&#xff1a;解释一下线程池的工作原理。题目38&#xff1a;举例说明什么情况下会出现KeyError、TypeError、ValueError。题目39&#xff1a;说出下面代码的运行结果。题目40&#xff1a;如何读取大文件&#xff0c;例如内存只有4G&#xff0c;如何读取一个大小为…

javascript网页设计案例

一个简单的JavaScript网页设计案例&#xff0c;它将展示一个交互式的待办事项列表。用户可以添加新的待办事项&#xff0c;并且能够通过点击来标记为已完成或删除它们。 HTML (index.html) <!DOCTYPE html> <html lang"zh"> <head><meta char…

浏览器和客户端结合的erp系统,java控制浏览器操作自动登录,socket客户端通信进行表单赋值

java做一个toB的客户端操作系统&#xff0c;客户端和web的结合&#xff1b; 主要是使用java编写客户端代码&#xff0c;采用selenium控制浏览器&#xff0c;主要是用到selenium自动化测试的功能&#xff1b; javaEE 项目调用 selenium使用谷歌控件chromedriver.exe控制浏览器…

使用Java调用OpenAI API并解析响应:详细教程

使用Java调用OpenAI API并解析响应&#xff1a;详细教程 在现代应用程序中&#xff0c;API调用是一个非常常见的任务。本文将通过一个完整的示例&#xff0c;讲解如何使用Java调用OpenAI的ChatGPT API&#xff0c;并通过ObjectMapper处理JSON响应。本文的示例不仅适用于OpenAI…

【力扣 | SQL题 | 每日四题】力扣1581, 1811, 1821, 1831

今天的题目就1811这个比较难&#xff0c;其他非常的基础。 1. 力扣1581&#xff1a;进店却未进行过交易的顾客 1.1 题目&#xff1a; 表&#xff1a;Visits ---------------------- | Column Name | Type | ---------------------- | visit_id | int | | customer…

网络参考模型

OSI七层网络参考模型 OSI模型仅作为参考&#xff0c;现实中并不用&#xff0c;OSI模型的目的是为了解决主机之间的网络通讯。 1. 物理层&#xff1a; 物理层将由比特&#xff08;0和1&#xff09;组成的数据用不同的媒介&#xff08;电、光或其他形式的电磁波&#xff09;传输…

黑马软件测试第一篇_测试理论

概念 使用技术手段验证软件功能是否符合需求 测试种类 功能测试 自动化测试 接口测试 性能测试 按测试阶段划分 单元测试&#xff1a;针对程序源码进行测试 集成测试&#xff1a;又称接口测试&#xff0c;针对模块之间访问地址进行测试 系统测试&#xff1a;对整个系统进行…

京东零售数据湖应用与实践

作者&#xff1a;陈洪健&#xff1a;京东零售大数据架构师&#xff0c;深耕大数据 10 年&#xff0c;2019 年加入京东&#xff0c;主要负责 OLAP 优化、大数据传输工具生态、流批一体、SRE 建设。 当前企业数据处理广泛采用 Lambda 架构。Lambda 架构的优点是保证了数据的完整性…

Sqlite3入门看这一篇就够(超级详细,从零学起)

Sqlite3入门看这一篇就够(超级详细,从零学起) 一、SQLite3 基础1.1 SQLite3 的特点1.2 SQLite3 安装与使用1.2.1 debian操作系统安装SQLite31.2.2 window操作系统安装SQLite3二、下载 SQLite3三、配置 SQLite 环境四、使用 SQLite34.1. **创建数据库**:4.2. **常用命令**:…

YOLO的相关改进机制

我的面包多平台有多种关于YOLO的改进&#xff0c;大家尽早关注&#xff0c;不迷路

【宽字节注入】

字符编码 url 编码 GBK编码 utf8 编码 宽字节注入 php中的转译函数 宽字节注入介绍 练习 正常输入没有回显&#xff1a; 没有回显 usernameadmin&passwordadmin 闭合单引号&#xff0c;依旧没有回显 usernameadmin and 11%23&passwordadmin利用宽字节尝试闭合,依旧…

查看SQL Server授权序列号通过SQL查询查看安装日志文件使用PowerShell查询

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

滚雪球学Oracle[4.2讲]:PL/SQL基础语法

全文目录&#xff1a; 前言一、PL/SQL基础语法1.1 变量声明变量声明示例&#xff1a; 二、记录类型与集合类型的使用2.1 记录类型记录类型的定义与使用 2.2 集合类型 三、PL/SQL表与关联数组3.1 PL/SQL表&#xff08;嵌套表&#xff09;嵌套表的定义与使用 3.2 关联数组关联数组…

在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法

SD中的插件一般安装比较简单&#xff0c;但也有一些插件安装会比较难。比如我在安装SadTalker时&#xff0c;就遇到很多问题&#xff0c;一度放弃了&#xff0c;后来查了一些网上攻略&#xff0c;自己也反复查看日志&#xff0c;终于解决&#xff0c;不吐不快。 一、在Stable …

闪迪U盘误删的数据该怎么恢复呢?3个方法轻松解决

闪迪是一家全球知名的美国公司&#xff0c;也是全球最大的闪存数据存储卡产品供应商&#xff0c;其中&#xff0c;闪迪U盘作为其主要产品之一&#xff0c;因其便携性、大容量和高速传输能力而深受用户喜爱。然而&#xff0c;在平时存储重要数据的时候&#xff0c;会因为我们一系…

科普向 -- 什么是RPC

科普向 – 什么是RPC RPC&#xff0c;全称为远程过程调用&#xff08;Remote Procedure Call&#xff09;&#xff0c;是一种计算机通信协议&#xff0c;允许程序在不同的地址空间&#xff08;通常是不同的计算机&#xff09;上执行代码。RPC使得程序可以像调用本地函数一样调…

ElasticSearch备考 -- Update by query Reindex

一、题目 有个索引task&#xff0c;里面的文档长这样 现在需要添加一个字段all&#xff0c;这个字段的值是以下 a、b、c、d字段的值连在一起 二、思考 需要把四个字段拼接到一起&#xff0c;组成一个新的字段&#xff0c;这个就需要脚本&#xff0c; 这里有两种方案&#xff…

基于深度学习的常识知识库构建

基于深度学习的常识知识库构建是一项旨在自动化获取和组织广泛的常识性信息的技术&#xff0c;它通过深度学习模型从文本、图像、语音等多种数据源中提取出隐含的常识知识&#xff0c;并构建一个可以被机器理解和应用的知识库。这项技术在自然语言处理&#xff08;NLP&#xff…