我知道如何手动终止进程或重新启动mysql,但我想知道为什么会出现此问题,以及为什么服务mysql重新启动不能工作?如何才能从根本上解决这个问题?
启动mysql服务器后,我将所有的用户数据库移动到新的mysql服务器(远程mysql服务器),我们无法重新启动它。
请参阅以下文件:
root@mysql [~]# service mysql restart
Shutting down
MySQL........................................................................................................................................
.............................................................................
............................................................................. ....... ERROR!
ERROR! Failed to stop running server, so refusing to try to start.然后mysql版本没有运行:
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进程的存在:
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并查看日志:
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'在重新启动之前,我在服务器中看到以下查询:
+-----+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------+
| 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 |
+-----+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------+如何解决这一问题?
谢谢
发布于 2015-07-13 20:33:38
Mysql服务器未终止运行,端口已与套接字一起使用。当我们重新启动mysql服务器服务时,有时它不会终止mysql服务器进程并保持在队列中,在这种情况下,您可以在外部终止mysql服务器进程。
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修复它:
mysql -p -u root password 'newpassword'修正debian系统的主密码。现在,查找debian在新服务器上安装debian时为您创建的debian密码。(您需要sudo,因为这应该是一个高度保护的文件。)
sudo cat /etc/mysql/debian.cnf现在,使用上面设置的根密码登录到mysql:
mysql -p -u root # use your new password when prompted重置debian用户的密码,不要忘记刷新特权:
> SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('samepassword');
> FLUSH PRIVILEGES;
> QUIT测试以确保其工作正常:
sudo /etc/init.d/mysql restart发布于 2015-07-13 21:26:31
当您收到错误消息时
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
mysqladmin -uroot -p -h127.0.0.1 -P3306 --protocol=tcp shutdown我以前描述过这种方法。
Feb 28, 2013:mysql重新启动不会杀死CentOS上的子进程Mar 06, 2013:如何正确地杀死MySQL?Apr 22, 2013:/usr/libexec/mysqld:正常关闭,但我的团队不这样做?如果这不起作用,那么您需要执行以下操作;
kill -9 729300
kill -9 729861
service mysql start这应该是
首先要杀死mysqld_safe,因为它有一个检查mysqld的无限循环。
我之前描述过这个
Mar 06, 2013:米舍尔德_与mysqld不同的安全版本?Jul 11, 2013:146=ECONNREFUSED罕见的错误只持续一秒钟,“无法通过套接字‘/tmp/mysql.sock’(146)连接到本地MySQL服务器”如果您杀死mysqld,mysqld_safe将尝试自行重新启动mysqld。最好先杀了mysqld_safe,然后杀了我。那样的话,你就可以按你的条件开始工作了。
https://dba.stackexchange.com/questions/106813
复制相似问题