![如何确定导致 MySQL(Percona 服务器)在 Linux 上崩溃的原因](https://linux22.com/image/719185/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E5%AF%BC%E8%87%B4%20MySQL%EF%BC%88Percona%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%89%E5%9C%A8%20Linux%20%E4%B8%8A%E5%B4%A9%E6%BA%83%E7%9A%84%E5%8E%9F%E5%9B%A0.png)
我正在运行 Percona 版本的 MySQL Server v5.6,每隔几天 MySQL 似乎就会崩溃,然后自动重启。我该如何找出崩溃的原因?我见过其他人在使用 MySQL 时意外停止,这似乎是由于内存问题,但在他们的情况下,错误日志提到了这一点。就我而言,在实际重新启动之前,日志文件中没有任何内容出现。
我将相关日志文件包含在下方,其中包含最后一个“预期”错误以及 MySQL 重新启动时记录的内容。它包含崩溃前的各种“将不安全的语句写入二进制日志”警告,但我不认为它们是崩溃的原因。(我将很快更新这些语句,以不使用构造来ON DUPLICATE KEY
阻止它们,从而防止日志填满。我还应该提到,我不进行复制,这就是为什么我认为它们目前不太重要。)
该服务器是在虚拟机(Virtuozzo)上运行的 64 位 Centos 6.6。
希望有人能给我指出正确的方向,确定导致崩溃的原因。谢谢!
日志文件如下:
2018-03-19 08:39:51 21476 [警告] 由于 BINLOG_FORMAT = STATEMENT,使用语句格式将不安全的语句写入二进制日志。在具有多个 UNIQUE KEY 的表上执行 INSERT... ON DUPLICATE KEY UPDATE 是不安全的语句:INSERT INTO xxxx ON DUPLICATE KEY UPDATE xxxx 180319 08:39:52 mysqld_safe 当前正在运行的进程数:0 180319 08:39:52 mysqld_safe mysqld 重新启动 2018-03-19 08:39:53 0 [警告] 具有隐式 DEFAULT 值的 TIMESTAMP 已弃用。请使用 --explicit_defaults_for_timestamp 服务器选项(有关更多详细信息,请参阅文档)。 2018-03-19 08:39:53 20217 [警告] 使用唯一选项前缀 myisam-recover 代替 myisam-recover-options 已被弃用,并将在将来的版本中删除。请使用全名。 2018-03-19 08:39:53 20217 [注意] 插件‘FEDERATED’已被禁用。 2018-03-19 08:39:53 20217 [注意] InnoDB:使用原子引用计数缓冲池页面 2018-03-19 08:39:53 20217 [注意] InnoDB: InnoDB内存堆已禁用 2018-03-19 08:39:53 20217 [注意] InnoDB: 互斥锁和 rw_locks 使用 GCC 原子内置函数 2018-03-19 08:39:53 20217 [注意] InnoDB:未使用内存屏障 2018-03-19 08:39:53 20217 [注意] InnoDB:压缩表使用zlib 1.2.3 2018-03-19 08:39:53 20217 [注意] InnoDB:使用Linux原生AIO 2018-03-19 08:39:53 20217 [注意] InnoDB:使用CPU crc32指令 2018-03-19 08:39:53 20217 [注意] InnoDB:初始化缓冲池,大小 = 3.0G 2018-03-19 08:39:54 20217 [注意] InnoDB: 缓冲池初始化完成 2018-03-19 08:39:54 20217 [注意] InnoDB: 支持的最高文件格式是Barracuda。 2018-03-19 08:39:54 20217 [注意] InnoDB:日志扫描已超过检查点 lsn 123717382274 2018-03-19 08:39:54 20217 [注意] InnoDB:数据库未正常关闭! 2018-03-19 08:39:54 20217 [注意] InnoDB:开始崩溃恢复。 2018-03-19 08:39:54 20217 [注意] InnoDB:从.ibd 文件读取表空间信息... 2018-03-19 08:39:54 20217 [注意] InnoDB:恢复可能写入一半的数据页 2018-03-19 08:39:54 20217 [注意] InnoDB:来自双写缓冲区...... InnoDB:正在进行恢复:扫描至日志序列号 123717811056 InnoDB:事务 790235434 处于 XA 准备状态。 InnoDB:1 个事务必须回滚或清理 InnoDB:总共有 0 行操作需要撤消 InnoDB:Trx id 计数器为 790235904 2018-03-19 08:39:55 20217 [注意] InnoDB:开始将一批日志记录应用到数据库…… InnoDB:进度百分比:7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 7 InnoDB:应用批次完成 InnoDB:最后一个 MySQL binlog 文件位置 0 697177863,文件名为 mysql-bin.000227 InnoDB:在后台启动未提交事务的回滚 2018-03-19 08:39:56 20217 [注意] InnoDB:128个回滚段处于活动状态。 2018-03-19 08:39:56 7f481bd03700 InnoDB:未准备好的事务回滚已完成 2018-03-19 08:39:56 20217 [注意] InnoDB:等待清除开始 2018-03-19 08:39:56 20217 [注意] InnoDB:Percona XtraDB(http://www.percona.com)5.6.22-71.0已启动;日志序列号123717811056 2018-03-19 08:39:56 20217 [注意] 使用 /var/lib/mysql/mysql-bin 崩溃后恢复 2018-03-19 08:46:36 20217 [注意] 开始崩溃恢复... 2018-03-19 08:46:36 7f491ce677e0 InnoDB:开始 XA 事务的恢复... 2018-03-19 08:46:36 7f491ce677e0 InnoDB:事务 790235434 在恢复后处于准备状态 2018-03-19 08:46:36 7f491ce677e0 InnoDB:事务包含对 1 行的更改 2018-03-19 08:46:36 7f491ce677e0 InnoDB:恢复后有 1 个事务处于准备状态 2018-03-19 08:46:36 20217 [注意] 在 InnoDB 中发现 1 个已准备好的事务 2018-03-19 08:46:36 20217 [注意] 崩溃恢复完成。 2018-03-19 08:46:36 20217 [注意] 未找到 RSA 私钥文件:/var/lib/mysql//private_key.pem。某些身份验证插件将无法工作。 2018-03-19 08:46:36 20217 [注意] 未找到 RSA 公钥文件:/var/lib/mysql//public_key.pem。某些身份验证插件将无法工作。 2018-03-19 08:46:36 20217 [注意] 服务器主机名(绑定地址):'*';端口:3306 2018-03-19 08:46:36 20217 [注意] IPv6 可用。 2018-03-19 08:46:36 20217 [注意] - '::' 解析为 '::'; 2018-03-19 08:46:36 20217 [注意] 在 IP '::' 上创建服务器套接字。 2018-03-19 08:46:37 20217 [注意] 事件调度程序:已加载 0 个事件 2018-03-19 08:46:37 20217 [注意] /usr/sbin/mysqld:已准备好连接。 版本:'5.6.22-71.0-log' 套接字:'/var/lib/mysql/mysql.sock' 端口:3306 Percona Server (GPL),版本 71.0,修订版 726 2018-03-19 08:46:38 20217 [警告] 由于 BINLOG_FORMAT = STATEMENT,使用语句格式将不安全的语句写入二进制日志。在具有多个 UNIQUE KEY 的表上执行 INSERT... ON DUPLICATE KEY UPDATE 是不安全的语句:INSERT INTO xxxx ON DUPLICATE KEY UPDATE xxxx
编辑:根据评论中@impimp 的问题,以下是/var/log/messages
3 月 18 日 04:02:22 主机名 rsyslogd:[原始软件=“rsyslogd”swVersion=“5.8.10”x-pid=“474”x-info=“http://www.rsyslog.com”] rsyslogd 已 HUP 3 月 19 日 08:39:52 HOSTNAME 内核:[103311785.405884] UB 650543 内存不足:OOM 终止进程 21476 (mysqld) 得分 0 vm:6363484kB,rss:4024500kB,交换:45536kB 3 月 20 日 09:17:35 HOSTNAME 内核:[103400050.711461] UB 650543 内存不足:OOM 终止进程 20217 (mysqld) 得分 0 vm:6382720kB,rss:4066652kB,交换:0kB