ZABBIX4.0登錄界面出現錯誤 SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,...


 

登錄zabbix4.0界面,出現報錯:SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,lastaccess,status) VALUES ('6d1a0523bd8cd53179fcdfc3c397d343','1','1608889582','0')".

 

我遇到的情況是服務器突然斷電,再開機后登錄zabbix web界面出現此情況

初步判斷為mysql數據庫文件損壞,而且數據很重要,立馬做了以下備份操作

1.發現數據庫登錄失敗,掛掉了,服務已經不存在

日志瘋狂報錯

 

進入緊急模式,先導出一份數據出來,修改mariadb 的my.cnf配置

[root@zabbix ~]# vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
innodb_force_recovery = 6 innodb_purge_thread = 0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

innodb_force_recovery=0   表示當需要恢復時執行所有的恢復操作;

innodb_force_recovery=1   表示忽略檢查到的corrupt頁;
innodb_force_recovery=2   表示阻止主線程的運行,如主線程需要執行full purge操作,會導致crash;
innodb_force_recovery=3   表示不執行事務回滾操作;
innodb_force_recovery=4   表示不執行插入緩沖的合並操作;
innodb_force_recovery=5   表示不查看重做日志,InnoDB存儲引擎會將未提交的事務視為已提交;
innodb_force_recovery=6   表示不執行前滾的操作,強制重啟!
 注:我這里的環境不加innodb_purge_thread = 0 服務依然啟動不起來,具體原因不明
 
重新啟動服務
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2020-12-25 18:06:59 CST; 50s ago
  Process: 73481 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 73444 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 73480 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           ├─73480 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─73665 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/maria...

12月 25 18:06:57 zabbix systemd[1]: Starting MariaDB database server...
12月 25 18:06:57 zabbix mariadb-prepare-db-dir[73444]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
12月 25 18:06:57 zabbix mariadb-prepare-db-dir[73444]: If this is not the case, make sure the /var/lib/mysql is empty before running ma...b-dir.
12月 25 18:06:57 zabbix mysqld_safe[73480]: 201225 18:06:57 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
12月 25 18:06:58 zabbix mysqld_safe[73480]: 201225 18:06:58 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
12月 25 18:06:59 zabbix systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.

 導出zabbix數據庫的數據到根目錄命名為zabbix.sql

[root@zabbix ~]# mysqldump --single-transaction -u root -h 127.0.0.1 --password=vrgv123.  zabbix  > /zabbix.sql

 

 導出之后,把之前的mariadb數據庫重新安裝,這里需要注意下,使用yum remove 卸載時,data數據可能還在,需要通過/etc/my.cfg文件查看下data具體路徑,刪除后,再重新安裝mariadb,之后設置zabbix用戶權限,導入zabbix.sql文件到zabbix數據庫,,重新啟動zabbix服務恢復正常

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM