mysql开启二进制日志报错
数据库已经运行了相当长的时间后,当mysql开启二进制日志时,数据库启动报错如下:
2021-11-23 02:26:02 1 [Note] InnoDB: 128 rollback segment(s) are active. 2021-11-23 02:26:02 1 [Note] InnoDB: Waiting for purge to start 2021-11-23 02:26:02 1 [Note] InnoDB: 5.6.50 started; log sequence number 42718185550 mysqld: File '/var/lib/mysql/mysql-bin.000001' not found (Errcode: 2 - No such file or directory) 2021-11-23 02:26:02 1 [ERROR] Failed to open log (file '/var/lib/mysql/mysql-bin.000001', errno 2) 2021-11-23 02:26:02 1 [ERROR] Could not open log file 2021-11-23 02:26:02 1 [ERROR] Can't init tc log 2021-11-23 02:26:02 1 [ERROR] Aborting
mysql开启二进制的配置如下:
expire_logs_days=30 log-bin=/var/lib/mysql/mysql-bin max_binlog_size=1G binlog_format=row binlog_row_image=full
核对的目录权限,发现没什么问题,最终查看mysql-bin.index
# cat mysql-bin.index ./mysql-bin.000001
注:log-bin=mysql-bin这样配置一样会报上述错误
结论:因为这个文件导致的mysql开启二进制日志时mysql的启动报错。
处理办法:将mysql-bin.index清空,重启mysql即可,启动后查看
# cat mysql-bin.index /var/lib/mysql/mysql-bin.000001
讨论:mysql-bin.index具体是什么?有什么作用呢?
mysql-bin.index文件记录了binlog文件的具体路径,在mysql启动时,会找到mysql-bin.index文件,然后读取它里面的条目,从而读取binlog文件。
1.binlog文件的路径可以是相对路径,也可以是绝对路径
2.当mysql启动时找不到*.index文件记录的文件时,mysql启动就会报错上述错误。
3.binlog文件的路径的配置路径
log-bin=/var/lib/mysql/mysql-bin
其中参数log-bin的作用:
1.表示mysql数据库开启binlog功能
2.设置binlog.index文件名
3.设置binlog的文件名
> show variables like '%log_bin%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin | OFF | | log_bin_basename | | | log_bin_index | | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | | sql_log_bin | ON | +---------------------------------+-------+
binlog文件的读取:
MySQL在启动时会读取data目录下的所有以.index后缀的文件(默认值),然后在读取每个index文件中的条目。
本文来自博客园,作者:kuzane,转载请注明原文链接:https://www.cnblogs.com/kuzane/articles/15592075.html

浙公网安备 33010602011771号