mysql binlog 学习

mac下开启binlog

mac下mysql配置文件为my.cnf,我使用的版本是my.cnf,安装目录下均没有找到配置文件,所以手动在/etc/目录下创建my.cnf,内容如下:

[mysqld]

log-bin=mysql-bin(打开binlog,并指定路径)

binlog_format=mixed (日志存储方式)

server-id  = 1(随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了)

注:binlog存储方式分为Statement(每一条会修改数据的sql都会记录在binlog中),Row(不记录sql语句上下文相关信息,仅保存哪条记录被修改),mixed(前两者的混合

遇到的问题:在/etc目录下加入my.cnf后服务就启动不了,出现如下错误:ERROR! The server quit without updating PID file (/usr/local/mysql/data/bogon.pid).查看mysql data目录下的bogon.err 发现错误原因是:Table 'mysql.plugin' doesn't exist (然后不断百度,解决办法是:将mysql data目录下创建的数据库文件删除,因为之前未正确关闭mysql造成表损坏,打不开,然后重启,终于好了)

实例:

创建表 ---> 插入数据 ---> 修改数据 ---> 表替换(删除原有表,创建表,插入数据)---> 恢复到表替换前的数据

操作方法:1.查看binlog日志文件   show master status;                                                                                                       2.查看事件及查找对应的pos位置 show binlog events in 'mysql-bin.000003';                                                   3.开始恢复 mysqlbinlog --start-position=2103 --stop-position=3028 ./mysql-bin.000003 |                                 /usr/local/mysql/bin/mysql -uroot -ppwd -v test

其中还有一个命令可将二进制文件转成sql文件:mysqlbinlog --no-defaults mysql-bin.000030 -d yourdbName >yourdbName_binlog.sql

binlog恢复暂时学习到这,其实在binlog恢复时会遇见很多问题,基本不能一次就恢复好,程序最重要的就是数据库,所以定期做数据库备份,操作数据库时线上数据库谨慎操作,最好是给线上数据库分配角色,从根源上抵制住(参考文章,侵权删)

你可能感兴趣的:(mysql binlog 学习)