Mysql binlog 日志
来源:互联网 发布:女生做软件测试 编辑:程序博客网 时间:2024/05/17 01:40
1.介绍
mysql binglog 日志记录了mysql 所有操作技能,不包含select,在一些mysql 同步上经常使用binlog同步,这里介绍下binlog日志记录。
2.开启binlog
2.1 查看是否开启
show VARIABLES like '%log_bin%';
log_bin:on 开启。
2.2 开启方法
2.2.1 关闭数据库
[root@master mysql]# service mysqld stopStopping mysqld (via systemctl): [ OK ]
2.2.2 配置my.conf
在my.conf 文件的[mysqld]域下面添加下面:
log-bin=mysql-bin
binlog_format= ROW
说明:
STATEMENT模式(SBR)
每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
ROW模式(RBR)
不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
MIXED模式(MBR)
以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
2.2.3 开启数据库
[root@master mysql]# service mysqld startStarting mysqld (via systemctl): [ OK ]
show VARIABLES like '%log_bin%';
3.binlog 常用操作
show master logs; #查看数据库所有日志文件。 show master status; #查看最新的日志show binlog events \G; #查看binlog文件信息(默认000001开始,\G 命令行用法)。 show binlog events in 'mysql-bin.000016'; #查看指定的binlog文件信息。 flush logs; #将内存中log日志写磁盘,保存在当前binlog文件中,并产生一个新的binlog日志文件。 reset master; #删除所有二进制日志,并重新(mysql-bin.000001)开始记录。show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];IN 'log_name' :指定要查询的binlog文件名(不指定就是第一个binlog文件)FROM pos :指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)LIMIT [offset,] :偏移量(不指定就是0)row_count :查询总条数(不指定就是所有行)指定查询 mysql-bin.000002这个文件,从pos点:624开始查起,偏移2行(即中间跳过2个),查询10条show binlog events in 'mysql-bin.000002' from 624 limit 2,10\G注意:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;
查看binlog位置:
[root@master ~]# ps -ef |grep mysql
root 3707 1 0 10:43 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 3947 3707 0 10:43 ? 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 4087 3286 0 10:55 pts/2 00:00:00 mysql -uroot -px xxxx
root 4176 4106 0 10:58 pts/3 00:00:00 grep --color=auto mysql
[root@master mysql]# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000003/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;/*!40019 SET @@session.max_insert_delayed_threads=0*/;/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;DELIMITER /*!*/;# at 4#171108 11:30:36 server id 1 end_log_pos 120 CRC32 0xcd676b23 Start: binlog v 4, server v 5.6.37-log created 171108 11:30:36# at 120#171108 11:33:24 server id 1 end_log_pos 192 CRC32 0x66bc8be7 Query thread_id=3 exec_time=0 error_code=0SET TIMESTAMP=1510112004/*!*/;SET @@session.pseudo_thread_id=3/*!*/;SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;SET @@session.sql_mode=1075838976/*!*/;SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;/*!\C utf8 *//*!*/;SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;SET @@session.lc_time_names=0/*!*/;SET @@session.collation_database=DEFAULT/*!*/;BEGIN/*!*/;# at 192#171108 11:33:24 server id 1 end_log_pos 247 CRC32 0xeda09f19 Table_map: `test`.`test` mapped to number 70# at 247#171108 11:33:24 server id 1 end_log_pos 302 CRC32 0x3725bf1b Write_rows: table id 70 flags: STMT_END_F### INSERT INTO `test`.`test`### SET### @1=10### @2='1010'### @3='hxw10'### @4=1510112004# at 302#171108 11:33:24 server id 1 end_log_pos 333 CRC32 0xb61e6042 Xid = 263COMMIT/*!*/;# at 333#171108 11:34:29 server id 1 end_log_pos 356 CRC32 0x92e6d836 StopDELIMITER ;# End of log fileROLLBACK /* added by mysqlbinlog */;/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
执行sql部分的sql显示为base64编码格式
固生成sql记录的时候 不能用常规的办法去生成 需要加上相应的参数才能显示出sql语句
--base64-output=decode-rows -v
- mysql 清除binlog日志
- MySQL开启binlog日志
- 删除mysql binlog日志
- MySQL的binlog日志
- mysql的binlog日志
- MySQL binlog日志管理
- MySQL的binlog日志
- MySQL的binlog日志
- mysql binlog日志清除
- mysql 查看binlog日志
- MySQL的binlog日志
- MySQL的binlog日志
- MySQL的binlog日志
- Mysql-binlog日志
- mysql binlog日志删除
- mysql 的binlog日志
- Mysql binlog 日志
- MySql binlog日志详解
- Quartz 2D(一)概念、图形上下文、路径
- word文档无法编辑的解决办法
- SubList分页-004-Student类
- Cef经典N大问题
- Navicat修改mysql数据库表插入数据时字段添加默认当前时间
- Mysql binlog 日志
- 解决在硬件加速下WebView切换闪屏的问题
- 某天的想法 -- 为什么我们要努力
- 关于android创建对话框报错The method setPositiveButton(int, DialogInterface.OnClickListener) in the type Alert
- JavaScript中getBoundingClientRect()方法详解
- SubList分页-005-创建数据表
- Java包的静态导入
- 《影子跟随算法》目前试着自己写一个联网双人对战的小游戏 看到一篇网络同步的文章很受启发 这里记录一下
- Spring的jdbcTemplate操作