【问题标题】:How to recover InnoDB after DB failure?DB故障后如何恢复InnoDB?
【发布时间】:2016-03-06 04:38:23
【问题描述】:

我试图安装 mysqlgovernor,最后我弄得一团糟,现在我所有的网站都关闭了。

root@panel [~]# systemctl status mariadb.service
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: failed (Result: exit-code) since Sun 2016-03-06 06:35:31 CET; 5s ago
  Process: 6244 ExecStartPost=/usr/sbin/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 6243 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
  Process: 6205 ExecStartPre=/usr/sbin/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
  Process: 6179 ExecStartPre=/usr/sbin/mariadb-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 6243 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mariadb.service

Mar 06 06:35:28 panel.uhlhosting.ch mariadb-prepare-db-dir[6205]: touch: cannot touch 'panel.uhlhosting.ch.err': Permission denied
Mar 06 06:35:28 panel.uhlhosting.ch mariadb-prepare-db-dir[6205]: chown: cannot access 'panel.uhlhosting.ch.err': No such file or directory
Mar 06 06:35:28 panel.uhlhosting.ch mariadb-prepare-db-dir[6205]: chmod: cannot access 'panel.uhlhosting.ch.err': No such file or directory
Mar 06 06:35:29 panel.uhlhosting.ch mysqld_safe[6243]: 160306 06:35:29 mysqld_safe Logging to '/var/lib/mysql/panel.uhlhosting.ch.err'.
Mar 06 06:35:29 panel.uhlhosting.ch mysqld_safe[6243]: 160306 06:35:29 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Mar 06 06:35:30 panel.uhlhosting.ch mysqld_safe[6243]: 160306 06:35:30 mysqld_safe mysqld from pid file /var/lib/mysql/panel.uhlhosting.ch.pid ended
Mar 06 06:35:31 panel.uhlhosting.ch systemd[1]: mariadb.service: control process exited, code=exited status=1
Mar 06 06:35:31 panel.uhlhosting.ch systemd[1]: Failed to start MariaDB database server.
Mar 06 06:35:31 panel.uhlhosting.ch systemd[1]: Unit mariadb.service entered failed state.
Mar 06 06:35:31 panel.uhlhosting.ch systemd[1]: mariadb.service failed.
root@panel [~]#

这是我的错误列表:

InnoDB:文件 buf0buf.cc 第 2850 行中线程 140010623854336 中的断言失败

这是重新安装后工作的 MariaDB,并禁用 InnoDB 数据库,但我们不想没有它们。

root@panel [~]# systemctl status mariadb.service
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Sun 2016-03-06 10:16:12 CET; 29min ago
 Main PID: 16551 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─16551 /usr/sbin/mysqld

Mar 06 10:16:12 panel.uhlhosting.ch mysqld[16551]: 2016-03-06 10:16:12 140128996632704 [Note] /usr/sbin/mysqld (mysqld 10.1.12-MariaDB) starting as process 16551 ...
Mar 06 10:16:12 panel.uhlhosting.ch mysqld[16551]: 2016-03-06 10:16:12 140128996632704 [Note] Plugin 'InnoDB' is disabled.
Mar 06 10:16:12 panel.uhlhosting.ch mysqld[16551]: 2016-03-06 10:16:12 140128996632704 [Note] Plugin 'FEEDBACK' is disabled.
Mar 06 10:16:12 panel.uhlhosting.ch mysqld[16551]: 2016-03-06 10:16:12 140128996632704 [Note] Server socket created on IP: '::'.
Mar 06 10:16:12 panel.uhlhosting.ch mysqld[16551]: 2016-03-06 10:16:12 140128995883776 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1286: Unknown storage engine 'InnoDB'
Mar 06 10:16:12 panel.uhlhosting.ch mysqld[16551]: 2016-03-06 10:16:12 140128996632704 [Note] /usr/sbin/mysqld: ready for connections.
Mar 06 10:16:12 panel.uhlhosting.ch mysqld[16551]: Version: '10.1.12-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Mar 06 10:16:12 panel.uhlhosting.ch systemd[1]: Started MariaDB database server.
Mar 06 10:16:54 panel.uhlhosting.ch systemd[1]: Started MariaDB database server.
Mar 06 10:17:00 panel.uhlhosting.ch systemd[1]: Started MariaDB database server.

Server.err

my.cnf file

【问题讨论】:

  • 您是否对数据库和服务器进行了完整备份?如果您正在尝试解决此问题,那么您所做的事情可能会使事情变得更糟 - 因此,您首先要做的就是拍摄快照。
  • @halfer 是的,备份已经到位。
  • 你有多少内存?
  • @RickJames 24 GB 内存。

标签: mysql database mariadb


【解决方案1】:

请查看错误日志的前三行: MariaDB无权写入panel.uhlhosting.ch.err所在目录

您可以通过将此目录的所有者/组更改为 mysql:mysql by chown -R mysql:mysql /path/to/directory/(如果它在 linux 上)来解决此问题。

【讨论】:

  • 这不仅仅是一个简单的权限问题,我尝试了很多方法,但都没有恢复我的数据库;现在所有的数据库都在 MyISAM 中,如果我启用 InnoDB,mariadb 会再次死亡。
  • 它们必须在 MyISAM 中,而这是存储默认格式的表格,当 innodb 被禁用或未知时,就像它写在你的错误日志中一样。我认为您应该停止复制并首先解决 innodb 的问题。
  • 我同意,告诉我如何解决这个问题 :) 这就是我试图在这里获得的一些见解 我不是 MySQL 专家。
  • 所以你肯定在错误的地方工作;)。您可以通过更改 sql 中的存储引擎从 myisam-tables 获取 innodb 表:alter table mytable engine=innodb; 请先通过编辑您的 my.cnf 禁用复制,然后使用启用的 innodb 重新启动它。
  • 160306 06:45:18 mysqld_safe mysqld from pid file /var/lib/mysql/panel.uhlhosting.ch.pid ended 160306 06:50:18 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 的问题没有解决,每次启动都会发生,我在错误日志中看到。是否有另一个数据库在同一硬件上运行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 2018-05-14
相关资源
最近更新 更多