ZABBIX4.0登入介面出現錯誤 SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,...
阿新 • • 發佈:2020-12-26
登入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 filefor 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資料庫重新安裝,設定了zabbix使用者許可權,匯入zabbix.sql檔案到zabbix資料庫,,重新啟動zabbix服務恢復正常