MySQL日志
开启bin-log日志
// vim 打开 mysql 配置文件sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf找到 以下两个配置项 用x删除'#'号(单个)dd(删除当前行)log_bin的地址记住server-id = 123456 log_bin = /var/lib/mysql/mysql-bin 把注释打开 改完后 保存推出重启mysql sudo service mysql restart 进入 cdlogbin的地址 ls查询当前目录cd /var/lib/ #修改 mysql权限 #sudo chmod 777 mysql 查看bin-log日志: mysql>show binary logs;
进入 cd logbin的地址 ls查询当前目录
cd /var/lib/mysql ls 查看是否存在mysql日志文件 mysql>reset master;清空所有的bin-log日志执行查看bin-log日志 备份数据: mysqldump -uroot -pwei test -l -F '/tmp/test.sql'
其中:-F即flush logs,可以重新生成新的日志文件,当然包括log-bin日志
数据库的恢复
删库不一定非得跑路,在跑路前你需要做的是数据恢复
前提是开启了bin-log日志,并定期备份
以下模拟了一次删库和数据恢复的过程
-- 刷新 日志 mysql>reset master; Query OK, 0 rows affected (0.39 sec) mysql> create database ops; Query OK, 1 row affected (0.28 sec) mysql> use ops; Database changed create table customers( id int not null auto_increment, name char(20) not null, age int not null, primary key(id) )engine=InnoDB; insert into customers values(1,"wangbo","24"),(2,"guohui","22"),(3,"zhangheng","27"); mysql> select * from customers; +----+-----------+-----+ | id | name | age | +----+-----------+-----+ | 1 | wangbo | 24 | | 2 | guohui | 22 | | 3 | zhangheng | 27 | +----+-----------+-----+ 3 rows in set (0.00 sec) -- (2)现在进行全备份 mysqldump -uroot -p -B -F -R -x --master-data=2 ops >/home/yc/ops.sql----------------- 参数说明: -B:指定数据库 -F:刷新日志 -R:备份存储过程等 -x:锁表 --master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信息 -- 再添加新的数据insert into customers values(4,"liupeng","21"),(5,"xiaoda","31"),(6,"fuaiai","26"); mysql> select * from customers; +----+-----------+-----+ | id | name | age | +----+-----------+-----+ | 1 | wangbo | 24 | | 2 | guohui | 22 | | 3 | zhangheng | 27 | | 4 | liupeng | 21 | | 5 | xiaoda | 31 | | 6 | fuaiai | 26 | +----+-----------+-----+ 6 rows in set (0.00 sec) -- (4)此时误操作,删除了test数据库drop database ops; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | python4 | | sys | | wx | +--------------------+ 6 rows in set (0.00 sec) 将binlog文件导出sql文件,并 vi 编辑它删除其中的drop语句[root@vm-002 backup]# mysqlbinlog -d ops /var/lib/mysql/mysql-bin.000002> /home/yc/002bin.sql sudo mysqlbinlog -d ops /var/lib/mysql/mysql-bin.000002> /home/yc/002bin.sql [root@vm-002 backup]# ls 002bin.sql mysql-bin.000002 ops_2016-09-25.sql [root@vm-002 backup]# vi 002bin.sql #删除里面的drop语句 :qw!保存并退出-- 首先导入备份的数据文件mysql -uroot -p < /home/yc/ops.sql 再导入删除 drop语句后的 binlog日志文件mysql -uroot -p ops < /home/yc/002bin.sql
本文详细介绍了MySQL中bin-log日志的配置与使用方法,包括如何开启bin-log、查看bin-log、备份数据以及利用bin-log进行数据恢复的具体步骤。
1046

被折叠的 条评论
为什么被折叠?



