linux mysql恢复数据_Linux上通过binlog文件恢复mysql数据库详细步骤

1fbe364bfe00b3edba3ff44acaa772f0.png
我们开发阶段,经常要有一些测试数据在我们测试相关功能的时候,是十分必要的.后期由于引入了正式的数据,但是测试数据并没有被及时清理.这个时候由于一个误删除,导致一些正式的数据被删除,由此,一场追找数据的过程就开始了...

解决方案:

  1. 通过每天备份的日志进行查找,但是很不幸的是,我们由于没有正式上线,所以数据库的备份脚本一直没有执行中,故此路不通
  2. 借助强大的mysqlbinlog工具了

一、binlog 介绍

服务器的二进制日志记录着该数据库的所有增删改的操作日志(前提是要在自己的服务器上开启binlog),还包括了这些操作的执行时间。为了显示这些二进制内容,我们可以使用mysqlbinlog命令来查看。

用途:

  1. 恢复数据库
  2. 主从同步

mysqlbinlog 命令的语法格式:

mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名

#常用参数选项解释:
--start-position=875 起始pos点
--stop-position=954 结束pos点
--start-datetime="2016-9-25 22:01:08" 起始时间点
--stop-datetime="2019-9-25 22:09:46" 结束时间点
--database=zyyshop 指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)
-------------------------------------------------------- 
不常用选项: 
-u --user=name 连接到远程主机的用户名
-p --password[=name] 连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
--read-from-remote-server 从某个MySQL服务器上读取binlog日志

二、备份恢复

第一步:保证mysql已经开启binlog,查看binklog是否开启

show 

bb83505d1f032eddeb1041a95cb0a18e.png

值为OFF,需开启,值为ON,已开启。

如果没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。

查看binlog存放日志文件目录

show variables like '%datadir%';

5836e761c148a0fd07e785464f7be695.png

第二步:进入binlog文件目录,找出日志文件

c6c8f532764d73203b073d0a9d1e4dce.png

第三步:切换到mysqlbinlog目录(具体位置在mysql安装目录**/mysql/bin/下)

4d625dd14fdd59fed7f46c82a9cd276d.png

第四步:通过mysqlbinlog工具命令查看数据库增删改查记录(必须切换到mysqlbinlog目录才有效)

#查询2020-01-01 08:00:00到2020-01-09 20:00:00 数据库为 dataweb 的操作日志,输入如下命令将数据写入到一个备用的txt文件中
mysqlbinlog --no-defaults --database=dataweb --start-datetime="2020-01-01 08:00:00" --stop-datetime="2020-01-09 20:00:00" /data/mysql/mysql-bin.000008    > dataweb.txt

#查询2020-01-01 08:00:00到2020-01-09 20:00:00 数据库为 dataweb 的操作日志,并输出到屏幕上
mysqlbinlog --no-defaults --database=dataweb --start-datetime="2020-01-01 08:00:00" --stop-datetime="2020-01-09 20:00:00" /data/mysql/mysql-bin.000008  |more

#查询2020-01-01 08:00:00到2020-01-09 20:00:00 数据库为 dataweb 的操作日志,并且过滤出 只包括 rf_classify 表数据的操作记录 ,输入如下命令将数据写入到一个备用的txt文件中
mysqlbinlog --no-defaults --database=youxi --start-datetime="2020-01-01 08:00:00" --stop-datetime="2020-01-09 20:00:00" /data/mysql/mysql-bin.000008   | grep rf_classify   > classify.txt

3ad043906444085f0eb61f23c508e9eb.png

第五步:利用第四步输出的sql语句或者txt文本进行语句过滤,重新插入数据或更新数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 下载MySQL安装包 从MySQL官网下载适合您系统的MySQL安装包,选择合适的版本和平台,例如:MySQL Community Server 5.7.30 Linux-Generic (x86, 64-bit), 并将其保存到本地。 2. 安装依赖包 在安装MySQL之前需要先安装一些依赖包,以Debian/Ubuntu系统为例: ``` sudo apt-get update sudo apt-get install libaio1 libnuma1 ``` 3. 解压MySQL安装包 使用以下命令解压MySQL安装包: ``` tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz ``` 4. 创建MySQL用户和组 使用以下命令创建MySQL用户和组: ``` groupadd mysql useradd -r -g mysql -s /bin/false mysql ``` 5. 移动MySQL文件 将解压的MySQL文件夹移动到/opt目录下: ``` sudo mv mysql-5.7.30-linux-glibc2.12-x86_64 /opt/mysql ``` 6. 配置MySQL 在/opt/mysql目录下创建my.cnf文件: ``` sudo vi /opt/mysql/my.cnf ``` 文件内容如下: ``` [mysqld] # 设置MySQL数据存储路径 datadir=/data/mysql/data # 设置MySQL日志存储路径 log-bin=/data/mysql/binlog/mysql-bin # 设置MySQL错误日志存储路径 log-error=/data/mysql/error/mysql.err # 设置MySQL socket文件存储路径 socket=/var/lib/mysql/mysql.sock # 设置MySQL字符集 character-set-server=utf8 # 设置MySQL端口 port=3306 # 设置MySQL最大连接数 max_connections=500 ``` 7. 创建MySQL数据存储目录 使用以下命令创建MySQL数据存储目录: ``` sudo mkdir -p /data/mysql/data sudo chown -R mysql:mysql /data/mysql ``` 8. 初始化MySQL 使用以下命令初始化MySQL: ``` cd /opt/mysql sudo ./bin/mysqld --defaults-file=/opt/mysql/my.cnf --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql/data ``` 9. 启动MySQL 使用以下命令启动MySQL: ``` sudo /opt/mysql/support-files/mysql.server start ``` 10. 登录MySQL 使用以下命令登录MySQL: ``` /opt/mysql/bin/mysql -u root -p ``` 11. 修改MySQL root密码 使用以下命令修改MySQL root密码: ``` mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 12. 安装完成 至此,MySQL离线安装完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值