[原创]CentOS下Mysql的日志回滚
一、 环境:
a) Centos-6.5-x64位操作系统。
b) 安装mysql。命令:yum install mysql*
二、 配置
a) 配置/etc/my.cnf文件
[mysqld]
Log-bin=bin-log //配置开启日志功能
三、 实现
- 查看/var/lib目录下没有类似bin-log.000001的日志文件。
- 登录mysql执行:flush logs;//刷新日志,再查看则有日志文件了,此时若没有再执行flush logs和重启mysql,那么一切对mysql的操作都将记录在刷新后出现的日志文件中。命令:mysqlbinlog –no-defaults bin-log.000001 | more
- 登录mysql,创建表和插入一系列测试数据作为要恢复的对象。再执行一次flush logs,生成bin-log.000002日志文件。然后将数据和表删除。
- 现在将数据恢复。开启另一个终端,执行命令:
Mysqlbinlog –no-defaults bin-log.000001 | mysql –u root –p
回车输入root密码。返回查看,表和数据均已恢复。
四、 mysqlbinlog语法:基于时间(date)和位置(position)的恢复
1.定位: --start-position 开始点
--stop-position 结束点
--start-date 开始时间
--stop-date 结束时间
2.例:
Mysqlbinlog –no-defaults –start-position pos值 –stop-position pos值 bin-log.000001 | mysql –u root –p
注:定位关键字可以配对使用也可单独使用,实现现象略。
附加一个数据库TPS,QPS实时监控的脚本。
#cat mysql_nmon.sh
#!/bin/sh
mysqladmin -uroot -p'password' -hhost_ip -P3306 extended-status -i1|awk 'BEGIN{local_switch=0;print "QPS Commit Rollback TPS Threads_con Threads_run \n-------------------------------------------------------- "}
$2 ~ /Queries$/ {q=$4-lq;lq=$4;}
$2 ~ /Com_commit$/ {c=$4-lc;lc=$4;}
$2 ~ /Com_rollback$/ {r=$4-lr;lr=$4;}
$2 ~ /Threads_connected$/ {tc=$4;}
$2 ~ /Threads_running$/ {tr=$4;
if(local_switch==0)
{local_switch=1; count=0}
else {
if(count>10)
{count=0;print "-------------------------------------------------------- \nQPS Commit Rollback TPS Threads_con Threads_run \n-------------------------------------------------------- ";}
else{
count+=1;
printf "%-6d %-8d %-7d %-8d %-10d %d \n", q,c,r,c+r,tc,tr;
}
}
}'