简体   繁体   English

Percona 服务器退出而不更新 PID 文件

[英]Percona server quit without updating PID file

Couldn't figure out what's wrong with MySQL server.无法弄清楚 MySQL 服务器有什么问题。 Error Log is as below.错误日志如下。 I tried the innodb recovery and removing the files and restarting but it didn't help.我尝试了 innodb 恢复并删除文件并重新启动,但没有帮助。 http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html

InnoDB: Serious error! InnoDB is trying to free page 1344
InnoDB: though it is already marked as free in the tablespace!
InnoDB: The tablespace free space info is corrupt.
InnoDB: You may need to dump your InnoDB tables and recreate the whole
InnoDB: database!
InnoDB: Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
160805  9:43:22  InnoDB: Assertion failure in thread 139839724754688 in file fsp0fsp.c line 3329
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
16:43:22 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
Please help us make Percona Server better by reporting any
bugs at http://bugs.percona.com/

key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=153
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 343009 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x35)[0x7ce5a5]
/usr/sbin/mysqld(handle_fatal_signal+0x4b4)[0x6a2f54]
/lib64/libpthread.so.0(+0xf7e0)[0x7f2f139367e0]
/lib64/libc.so.6(gsignal+0x35)[0x7f2f11f915e5]
/lib64/libc.so.6(abort+0x175)[0x7f2f11f92dc5]
/usr/sbin/mysqld[0x919d97]
/usr/sbin/mysqld[0x91a148]
/usr/sbin/mysqld[0x8bb858]
/usr/sbin/mysqld[0x97b427]
/usr/sbin/mysqld[0x97b9d8]
/usr/sbin/mysqld[0x96f907]
/usr/sbin/mysqld[0x88e7a7]
/usr/sbin/mysqld[0x882d6c]
/lib64/libpthread.so.0(+0x7aa1)[0x7f2f1392eaa1]
/lib64/libc.so.6(clone+0x6d)[0x7f2f12047aad]
You may download the Percona Server operations manual by visiting
http://www.percona.com/software/percona-server/. You may find information
in the manual which will help you identify the cause of the crash.
160805 09:43:22 mysqld_safe mysqld from pid file /var/lib/mysql/websult.arvixevps.com.pid ended
InnoDB: Error: log file ./ib_logfile0 is of different size 0 33554432 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!

InnoDB doesn't like it when the log file size is different from what it's expecting.当日志文件大小与预期不同时,InnoDB 不喜欢它。 If there's a risk that the file has been lost or corrupted, it's probably not usable for data recovery.如果存在文件丢失或损坏的风险,则它可能无法用于数据恢复。 Rather than risk further damage to your data, MySQL shuts down. MySQL 会关闭,而不是冒进一步损坏您的数据的风​​险。

The file size of 5MB is the default. 5MB 的文件大小是默认值。 But the size of the log file you have is 32MB.但是您拥有的日志文件的大小是 32MB。 So it's clear that you used to have a configuration that set the log file size to 32MB.所以很明显,您曾经有一个将日志文件大小设置为 32MB 的配置。 Probably someone removed the /etc/my.cnf file, or edited it.可能有人删除了 /etc/my.cnf 文件,或对其进行了编辑。

You can edit your /etc/my.cnf and set:您可以编辑您的 /etc/my.cnf 并设置:

[mysqld]
innodb_log_file_size=33554432

Then restart the MySQL service.然后重启MySQL服务。


"Your database may be corrupt or you may have copied the InnoDB InnoDB: tablespace but not the InnoDB log files." “您的数据库可能已损坏,或者您可能已复制 InnoDB InnoDB: 表空间但未复制 InnoDB 日志文件。”

This is pretty self-explanatory.这是不言自明的。 I suspect you (or someone else) tried to move files around without understanding MySQL.我怀疑您(或其他人)试图在不了解 MySQL 的情况下移动文件。 If you have a recent backup, you could remove the ibdata1 and ib_logfile* , start MySQL, and then restore your backup.如果您有最近的备份,您可以删除ibdata1ib_logfile* ,启动 MySQL,然后恢复您的备份。

If you don't have a backup, you need a MySQL consultant who can fix this.如果你没有备份,你需要一个 MySQL 顾问来解决这个问题。 I recommend https://twindb.com/mysql-data-recovery/ or https://www.percona.com/solutions/fix/data-recovery to get expert help.我推荐https://twindb.com/mysql-data-recovery/https://www.percona.com/solutions/fix/data-recovery以获得专家帮助。

try to add following into /etc/my.cnf尝试将以下内容添加到 /etc/my.cnf

[mysqld] ... [mysqld] ...

innodb_force_recovery = 1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM