原创

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),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信