首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移数据库后mysql重新启动问题

迁移数据库后mysql重新启动问题
EN

Database Administration用户
提问于 2015-07-13 20:19:02
回答 2查看 3.1K关注 0票数 2

更新:

我知道如何手动终止进程或重新启动mysql,但我想知道为什么会出现此问题,以及为什么服务mysql重新启动不能工作?如何才能从根本上解决这个问题?

启动mysql服务器后,我将所有的用户数据库移动到新的mysql服务器(远程mysql服务器),我们无法重新启动它。

请参阅以下文件:

代码语言:javascript
复制
root@mysql [~]# service mysql restart
Shutting down  

MySQL........................................................................................................................................
.............................................................................
.............................................................................      ....... ERROR!

  ERROR! Failed to stop running server, so refusing to try to start.

然后mysql版本没有运行:

代码语言:javascript
复制
root@mysql [~]# mysqladmin version
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!

您可以看到mysql进程的存在:

代码语言:javascript
复制
root@mysql [~]# ps aux | grep mysql
root      729300  0.0  0.0  11308  1504 ?        S    09:45   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/mysql/mysql/ --pid-file=/mysql/mysql//mysql.shosting.net.pid
mysql     729861  100 22.4 42457756 11070156 ?   Sl   09:45 270:45 /usr/sbin/mysqld --basedir=/usr --datadir=/mysql/mysql/ --plugin-dir=/usr/lib64/mysql/plugin --user=
mysql --log-error=/mysql/mysql//mysql.shosting.net.err --open-files-limit=1024000 --pid-file=/mysql/mysql//mysql.shosting.net.pid

并查看日志:

代码语言:javascript
复制
2015-07-13 13:59:51 729861 [Note] /usr/sbin/mysqld: Normal shutdown

2015-07-13 13:59:51 729861 [Note] Giving 43 client threads a chance to die gracefully
2015-07-13 13:59:51 729861 [Note] Event Scheduler: Purging the queue. 0 events
2015-07-13 13:59:51 729861 [Note] Shutting down slave threads
2015-07-13 13:59:53 729861 [Note] Forcefully disconnecting 42 remaining clients
2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 482  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 499  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 642  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 661  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 678  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 713  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 730  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 747  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 764  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 784  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 801  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 870  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 889  user: 'root'

2015-07-13 13:59:53 729861 [Warning] /usr/sbin/mysqld: Forcing close of thread 836  user: 'root'

在重新启动之前,我在服务器中看到以下查询:

代码语言:javascript
复制
+-----+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------+
| Id  | User | Host      | db                 | Command | Time | State                | Info                                                |
+-----+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------+
| 178 | root | localhost | information_schema | Query   | 763  | checking permissions | SELECT count(*) FROM tables WHERE ENGINE = 'InnoDB' |
| 295 | root | localhost | information_schema | Query   | 463  | checking permissions | SELECT count(*) FROM tables WHERE ENGINE = 'InnoDB' |
| 411 | root | localhost | information_schema | Query   | 163  | checking permissions | SELECT count(*) FROM tables WHERE ENGINE = 'InnoDB' |
| 465 | root | localhost | information_schema | Sleep   | 33   |                      |                                                     |
| 476 | root | localhost |                    | Query   | 0    | init                 | show processlist                                    |
+-----+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------+

如何解决这一问题?

谢谢

EN

回答 2

Database Administration用户

发布于 2015-07-13 20:33:38

Mysql服务器未终止运行,端口已与套接字一起使用。当我们重新启动mysql服务器服务时,有时它不会终止mysql服务器进程并保持在队列中,在这种情况下,您可以在外部终止mysql服务器进程。

代码语言:javascript
复制
sudo kill -9 pid
sudo service mysql start

sudo kill -9 729300

如果您执行mysql导入并覆盖mysql数据库本身,这是一个常见的问题,例如您可能要从mysqldump -A备份恢复。

这是一件好事:您可能希望备份所有mysql用户、权限等--但它可能会对用于干净关闭mysql的debian maint用户造成严重破坏。

虽然这个新数据库可能会同时更改根密码和debian-sys-maint密码,但它当然不会自动更改/etc/mysql/debian.cnf中预期的debian-sys密码。事实上,除非您也备份了该文件,否则您可能已经不知道密码是什么了!

首先要做的是。如果mysql根密码在旧服务器和新服务器之间不同,则可以使用mysqladmin修复它:

代码语言:javascript
复制
mysql -p -u root password 'newpassword'

修正debian系统的主密码。现在,查找debian在新服务器上安装debian时为您创建的debian密码。(您需要sudo,因为这应该是一个高度保护的文件。)

代码语言:javascript
复制
sudo cat /etc/mysql/debian.cnf

现在,使用上面设置的根密码登录到mysql:

代码语言:javascript
复制
mysql -p -u root   # use your new password when prompted

重置debian用户的密码,不要忘记刷新特权:

代码语言:javascript
复制
>  SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('samepassword');
>  FLUSH PRIVILEGES;
>  QUIT

测试以确保其工作正常:

代码语言:javascript
复制
sudo /etc/init.d/mysql restart
票数 2
EN

Database Administration用户

发布于 2015-07-13 21:26:31

当您收到错误消息时

代码语言:javascript
复制
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

这意味着我还没睡。

虽然这意味着不能使用套接字文件连接到mysqld,但在某些条件下仍然可以使用TCP/IP连接mysqld。

使用root@localhost连接时,mysqld将尝试套接字文件。

service mysql ...没有使用TCP/IP的机制。

您必须使用这样的TCP/IP优雅地关闭mysqld

代码语言:javascript
复制
mysqladmin -uroot -p -h127.0.0.1 -P3306 --protocol=tcp shutdown

我以前描述过这种方法。

如果这不起作用,那么您需要执行以下操作;

代码语言:javascript
复制
kill -9 729300
kill -9 729861
service mysql start

这应该是

  1. 杀死mysqld_safe
  2. 杀死米舍尔德
  3. 启动mysqld

首先要杀死mysqld_safe,因为它有一个检查mysqld的无限循环。

我之前描述过这个

如果您杀死mysqld,mysqld_safe将尝试自行重新启动mysqld。最好先杀了mysqld_safe,然后杀了我。那样的话,你就可以按你的条件开始工作了。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/106813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档