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