从命令行在 CentOS 上正常重启(担心数据库损坏)
Graceful reboot on CentOS from command line (worried about database corruption)
我一直是一个 WHM/Cpanel 人,所以每当需要优雅地重启服务器时,我只是使用 WHM 中的 gui 命令来这样做。
现在,我遇到的情况是我没有 WHM/Cpanel,需要在 ssh 进入后从命令行执行相同的操作。这是 vpc (VMware) 中的一个虚拟机,专用于MySQL/MariaDB 仅 运行 centos。最近通过yum更新了内核,需要重启才能生效
我在搜索时发现了很多不同的意见,例如只是做一些简单的事情:
# reboot
or
# shutdown -r
我主要担心的是:
- 根据我的情况使用正确的命令
- 这个vm是严格针对我们使用innodb的数据库的,当然MySQL本身使用myisam。我最不想做的事情是在重启时数据损坏,我们的数据库无法运行。
reboot
会处理这个问题还是我应该在重启前执行 service mysql stop
?除此之外,它会在重启后自动重启还是需要 service mysql start
?
这两个命令都会在关机和/或重新启动时调用所需的 运行 级别。
shutdown -r
和 reboot
是相同的东西,只要您只称它们为 'as is' 而没有其他选项。
shutdown -r now = reboot after shutdown.
reboot = shutdown then reboot
从使用帮助中摘录;
[root@test ~]# reboot --help
usage: reboot [-n] [-w] [-d] [-f] [-h] [-i]
-n: don't sync before halting the system
-f: force halt/reboot, don't call shutdown.
请注意,如果您调用 shutdown -f
,它将强制执行 halt/reboot,而不是调用 shutdown,同样,-n 也不是您想要的。这样做很糟糕,因为它不会通过那里的初始化脚本优雅地停止服务,并且您最终可能会丢失数据或损坏您的情况。
[root@test~]# shutdown --help
Usage: shutdown [-akrhHPfnc] [-t secs] time [warning message]
-r: reboot after shutdown.
您可能已经注意到,当 CentOS 启动时,它 运行 会通过服务列表并尝试启动它们。在关闭和重新启动(通常)时,相同的列表被优雅地调用到 stop
服务。
如果你真的对你的数据库非常偏执并且想在你重新启动之前双重确定它们已经停止那么你可以直接发出 stop
命令。
`/etc/init.d/mysql stop`
`/etc/init.d/mariadb stop`
然后您将收到服务已停止的确认信息。然后您可以发出 reboot
或 shutdown -r now
命令。
在启动时它应该重新启动任何服务(比如你的 Db 的),只要它们安装正确。您可以通过 运行 执行以下命令 chkconfig --list
来检查这一点,然后在列表中查找您感兴趣的内容,您应该会在 运行 级别看到它们 'start' 3 和 'stop' 在 运行-level 6.
例如
chkconfig --list
mysqld 0:off 1:off 2:off 3:on 4:off 5:off 6:off
我一直是一个 WHM/Cpanel 人,所以每当需要优雅地重启服务器时,我只是使用 WHM 中的 gui 命令来这样做。
现在,我遇到的情况是我没有 WHM/Cpanel,需要在 ssh 进入后从命令行执行相同的操作。这是 vpc (VMware) 中的一个虚拟机,专用于MySQL/MariaDB 仅 运行 centos。最近通过yum更新了内核,需要重启才能生效
我在搜索时发现了很多不同的意见,例如只是做一些简单的事情:
# reboot
or
# shutdown -r
我主要担心的是:
- 根据我的情况使用正确的命令
- 这个vm是严格针对我们使用innodb的数据库的,当然MySQL本身使用myisam。我最不想做的事情是在重启时数据损坏,我们的数据库无法运行。
reboot
会处理这个问题还是我应该在重启前执行service mysql stop
?除此之外,它会在重启后自动重启还是需要service mysql start
?
这两个命令都会在关机和/或重新启动时调用所需的 运行 级别。
shutdown -r
和 reboot
是相同的东西,只要您只称它们为 'as is' 而没有其他选项。
shutdown -r now = reboot after shutdown.
reboot = shutdown then reboot
从使用帮助中摘录;
[root@test ~]# reboot --help
usage: reboot [-n] [-w] [-d] [-f] [-h] [-i]
-n: don't sync before halting the system
-f: force halt/reboot, don't call shutdown.
请注意,如果您调用 shutdown -f
,它将强制执行 halt/reboot,而不是调用 shutdown,同样,-n 也不是您想要的。这样做很糟糕,因为它不会通过那里的初始化脚本优雅地停止服务,并且您最终可能会丢失数据或损坏您的情况。
[root@test~]# shutdown --help
Usage: shutdown [-akrhHPfnc] [-t secs] time [warning message]
-r: reboot after shutdown.
您可能已经注意到,当 CentOS 启动时,它 运行 会通过服务列表并尝试启动它们。在关闭和重新启动(通常)时,相同的列表被优雅地调用到 stop
服务。
如果你真的对你的数据库非常偏执并且想在你重新启动之前双重确定它们已经停止那么你可以直接发出 stop
命令。
`/etc/init.d/mysql stop`
`/etc/init.d/mariadb stop`
然后您将收到服务已停止的确认信息。然后您可以发出 reboot
或 shutdown -r now
命令。
在启动时它应该重新启动任何服务(比如你的 Db 的),只要它们安装正确。您可以通过 运行 执行以下命令 chkconfig --list
来检查这一点,然后在列表中查找您感兴趣的内容,您应该会在 运行 级别看到它们 'start' 3 和 'stop' 在 运行-level 6.
例如
chkconfig --list
mysqld 0:off 1:off 2:off 3:on 4:off 5:off 6:off