MySQL的日志分析详解五(MySQL二进制日志(binary))

1、作用

  • 可以用来恢复数据
  • 主从复制

2、记录了什么?

  • DML语句、DDL、DCL等
  • 修改了数据的操作

3、存放的位置

编译安装默认数据目录下

1)主机名-bin.00000*

sc-mysql-bin.000014
具体的二进制日志文件

默认一个二进制文件的大小是1G

mysql> show variables like '%max_binlog_%';

+----------------------------+----------------------+

| Variable_name              | Value                |

+----------------------------+----------------------+

| max_binlog_cache_size      | 18446744073709547520 |

| max_binlog_size            | 1073741824           |

| max_binlog_stmt_cache_size | 18446744073709547520 |

+----------------------------+----------------------+

3 rows in set (0.02 sec)



mysql> 

2)sc-mysql-bin.index

二进制日志文件的索引:记录一共有多少个二进制日志文件了

查看当前正在使用的是哪个二进制日志文件

mysql> show master status;

+-----------------------------+----------+--------------+------------------+-------------------+

| File                        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-----------------------------+----------+--------------+------------------+-------------------+

| zabbix-4-centos7-bin.000004 |      154 |              |                  |                   |

+-----------------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)



mysql> 

4、一个二进制日志文件是否记录了整个mysql进程里所有的库的操作?

是的,对所有库进行的操作都会记录到一个二进制文件里

如果需要记录到不同的日志文件里,可以采用多实例

5、配置

默认没有开启

修改配置文件

#开启二进制日志
log_bin
server_id = 1
					root@(none) 10:42 mysql>show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+
1 row in set (0.01 sec)

root@(none) 10:42 mysql>show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.01 sec)

root@(none) 10:43 mysql>
service  mysqld restart

6、格式

row level

MySQL默认

记录操作的每一行数据:即表里的哪些行的数据发生了变化

statement level

记录用户输入的SQL语句
mariadb-5.5.64默认

mixed level

7、产生新的二进制日志文件

service  mysqld restart
flush  logs

8、删除所有的二进制日志

mysql> reset master;

9、查看二进制日志

mysqlbinlog

编译安装需要加入path变量才有此命令

[root@sc-mysql bin]# PATH=$PATH:/usr/local/mysql/bin/

-vv信息更加多

你可能感兴趣的:(MySQL)