广告
返回顶部
首页 > 资讯 > 数据库 >Mysql(五)-数据恢复
  • 466
分享到

Mysql(五)-数据恢复

2024-04-02 19:04:59 466人浏览 独家记忆
摘要

########################################################################################增量备份与增量恢复 一、启用b

########################################################################################
增量备份与增量恢复

一、启用binlog日志实现增量备份
1、binlog日志介绍:
又被称为二进制日志,是Mysql数据库服务日志文件的一种。

好处:
记录 除查询以外的所有sql命令
可用于数据恢复
配置mysql主从同步的必要条件

############################################################
2、启用binlog日志
#vim /etc/my.cnf
[mysql]
server_id=id号 //数值范围1-255,不能重复
log-bin[=dir/name]
//日志存放默认位置为/var/lib/mysql/,如果需要自己指定日志文件的名称以及存放位置,需要写成中括号内的格式。
注意:自己指定存放的位置的目录需要修改文件属主及属组。chown -R mysql:mysql 存放路径。
binlog_fORMat="mixed" //日志格式

#systemctl restart mysqld

#ls /var/lib/mysql/

主机名-bin.000001 //默认的binlog日志文件名
主机名-bin.index //记录当前已有的binlog日志文件名

日志格式:
statement:每一条修改数据的命令都会记录在binlog日志中。
row:不记录sql命令的上下文信息,仅保存哪条记录被修改。
mixed:前两种的综合。

#############################################################

3、查看binlog日志:
#mysqlbinlog binlog日志文件名

#############################################################

4、binlog日志文件记录sql命令的方式:
时间点 //根据修改的时间记录
pos点 //根据数据偏移量记录

#############################################################

5、恢复数据

格式:
mysqlbinlog 选项 binlog日志文件名 | mysql -uroot -p密码

选项:
--》根据时间点恢复
--start-datatime="yyyy-mm-dd hh:mm:ss" --stop-datatime="yyyy-mm-dd hh:mm:ss"

--》根据偏移量恢复 --start-position=数字 --stop-position=数字

##############################################################

6、生成日志与删除日志
--》生成日志
mysql> flush logs;
#mysql -uroot -p123456 -e "flush logs"
#systemctl restart mysqld

--》删除日志
mysql>reset master; //删除所有
mysql>purge master logsto "日志文件名" //删除指定日志之前的所有日志
mysql>purge master logs to "mysql11-bin.000003" //1和2 已经删除,但是3以后的保留

##################################################################

7、举例
启用binlog日志
重启服务
写入数据
#mysql -uroot -p123456
show master status; //查看当前使用的binlog日志
create database db1;
create table db1.t1(id int);
insert into table db1 values(100);
insert into table db1 values(200);
select * from db1.t1; //查看数据是否插入成功
删除数据
drop databases db1;
查看日志
mysqlbinlog /var/lib/mysql/mysql11-bin.000001
//通过查询日志,create database db1; 建表的偏移量at 296
//insert into table db1 values(200); 插入这条记录的偏移量 at 1097

恢复数据(通过偏移量)
mysql>show databases; //确认库已经删除
mysql>quit
#mysqlbinlog --start-position=296 --stop-position=1097 \
/var/lib/mysql/mysql11-bin.000001 | mysql -uroot -p123456

查看结果
mysql>show databases;
mysql>select * from db1.t1;

###################################################################

二、使用第三方软件percona提供的命令innobackupex做增量备份

物理备份缺点:
备份时间长,冗余备份,浪费村数空间
跨平台性差

mysqldump备份缺点:
效率低,备份和还原时间慢
备份过程中,数据插入与更新会被挂起

percona优点:
备份过程不表,适合生产环境
支持InnoDB/XtraDB
以Perl脚本封装Xtrabackup还支持MyISAM

##########################################################

1、安装软件包(网上下载)
libev-4.15-1.el6.rf.x86_64.rpm
percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

###########################################################

2、innobackupex基本选项

--host //主机名
--user //用户名
--passWord //登陆密码
--databases //数据库
--no-timestamp //备份文件不用日期命名

--apply-log //回滚日志(准备还原)
--redo-only //日志回滚合并(最后一次的回滚合并不需要添加此选项)
--incremental 目录名 //增量备份
--incremental-basedir=目录名 //增量备份时指定上一次备份数据村存储的文件名
--export //导出表信息
import //导入表空间

##############################################################

3、完全备份
#innobackupex --user root --password 123456 --databases="系统库 存储库" 备份目录名 --no-timestamp

#rm -rf /var/lib/mysql
#mkdir /var/lib/mysql

完全恢复数据
#innobackup --user root --password 123456 --databases="系统库 存储库" --apply-log 备份目录名
//回滚日志
#innobackupex --user root --password 123456 --databases="系统库列表 存储数据库" --copy-back 备份目录名
//恢复数据

#ls /var/lib/mysql/
#chown -R mysql:mysql /var/lib/mysql
#systemctl stop mysqld
#systemctl start mysqld
#mysql -uroot -pabc123
mysql>show databases;

###############################################################

4、增量备份

增量备份之前,通常先作一次完全备份

增量备份第一次:
#innobackupex --user root --password 123456 --databases="系统库列表 存储数据库" --incremental 目录名1 --incremental-basedir=完全备份名 --no-timestamp

增量备份第二次:
#innobackupex --user root --password 123456 --databases="系统库列表 存储数据库" --incremental 目录名2 --incremental-basedir=目录名1 --no-timestamp

//相当于你的下一次备份,参照的时上一次的备份文件。

5、删除信息

rm -rf /var/lib/mysql
mkdir /var/lib/mysql

6、增量恢复日志文件

#innobackupex --user root --password 123456 --databases=“系统库 存储库” --apply-log --redo-only 完全备份目录名
#innobackupex --user root --password 123456 --databases=“系统库 存储库” --apply-log --redo-only 完全备份目录名
--incremental-dir=目录名1
#innobackupex --user root --password 123456 --databases=“系统库 存储库” --apply-log --redo-only 完全备份目录名
--incremental-dir=目录名2
#cat 备份目录/xtraback_checkpositions //文件可以查看日志序列号

7、恢复数据
#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --copy-back 完全备份目录名

#chown -R mysql:mysql /var/lib/mysql

8、重启服务查看
#systemctl stop mysqld
#systemctl start mysqld

###############################################################################
9、增量举例

/allbak //自定义完全备份的目录名
/new1 //自定义第一次增量备份目录名
/new2 //自定义第二次增量备份目录名

//无需自己创建

完全备份
#innobackupex --user root --password 123456 --databases="系统库列表 gamedb" /allbak
--no-timestamp

增量第一次:
mysql>create table gamedb.t2(id int);
mysql>insert into gamedb.t2 values(200);

#innobackupex --user root --password 123456 --databases="系统库列表 gamedb" --incremental /new1 --incremental-basedir=/allbak --no-timestamp

增量第二次:
mysql>create table gamedb.t3(id int);
mysql>insert into gamedb.t3 values(300);

#innobackupex --user root --password 123456 --databases="系统库 gamedb" --incremental /new2
--incremental-basedir=/new1 --no-timestamp

删除数据
rm -rf /var/lib/mysql
mkdir /var/lib/mysql

恢复日志文件
#innobackupex --user root --password abc123 --databases="系统库列表 gamedb" --apply-log --redo-only
/allbak
//回滚日志
#cat /allbak/xtraback_checkpositions //文件可以查看日志序列号

#innobackupex --user root --password abc123 --databases="系统库列表 gamedb" --apply-log --redo-only
/allbak --incremental-dir=/new1
//增量回滚/new1

#cat /new1/xtraback_checkpositions //文件可以查看日志序列号
#cat /allbak/xtraback_checkpositions //文件可以查看日志序列号
//对比可以发现,回滚成功,它们的序列号是首尾相接的

#innobackupex --user root --password abc123 --databases="系统库列表 gamedb" --apply-log --redo-only
/allbak --increment-dir=/new2
//增量回滚/new2

#cat /new2/xtraback_checkpositions //文件可以查看日志序列号
#cat /allbak/xtraback_checkpositions //文件可以查看日志序列号
//对比可以发现,回滚成功,它们的序列号是首尾相接的

恢复数据
#innobackupex --user root --password abc123 --databases="系统库列表 gamedb" --copy-back /allbak

查看
#systemctl stop mysqld
#systemctl start mysqld

##############################################################################################

10、恢复单个表:

10.1 备份库
#innobackup --user root --password 123456 --databases="gamedb" /gamedbbak

10.2 删除单个表
mysql> drop table gamedb.t1;

10.3 按照原表结构创建表
mysql> create table gamedb.t1(id int);

10.4 导出表信息
#innobackup --user root --password abc123 --databases=“gamedb.t1” --apply-log --export /gamedbbak

10.5 删除表空间
mysql>alter table gamedb.t1 discart tablespace;

10.6 将导出的表信息,拷贝到对应的数据库目录下
#cd /gamedbbak/gamedb
#cp t1.{exp,ibd,cfg} /var/lib/mysql/gamedb/
#ls /var/lib/mysql/gamedb/t1.
#chown mysql:myql /var/lib/mysql/gamedb/t1.

10.6 导入表空间
alter table t1 import tablespace;

10.7 验证
select * from gamedb.t1;

###########################################################################################################

4、

您可能感兴趣的文档:

--结束END--

本文标题: Mysql(五)-数据恢复

本文链接: https://www.lsjlt.com/news/36414.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql(五)-数据恢复
    ########################################################################################增量备份与增量恢复 一、启用b...
    99+
    2022-10-18
  • Mysql—数据恢复
    根据.frm和.ibd文件恢复表结构和数据...
    99+
    2016-12-20
    Mysql—数据恢复
  • mysql数据库恢复
    目录1.数据库恢复基本事项2.利用source命令恢复数据库2.1.使用source命令恢复数据库的说明2.2.恢复演示3.利用MySQL命令恢复(标准)3.1.使用MySQL命令恢复基本实践3.2.使用开发人员提交的SQL语句恢...
    99+
    2018-08-16
    mysql数据库恢复
  • MySQL数据怎么恢复
    这篇文章主要讲解了“MySQL数据怎么恢复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据怎么恢复”吧!1、前言数据恢复的前提的做好备份,且开启...
    99+
    2022-10-18
  • MySQL 恢复误删数据
    文章目录 1、查看是否启用 binlog 日志2、查看所有 binlog 日志3、查看正在使用的日志4、查找日志所在文件夹5、log 日志转 sql6、delete 转 insert 恢复误删...
    99+
    2023-09-05
    mysql 数据库
  • 使用XtraBackup恢复|备份 Mysql数据库 -- 数据恢复篇
                                 ...
    99+
    2022-10-18
  • 《MySQL数据库》MySQL备份恢复
    前言 MySQL数据库最重要的部分就是数据,所以保证数据不被损坏尤为重要,大家都知道911事件,当时非常多的数据丢失,导致经济混乱。接下来我们就来讲讲MySQL是如何保障数据完整,应对特殊情况,如何恢复等。 备份 备份检查:保证备份没有问题...
    99+
    2016-12-27
    《MySQL数据库》MySQL备份恢复 数据库入门 数据库基础教程 数据库 mysql
  • 如何恢复MySQL数据库数据
    这篇文章将为大家详细讲解有关如何恢复MySQL数据库数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、恢复方案1、数据量不是特别大,可以将mysqldu...
    99+
    2022-10-18
  • MySQL 数据备份和数据恢复
    目录 一、数据备份 1、概述 2、MySQLdump命令备份 1)备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4)备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数...
    99+
    2023-09-01
    mysql 数据库
  • 通过binlog恢复mysql数据
    通过binlog恢复mysql数据 基本流程 一、确定要恢复的时间点 确定要恢复到的时间点,可以使用以下命令查看binlog相关信息;或者根据误操作的时间来决定要恢复的时间点。 # 查询 BINLO...
    99+
    2023-09-12
    mysql 数据库
  • MySQL数据库误删恢复
    前言        经常听说删库跑路这真的不只是一句玩笑话,若不小心删除了数据库,事情很严重。你一个不小心可能会给公司删没。建议研发不要直连生成环境,一般的话都会分配账号权限,生产环境的账号尽量是只读,以防你一个不经意给库或表删除。一定...
    99+
    2023-09-02
    数据库 sql
  • MySQL如何恢复数据库
    MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。详细介绍:1、物理备份恢复,物理备份是指将整个数据库的文件系统备份到另一个位置,步骤为先停止MySQL服务,将备份文件复制回数据库...
    99+
    2023-10-22
    mysql 数据库
  • MySQL数据备份与恢复
        一、简介    数据在当今的互联网行业中非常重要,掌握了数据能够从中发现价值,所以数据对于公司来书再重要不过了,当我们...
    99+
    2022-10-18
  • MySQL通过binlog恢复数据
    目录mysql 日志文件binlog日志binlog日志开启日志开启方式:binlog 日志格式binlog日志查看工具:mysqlbinlog使用binlog恢复数据线下实操小结mysql 日志文件 任何成熟软件...
    99+
    2022-05-16
    MySQL binlog MySQL 恢复数据
  • mysql数据备份及恢复
    这篇文章主要介绍“mysql数据备份及恢复”,在日常操作中,相信很多人在mysql数据备份及恢复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql数据备份及恢复”的疑惑...
    99+
    2022-10-18
  • 怎么恢复MySQL数据库
    今天就跟大家聊聊有关怎么恢复MySQL数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。数据库恢复是指以备份为基础,与备份相对应的系统维护和管理操...
    99+
    2022-10-18
  • MySQL——通过binlog恢复数据
    目录 1.binlog基本概念 2.MySQL开启binlog 3.使用binlog日志恢复数据 3.1.恢复前准备工作 3.2.数据恢复 3.2.1.通过mysqlbinlog将binlog转为sql,以方便查询具体位置 3.2.2.查看...
    99+
    2023-09-01
    mysql
  • Oracle备份与恢复(五)
    备份:   定义:      把数据库复制到转储设备的过程。      转储设备:  ...
    99+
    2022-10-18
  • 基于 MyFlash 的 MySQL 数据恢复
    以前mysql回复误删数据用的比较多的是基于原始binlog或binlog2sql,昨天又遇到一例开发误删的问题,这次用用美团开源的工具 MyFlash试试。用下来效果还是不错的,基于库 or 表的过滤可以有效的筛选出来目标sql。 ...
    99+
    2014-07-10
    基于 MyFlash MySQL 数据恢复
  • MySQL数据库备份和恢复
    目录 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 备份注意要点 还原要点 备份类型: 备...
    99+
    2015-03-06
    MySQL数据库备份和恢复
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作