天天看點

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進行BINLOG回閃

标簽:需要   pip   max   安全   http   mysql配置   amp   github   tab

本條技術文章來源于網際網路,如果無意侵犯您的權益請點選此處回報版權投訴

本文系統來源:https://www.cnblogs.com/Spider-Man-1/p/12759573.html