原创

Mysql 数据库 mysql-bin 日志维护与管理

日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。

常用命令,如下:

mysql>show slave hosts --> 查看所有连接到Master的Slave信息
mysql>show master status --> 查看Master状态信息
mysql>show slave status --> 查看Slave状态信息
mysql>show binary logs --> 查看所有二进制日志
mysql>show binlog events [IN log_file] -- 查看二进制日志中的事件

在Mysql中,如果启用mysql-bin日志记录,则Mysql的变更修改都会被记录到日志文件中,具体代码如下:

mysql> show global variables like '%bin%';
+---------------------------------+----------------------+
| Variable_name   | Value|
+---------------------------------+----------------------+
| binlog_cache_size       | 32768| 
| innodb_locks_unsafe_for_binlog  | OFF  |
| log_bin | ON   | 
| log_bin_trust_function_creators | OFF  | 
| max_binlog_cache_size   | 18446744073709547520 | 
| max_binlog_size | 104857600    | 
| sync_binlog     | 0    | 
+---------------------------------+----------------------+
8 rows in set (0.00 sec)

使用配置文件修改/etc/my.cnf中的log-bin一行注释掉,重启mysql服务即可关闭mysql-bin日志记录:

service mysqld restart 或 service mysql restart

数据库中会积累大量的mysql-bin日志,具体执行代码如下:

mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000061 |   7175622 | 
| mysql-bin.000062 |   4172023 | 
| mysql-bin.000063 |   6175623 | 
| mysql-bin.000064 |   3178621 | 
| mysql-bin.000065 | 104857696 | 
| mysql-bin.000066 |  30124812 | 
| mysql-bin.000067 | 104857882 | 
| mysql-bin.000068 | 104857829 | 
| mysql-bin.000069 | 104857910 | 
| mysql-bin.000070 |  29627738 | 
| mysql-bin.000071 | 104857777 | 
| mysql-bin.000072 | 104857857 | 
| mysql-bin.000073 | 104857728 | 
| mysql-bin.000074 | 104857739 | 
| mysql-bin.000075 | 104857775 |  
+------------------+-----------+
60 rows in set (0.00 sec)

注意如果没有主从复制,可以通过reset master方式,重置数据库日志,执行命令如下:

mysql> reset master; 
Query OK, 0 rows affected (4.51 sec)

存在复制关系通过PURGE方式清理mysql-bin日志,具体语法如下:

PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'

清理日志,需按照以下步骤操作:

1. 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。

2. 使用SHOW MASTER LOGS获得主服务器上的一系列日志。

3. 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。

4. 制作您将要删除的所有日志的备份。(这个步骤是自选的,但是建议采用。)

5. 清理所有的日志,但是不包括目标日志,因为从服务器还要跟它同步。

~阅读全文~人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

您可能感兴趣的文章

评论

分享:

支付宝

微信