今晚我的 MySQL 数据库消失了。我说的是SHOW DATABASES;
只返回“默认”数据库(information_shema、mysql 和 dbispconfig [我的配置面板])。
我查看了一下/var/data/mysql
,所有数据都还在。所以,备份后,我做了一个service mysql restart
,一切恢复正常。
那么,为什么会发生这种情况呢
cat syslog.1 | grep mysql
?
Jun 15 00:03:30 ns222201 named[3699]: built with '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/etc/bind' '--localstatedir=/var' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld' '--with-dlz-postgres=no' '--with-dlz-mysql=no' '--with-dlz-bdb=yes' '--with-dlz-filesystem=yes' '--with-dlz-ldap=yes' '--with-dlz-stub=yes' '--with-geoip=/usr' '--enable-ipv6' 'CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS='
Jun 15 00:03:31 ns222201 /etc/mysql/debian-start[3732]: Upgrading MySQL tables if necessary.
Jun 15 00:03:31 ns222201 /etc/mysql/debian-start[3735]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Jun 15 00:03:31 ns222201 /etc/mysql/debian-start[3735]: Looking for 'mysql' as: /usr/bin/mysql
Jun 15 00:03:31 ns222201 /etc/mysql/debian-start[3735]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Jun 15 00:03:31 ns222201 /etc/mysql/debian-start[3735]: Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock'
Jun 15 00:03:31 ns222201 /etc/mysql/debian-start[3735]: Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' '--socket=/var/run/mysqld/mysqld.sock'
...
[restarting with the wrong tables]
我在那台机器上大约有 15 个数据驱动的网站,我不希望这样的事情再次发生。
知道如何进一步调查吗?
答案1
看来你已经升级了你的 mysql。
mysql_upgrade 通常在数据库服务器升级时运行。它会检查表的一致性,修复问题,然后升级数据库。
大多数旧表都很好,但有时您需要运行升级命令。我只在特定升级时遇到过几次这个问题。
可能您已经升级了 mysql 二进制文件和库,mysql 进程尚未重新启动并且它作为旧版本工作,然后您重新启动了该进程并且它开始作为新版本工作,因此此时需要进行数据库升级。
ubuntu mysql 可能就是这样工作的。RHEL/Centos/Fedora 在软件包更新时升级表并重新加载进程。