欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

MySQL回闪_MySQL进行BINLOG回闪

发布时间:2025/3/12 数据库 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MySQL回闪_MySQL进行BINLOG回闪 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

MySQL数据恢复

前段时间因为要保证数据恢复的质量,写了一个进行回滚的脚本。

binglog2sql工具介绍

binglog2sql是一款用于解析binlog的工具,纯Python开发,安装需要有Python环境;

安装

git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql

pip install -r requirements.txt

MySQL配置

[mysqld]

server_id = 1

log_bin = /var/log/mysql/mysql-bin.log

max_binlog_size = 1G

binlog_format = row

binlog_row_image = full

脚本内容

#!/bin/bash

user="root"

password="hao_123"

host="xxxx"

port="3306"

binglog=`mysql -u${user} -p${password} -h${host} -e "show master logs;"|grep -v ^Log`

echo -e "最新的的binglog:\n${binglog}"

cd /root/binlog2sql/binlog2sql

read -p "库名:" db

read -p "表名:" table

read -p "binglog文件:" bin

echo -e "格式:年-月-日 时:分:秒"

read -p "删除的大概时间:" time

read -p "结束的大概时间:" datatime

python ./binlog2sql.py -h${host} -u${user} -p${password} -P${port} -d ${db} -t ${table} --start-file="${bin}" --start-datetime="${time}" --stop-datetime="${datatime}" > /tmp/rollback.sql

echo -e "这个时间点执行的SQL是:"

cat /tmp/rollback.sql

read -p "开始位置:" sp

read -p "结束位置:" ep

read -p "输入Yes生成回滚文件:" yes

if [[ "${yes}" == "yes" ]];then

python ./binlog2sql.py -h${host} -u${user} -p${password} -P${port} -d ${db} -t ${table} --start-file="${bin}" --start-position="${sp}" --stop-position="${ep}" -B > /tmp/rollback.sql

fi

if [ $? -eq 0 ];then

echo "rollback file success!"

fi

echo -e "回滚的SQL语句是:"

cat /tmp/rollback.sql

read -p "输入Yes开始回滚到数据库:" yes

if [[ "${yes}" == "yes" ]];then

mysql -u${user} -p${password} -h${host} < /tmp/rollback.sql

fi

if [ $? -eq 0 ];then

echo "rollback MySQL success!"

fi

这时候对于一些误操作,可以通过过滤大概的时间,和指定的SQL语句进行回闪,保证了数据的安全性。

总结

以上是生活随笔为你收集整理的MySQL回闪_MySQL进行BINLOG回闪的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。