mysql的关闭和启动方式

这里只是阐述我知道的几种启动和关闭方式

使用mysqld来启动mysql数据库
[root@mysql_master ~]# /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

记得需要加后面的&,不加的话,你可以试试看会有什么不同。mysqld是最原始的开启mysql的方法,其他的启动方法,他最终使用的还是用mysqld来启动。
开启完数据库以后,需要检测一下是否正确开启。检查进程是否起来,端口号是否被正确占用

[root@mysql_master ~]#  ps -ef | grep mysql
mysql      2121   2077  0 17:00 pts/0    00:00:02 /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root       2170   2077  0 17:05 pts/0    00:00:00 grep mysql
[root@mysql_master ~]# netstat -anp | grep 3306
tcp        0      0 :::3306                     :::*                        LISTEN      2121/mysqld

使用mysql_safe来启动mysql数据库

第一次我直接使用这种方式启动,竟然报错讲

[root@mysql_master /]# /opt/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
[1] 2856
[root@mysql_master /]# 160301 17:28:38 mysqld_safe Logging to '/data/mysql_master.err'.
160301 17:28:38 mysqld_safe The file /usr/local/mysql/bin/mysqld
does not exist or is not executable. Please cd to the mysql installation
directory and restart this script from there as follows:
./bin/mysqld_safe&
See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more information

[1]+  Exit 1                  /opt/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf

根据提示,cd到了mysql目录,在执行就成功了


[root@mysql_master mysql]# ./bin/mysqld_safe --defaults-file=/etc/my.cnf &
[1] 2969
[root@mysql_master mysql]# 160301 17:32:41 mysqld_safe Logging to '/data/mysql_master.err'.
160301 17:32:41 mysqld_safe Starting mysqld daemon with databases from /data

[root@mysql_master mysql]# ps -ef | grep mysql
root       2969   2077  0 17:32 pts/0    00:00:00 /bin/sh ./bin/mysqld_safe --defaults-file=/etc/my.cnf
mysql      3081   2969  1 17:32 pts/0    00:00:00 /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql --datadir=/data --plugin-dir=/opt/mysql/lib/plugin --user=mysql --log-error=/data/mysql_master.err --pid-file=/data/mysql_master.pid
root       3104   2077  0 17:33 pts/0    00:00:00 grep mysql
[root@mysql_master mysql]#  netstat -anp | grep 3306
tcp        0      0 :::3306                     :::*                        LISTEN      3081/mysqld

这里mysqld_safe和mysqld的区别只是在于mysqld_safe会在数据库死了以后自动再去拉起来,而mysqld死了就死了,不会再去试图拉数据库。
下面试试看就知道了
下看看mysql进程的信息

[root@mysql_master ~]# ps -ef | grep mysql
root       2969   2077  0 17:32 pts/0    00:00:00 /bin/sh ./bin/mysqld_safe --defaults-file=/etc/my.cnf
mysql      3141   2969  1 17:42 pts/0    00:00:00 /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql --datadir=/data --plugin-dir=/opt/mysql/lib/plugin --user=mysql --log-error=/data/mysql_master.err --pid-file=/data/mysql_master.pid
root       3184   2184  0 17:42 pts/1    00:00:00 grep mysql

可以看到这里有一个mysqld进程和mysqld_safe两个进程,真正的mysql数据库进程就是mysqld。然后根据pid杀了他

[root@mysql_master ~]# kill -9 3141

然后再次查看mysqld进程的

[root@mysql_master ~]# ps -ef | grep mysql
root       2969   2077  0 17:32 pts/0    00:00:00 /bin/sh ./bin/mysqld_safe --defaults-file=/etc/my.cnf
mysql      3200   2969  0 17:44 pts/0    00:00:00 /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql --datadir=/data --plugin-dir=/opt/mysql/lib/plugin --user=mysql --log-error=/data/mysql_master.err --pid-file=/data/mysql_master.pid
root       3229   2184  0 17:44 pts/1    00:00:00 grep mysql

可以看到mysqld还是活着的,但是进程号变了,变成了3200。说明mysqld死了以后,mysqld_safe马上就把它拉起来了。你可以试一下在用mysqld启动数据库的时候,杀了它会不会起来。

使用service mysql start来启动

把/opt/mysql/support-files/mysql.server 移动到/etc/init.d/下面就可以了

[root@mysql_master support-files]# cp /opt/mysql/support-files/mysql.server /etc/init.d/mysql
[root@mysql_master support-files]# service mysql start
Starting MySQL                                             [  OK  ]
[root@mysql_master support-files]# service mysql start
Starting MySQL                                             [  OK  ]
[root@mysql_master support-files]# service mysql stop
Shutting down MySQL..                                      [  OK  ]

当然还可直接用/etc/init.d/mysql 使用启动mysql数据库

[root@mysql_master support-files]# /etc/init.d/mysql start
Starting MySQL.                                            [  OK  ]

在看一下进程情况的话,可以看到

[root@mysql_master support-files]# ps -ef | grep mysql
root       4392      1  0 18:03 pts/1    00:00:00 /bin/sh /opt/mysql/bin/mysqld_safe --datadir=/data --pid-file=/data/mysql_master.pid
mysql      4577   4392  0 18:03 pts/1    00:00:00 /opt/mysql/bin/mysqld --basedir=/opt/mysql --datadir=/data --plugin-dir=/opt/mysql/lib/plugin --user=mysql --log-error=/data/mysql_master.err --pid-file=/data/mysql_master.pid
root       4608   2184  0 18:05 pts/1    00:00:00 grep mysql

可以看到这种方式是用mysqld_safe来启动mysql的,那么最终使用的还是mysqld启动的mysql。

关闭mysql数据库

[root@mysql_master support-files]# /opt/mysql/bin/mysqladmin shutdown
[root@mysql_master support-files]# service mysql stop
posted @ 2016-03-01 10:11  weixp  阅读(1467)  评论(0编辑  收藏  举报