mysql bin log

二进制日志主要用于记录任何有可能改变数据库的操作,因此主要用于记录 DDL DML语句,包括数据库授权语气。记录格式为二进制的。我们无法使用普通文本查看命令取查看。只能使用mysql提供的专用命令,叫做mysqlbinlog

二进制日志非常重要用于我们数据库服务器崩溃时候,依靠二进制日志可以进行恢复

一般情况下位于数据目录下,以主机名开头或者是mysql-bin开头,mysql服务器重启一次,这个日志就会滚动一次,这个日志需要不停的滚动。而且记录增长的速度非常快。是能够实现mysql复制,以及即时点恢复的重要工具

查看当前服务器上面所有的二进制日志文件

show binary logs;

查看数据库是否记录二进制日志

SHOW GLOBAL VARIABLES LIKE ‘%log%‘;

开启二进制日志需要在配置文件中定义。把 log-bin  前面的 #  注释掉即可

二进制日志的格式:

1 基于语句(statemen t);如果两次执行带来的结果是相同的就基于语句来记录

2 基于行 (row)  :把那个行的相关改变记录下来。

3 混合模式 (mixed):

二进制日志增长到一定程度就会滚动一次。

如果我们数据文件有10G,我们周三备份了10G,运行两天后到了周五,服务器硬盘坏了,我们由于备份时候只备份到了周三,后面两天产生的数据没有备份,就需要依赖二进制文件进行找回那两天的数据,因此我们的二进制日志文件最好和数据库服务器不要放在同一块硬盘上面。

这种恢复数据叫做即时点还原

如果数据没有备份,但是二进制日志文件全部在,也可以恢复,但是恢复时间比较慢

二进制日志事件:

二进制时间日志在记录时候会记录:

1.事件产生的时间。

2.每一个事件在日志文件中的相对位置

二进制日志文件组成:

索引文件  (保存文件在数据目录下面叫做mysql-bin.index是一个文本文件)从里面可以看到一共产生了多少个二进制日志文件

二进制日志文件

二进制日志文件默认保存带数据目录下面,通常名称是 mysql-bin.000001   mysql-bin.000002  mysql-bin.000003  ..........等等

使用show master status;  查看当前正在使用的二进制日志文件

查看某个二进制日志文件的内容

比如查看 mysql-bin.000003

使用命令  SHOW BINLOG EVENTS IN ‘mysql-bin.000003‘;

还可以加上FROM 命令 表示从哪个位置开始查看

SHOW BINLOG EVENTS IN ‘mysql-bin.000003 FROM 107‘;

server_id :表示由哪个mysql服务器产生的二进制日志

使用mysqlbinlog也可以查看日志。并且指定日志显示的信息。

常用选项: --start-datetime   --stop-datetime

--start-position   --stop-position

不跟选项就是显示整个文件内容

mysqlbinlog  mysql-bin.000003

指定位置查看

mysqlbinlog --start-position = 107 --stop-postion = 358  mysql-bin.000003

指定时间查看

mysqlbinlog --start-datetime=‘2016-03-13 10:40:50‘  mysql-bin.000003

在Linux上面 可以将查看的结果保存到一个我们指定路径的 以  .sql 结尾的文件中

mysqlbinlog --start-datetime=‘2016-03-13 10:40:50‘  mysql-bin.000003  >/root/a.sql

以后你可以将这个sql文件直接导入到数据库当中,这个sql文件就会将里面的sql语气执行一遍。所以我们通常通过使用mysqlbinlog 查询到结果输出重定向到sql脚本中,导入到其他数据库中就可以实现即时点还原

手动滚动日志:FLUSH LOGS;  (只会滚动二进制日志)

决不允许使用rm 命令删除二进制日志文件,会导致数据库崩溃

删除二进制日志文件使用

PURGE 命令

用法

PURGE BINARY LOGS TO log_name;  这个是把这个日志名称之前的日志全部删除,而不是删除这个日志文件

与二进制日志相关的服务器变量。使用SHOW GLOBAL VARIABLES LIKE ‘%log%‘;

binlog_format  :二进制日志的格式

binlog_cache_size :缓存大小,二进制日志写入磁盘之前先在内存进行缓存binlog_cache_size 随着 binlog_stmt_cache_size 大小的改变而改变

binlog_stmt_cache_size:也是缓存,记录跟事务相关的二进制日志缓存大小改变binlog_stmt_cache_size大小,binlog_cache_size也会跟着改变,不建议调大,有可能造成数据丢失

log_bin : 是否启用二进制日志,这个功能开启,但是不一定就会记录二进制日志是否真正的记录日志还需要取决于另外的变量。开启时候需要在配置文件指定一下路径。

sql_log_bin:用于控制二进制日志信息是否记录进日志文件

sql_log_off :用于控制是否禁止将一般查询日志类记录到查询日志文件中,与二进制日志无关

sync_binlog:设定多久同步一次二进制日志到磁盘文件中,0表示不同步,为0时取决于auto_commit(事务自动提交,立即被写入日志)。如果这个值是任何正数,就表示多少次写操作之后 同步到磁盘中。这里设置为0的好处是事务不提交,日志就不会写入磁盘。这样IO也会随之降低,性能得到提高

二进制日志所在的硬盘速度越快,IO性能越好,我们的服务器性能也就越好,因为我们的二进制日志只有一个,如果并发多个线程同时来执行修改数据库操作时候,都需要几个线程同时写入二进制日志。因此如果我们硬盘是固态硬盘,读写速度就越好,服务器性能越好

expire_logs_days: 表示多少天以后日志日志会过期,并自动删除

硬盘IO性能指标:IOPS 表示硬盘IO每秒能进行的IO操作数。

台式机硬盘:每秒100次

SCSI硬盘:每秒200次

SSD:每秒大概500-2000

原文地址:https://www.cnblogs.com/SunshineLittleCat/p/8279290.html

时间: 2024-11-05 20:48:49

mysql bin log的相关文章

[mysqldumpslow 报错] Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236.

mysqldumpslow报错:Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236. 总结:是因为top数目太多了,mysqldumpslow遍历不过来的缘故. /usr/local/mysql/bin/mysqldumpslow -s -t 15 /root/db01-102-slow.log 1,把r去掉试试,还是报错,参数不识别. [[email protected] ]# /usr/local/mysql/

mysql slow log 简单统计

众所周知,mysql slow log中很多sql 语句结构和对象是相同,只是其中变量不一样,对于这样的sql,我们完全可以将其归为一类,统计其执行次数.执行时间平均值等参数,而pt-query-digest恰好就是这样一款工具,能够对slow sql 进行归类.分组和分析,统计同一类sql多次运行后的参数:max.min.avg.count等: # Query 6: 0.23QPS, 1.07x concurrency, ID 0x7F4D624CEA244E17 at byte 175919

mysqld_safe启动报错 mysqld_safe The file /usr/local/mysql/bin/mysqld does not exist or is not executable

报错(如下),但是使用mysqld直接启动没有问题. 150718 00:03:38 mysqld_safe Logging to '/var/log/mysqld.log'. 150718 00:03:38 mysqld_safe The file /usr/local/mysql/bin/mysqld does not exist or is not executable. Please cd to the mysql installation directory and restart t

一台安装5.5与5.6报unknown variable &#39;log-slow-queries=/home/mysql/localhost-slow.log&#39; 错解决方案

一台中有两个MYSQL,基本一个5.5(rpm包)配置文件/etc/my.cnf,别外一个5.6 配置文件/home/app/mysql5.6/my.cnf 5.6上报错 2016-01-27 00:09:03 16056 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.27-rel75.0 started; log sequence number 1763792 2016-01-27 00:09:03 16056 [ERR

mysql bin日志配置及查看

mysql执行sql可以通过设置mysql bin 日志进行记录查看,mysql bin日志配置如下: log_bin:on log_bin_basename:bin文件路径及名前缀(/var/log/mysql/mysql-bin) log_bin_index:bin文件index(/var/log/mysql/mysql-bin.index) server_id:n 生成的bin日志如:mysql-bin.000000  mysql-bin.000001 通过mysqlbinlog mysq

mysql数据库二进制初始化出现:170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option &#39;--skip-locking&#39; 170425 17:47:04 [ERROR] Aborting 解决办法

[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/application/mysql/ --datadir=/application/mysql/data/Installing MySQL system tables...170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option '--skip-locking

/usr/local/mysql/bin/mysqlbinlog -vv /var/lib/bin/mysql-bin.000008 --base64-output=DECODE-ROWS --start-pos=307

/usr/local/mysql/bin/mysqlbinlog -vv /var/lib/bin/mysql-bin.000008 --base64-output=DECODE-ROWS  --start-pos=307 问题:这个究竟是什么意思 [[email protected] mysql]# /usr/local/mysql/bin/mysqlbinlog -vv /var/lib/bin/mysql-bin.000008 --base64-output=DECODE-ROWS --s

WARNING: The host &#39;r6&#39; could not be looked up with /usr/local/mysql/bin/resolveip.

初始化MySQL数据库提示以下信息: # /usr/local/mysql/scripts/mysql_install_db > --defaults-file=/etc/my.cnf > --basedir=/usr/local/mysql > --datadir=/var/mysql/data > --user=mysql WARNING: The host 'r6' could not be looked up with /usr/local/mysql/bin/resolv

清除mysql binary log

作为一个oracle dba有时候不得不管理一下mysql数据库,当为主从库时需要阶段性清理mysql binary log,清楚方式如下: 首先查看mysql 的当前日志组 show master status; 确定当前日志组后删除日志文件 purge binary logs to 'mysql-bin.000795'; 删除000795之前的日志 清除mysql binary log,布布扣,bubuko.com