Mysql运维管理-初步增量恢复mysql数据库10

初步增量恢复MySQL数据实战

a.配置my.cnf配置文件

先把my.cnf配置文件中的log-bin参数打开重命名为mysqlbin_zbf,这样在mysql数据库中更新一个东西就会在这个日志里更新。这样会导致这个日志很大,没关系系统可以自动分割还可以手动分割。

[[email protected] var]# vim /etc/my.cnf
…省略……
# Uncomment the following if you want to log updates
log-bin=mysqlbin_zbf
# binary logging format - mixed recommended
……省略…

b.配置完my.cnf重启mysql

[[email protected] var]# /etc/init.d/mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!

c.重启之后就可以在mysql的数据文件下看见mysqlbin_zbf.000001日志文件。

它记录了对数据有更改操作的语句,之前如果有就不用配置log-bin。

[[email protected] data]# ls
ibdata1  ib_logfile1  mysqlbin_zbf.000001  mysql.err  performance_schema
ib_logfile0  mysqlmysqlbin_zbf.index   mysql.pid  zbf

d.重启完登录mysql,将数据库数据破坏模拟增量恢复。

(1)查看表数据

mysql> select * from student;
+----+-----------+-----+--------+
| id | name  | age | dept   |
+----+-----------+-----+--------+
|  1 | zbf666|  29 | linux  |
|  2 | lisi  |  28 | mysql  |
|  3 | zhangsan  |  21 | python |
|  4 | woshishei |  24 | java   |
+----+-----------+-----+--------+

(2)将name字段的值全部修改为luhan

mysql> update student set name=‘luhan‘;
Query OK, 4 rows affected (0.03 sec)
Rows matched: 4  Changed: 4  Warnings: 0

(3)再查看表数据

mysql> select * from student;
+----+-------+-----+--------+
| id | name  | age | dept   |
+----+-------+-----+--------+
|  1 | luhan |  29 | linux  |
|  2 | luhan |  28 | mysql  |
|  3 | luhan |  21 | python |
|  4 | luhan |  24 | java   |
+----+-------+-----+--------+
4 rows in set (0.00 sec)

(4)然后退出mysql用mysqlbinlog查看一下mysqlbin_zbf.000001日志文件

[[email protected] ~]# mysqlbinlog /usr/local/mysql/data/mysqlbin_zbf.000001
……省略……..
use `zbf`/*!*/;
SET TIMESTAMP=1517061765/*!*/;
update student set name=‘luhan‘
/*!*/;
# at 267
……省略….

我们看到update student set name=‘luhan‘这条语句,在恢复的时候我们要把这条语句删掉,再把数据导进去。因为恢复数据的时候还会往里写数据导致数据缺失,所以先把之前的日志文件备份出来.恢复数据,最好的方法就是停库,不能停的话最好的办法就是切割。

[[email protected] data]# cp mysqlbin_zbf.000001 /opt/ 

(5)模拟不能停止数据库的思路,停止数据库是最好的。切割成另外一个。

[[email protected] data]# mysqladmin -uroot -p123456 flush-log
[[email protected] data]# ll
总用量 28708
-rw-rw----. 1 mysql mysql 18874368 1月  27 22:18 ibdata1
-rw-rw----. 1 mysql mysql  5242880 1月  27 22:18 ib_logfile0
-rw-rw----. 1 mysql mysql  5242880 1月  11 20:30 ib_logfile1
drwx------. 2 mysql root  4096 1月  11 20:08 mysql
-rw-rw----. 1 mysql mysql  547 1月  27 22:29 mysqlbin_zbf.000001
-rw-rw----. 1 mysql mysql  107 1月  27 22:29 mysqlbin_zbf.000002
-rw-rw----. 1 mysql mysql   44 1月  27 22:29 mysqlbin_zbf.index
-rw-r-----. 1 mysql root  7937 1月  27 21:57 mysql.err
-rw-rw----. 1 mysql mysql5 1月  27 21:57 mysql.pid
drwx------. 2 mysql mysql 4096 1月  11 20:08 performance_schema
drwx------. 2 mysql mysql 4096 1月  27 21:32 zbf

我们看切割完了就出现了mysqlbin_zbf.000002,切割完之后写入数据就往mysqlbin_zbf.000002里面写了,现在我们要处理的就是mysqlbin_zbf.000001了。

(6)生成bin.sql文件

在企业中如果有多个bin-log就把所有的做恢复,同时也会有很多库和表,bin.sql里面写入的是所有库和表修改过得数据,恢复bin.sql里面的数据时就会导致主键重复,不能插入数据。所以要指定库和表。

[[email protected] data]# mysqlbinlog -d zbf mysqlbin_zbf.000001 >bin.sql

编辑bin.sql可以发现在什么时候操作数据库导致数据丢失,我们找到update这条语句,将update这条语句删掉。

[[email protected] data]# vim bin.sql
……省略……
#180127 23:29:00 server id 1  end_log_pos 767   Query   thread_id=1 exec_time=0 error_code=0
SET TIMESTAMP=1517066940/*!*/;
update student set name=‘luhan‘
/*!*/;
……省略…
# at 767

(7)开始增量恢复

[[email protected] data]# mysql -uroot -p123456 zbf <bin.sql
[[email protected] data]# mysql -uroot -p123456 -e "select * from zbf.student";
+----+-----------+-----+--------+
| id | name  | age | dept   |
+----+-----------+-----+--------+
|  1 | zbf666|  29 | linux  |
|  2 | lisi  |  28 | mysql  |
|  3 | zhangsan  |  21 | python |
|  4 | woshishei |  24 | java   |
+----+-----------+-----+--------+

原文地址:https://www.cnblogs.com/zywu-king/p/8563056.html

时间: 2024-10-14 02:47:39

Mysql运维管理-初步增量恢复mysql数据库10的相关文章

Mysql DBA 高级运维学习之路-初步增量恢复mysql数据库

1.开启mysql日志(1)配置my.cnf配置文件 先把my.cnf配置文件中的log-bin参数打开,并将log-bin的设为mysqlbin_linzhongniao,这样在mysql数据库中更新数据时就会记录到这个日志文件中.这样有一个缺点会导致日志文件很大,但是并没关系,系统可以自动分割我们还可以手动分割.查看mysql日志文件用mysqlbinlog [[email protected] ~]# grep "log-bin" /data/3306/my.cnflog-bin

Mysql运维管理-创建索引知识及创建索引的多种方法实战9

为表的字段创建索引 索引就像书的目录一样,如果在字段上建立索引,那么以索引为条件时可以加快查询数据的速度. 1 创建主键索引 查询数据库的内容,按主键查询是最快的,每个表只能有一个主键,但是可以有多个普通索引列,主键列要求所有内容必须唯一,而索引列不要求内容唯一.我们无论建立主键索引还是普通索引,都要在表的对应列上创建,可以对单列创建索引也可以对多列创建索引建立主键索方法: 1.在创建表时,可以增加建立主键索引语句 [email protected] 04:0932->create table

MySQL 8.0.11 innodb cluster 运维管理手册之四-msyqlbackup备份

MySQL 8.0.11 innodb cluster 运维管理手册之四-msyqlbackup备份 作者 方连超 Mysqlbackup 介绍 mysqlbackup是一个热备份工具.也就是说它不像mysqldump那样给表上一个全局锁,由于mysqldump上了这个锁,所以就造成客户端只能对数据库进行读操作不能写,这也就是称mysqldump为温备份的原因.但是mysqlbackup真的有这么吊吗?答案是并没有.对于innodb引擎的表mysqlbackup 热备的:但是对于非innodb表

MySQL 8.0.11 innodb cluster 运维管理手册之二--集群搭建

MySQL 8.0.11 innodb cluster 高可用集群部署运维管理手册之二 集群建设 作者 方连超 基础环境 系统:centos 7.5Mysql:8.0.11 二进制包Mysqlshell: 8.0.11 rpm 包Mysql router: 8.0.11 二进制包 架构: 192.168.181.101 myrouter1 Keepalived.MySQL-shell.MySQL-Router.MySQL-client 192.168.181.102 myrouter2 Keep

运维管理心得

一.运维管理心得首先接到任务,ceo说招了一批培训生进来实习,叫我给他们培训短时间内可以接手线上工作还给我下馅饼,承诺教人有多少多少奖金,唉,这个先不说了,先介绍怎么一周内把新人培训上手 新人来到的第一天,不用安排太多东西,避免造成太大的压力,先让他们熟悉公司环境可以先叫他们安装日常用到的工具,然后安装虚拟机,自己练习日常命令 第二天可以给他们一张公司的架构图,以及介绍架构的走向以及需要安装那些服务器应用软件让他们在自己的虚拟机安装需要安装的软件,以及介绍他们日常主要负责什么内容 第三天规定安装

django实现Linux运维管理平台

老早之前就想做一个运维管理平台的项目了,但是一直没沉下来去做,上半年的时候毕设选择了这个课题,想着逼自己一把,不管做出来的怎么样,先把它搞起来..... django的工作原理: 文字说明: (1)Web服务器收到用户的http请求. (2) Django通过URL控制器来判断对应的视图(View)函数从而对http请求做处理. (3)视图函数调用相应的模型来存取数据.调用相应的模板把数据展示出来. (4)视图函数最终返回一个http的响应给Web服务器. (5)Web服务器把接收到的响应数据发

运维管理平台实现与学习心得

经过一段时间的学习,写了一个简单的运维管理平台小项目,先看看啥样吧! 下面说明下具体实现: 软件架构:HTML+CSS+Jquery+Bootstrap+Ajax+Python2.7+Django1.9+SaltStack+MySQL 功能描述: 数据可视化:采用百度开源的ECharts绘图,通过Python脚本每分钟统计Nginx日志分析PV/UV量写到数据库. 资产管理:采用SaltStack Restful API二次封装调用收集主机配置信息入库,并提供增删改查. 主机批量管理:也是调用S

系统集中运维管理平台【社区版】安装与配置方法

最近很多博友反应不知道怎么安装与配置"系统集中运维管理平台[社区版]"程序,下面我写一个详细的配置文档,希望能够帮助各位博友: 程序支持操作系统平台: 主程序支持: Win7.Win8.Win8.1.Win2008.Win2008R2.Win2012.Win2012R2 MYSQL数据库: 软件版本:mysql_installer_community_V5.6.21.1_setup.1418020972 数据库可以安装在Windows或Linux平台,根据个人需求,这里以Windows

搬砖-运维管理平台OpsMange安装部署

腾讯蓝鲸运维管理平台是一个很好的项目,但是比较庞大复杂,部署和维护比较繁琐,关键是按照产品手册部署出来的一直都有问题,可能是我技术比较low =.= 也试过刘天斯大神的OMserver,但是这个只是一个实验平台,应用不到生产上.后来发现opsManage项目比较好,就开始尝试部署使用,现在也支持docker版本. 一款代码部署.应用部署.计划任务.设备资产管理平台. 编程语言:Python2.7 + HTML + JScripts 前端Web框架:Bootstrap 后端Web框架:Django