一般能碰到的MySQL启动方式就4种
-
mysql.server方式
-
mysqld_save方式
-
mysqld方式
-
mysqld_multi方式(篇幅有限,以后单讲)
先放结论:一般情况下会mysqld就可以了,其次mysql_save。另外两种可以用来提升高(zhuang)雅(bi)。
那些会让你高雅的东西:
上面提到的几种启动方式是有联系的,简单来讲就是。
mysql.server方式启动调用了mysqld_save方式。
mysqld_save方式启动调用了mysqld方式。
所以说你会mysqld启动就可以了。
mysqld_save就是mysqld+一个守护进程,目的保证挡mysqld被意外干掉的时候,再把他启动起来。(如果是小公司,人手不够的情况可以用mysqld_safe方式,大公司尽量还是用mysqld方式,碰到意外人工启动,并查找原因)
1.mysql.server启动
略过。。。。
放心吧,这辈子暂时不会用上的。。。。
除非你用的LNMP集成包。。。。
2.mysqld_safe启动
mysql在启动的时候会要加载配置文件(后面会写怎么定义)
1.如果定义了defaults-file参数,那么启动的时就会调用定义的参数
2.如果没有定义defaults-file参数,则会参照以下顺序(/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf以下顺序依次加载参数并覆盖)
具体的说明你可以使用 mysqld --verbose --help来查看相关的信息
2.1启动吧mysqld_safe
/usr/local/mysql/bin/mysqld_safe &
如果你按照之前的一篇文章来的话,现在应该是下面这个样子的
然后我们看一眼日志
cat /data/mysql/mysql3316/data/error.log
你应该能在里面看见ready for connection(红色框框)
2.2 刚起就关啊
是的,刚起我们就要关闭了(先讲简单的启动,再说自定义配置文件的方式)
/usr/local/mysql/bin/mysqladmin -S /tmp/mysql.sock shutdown
这样启动的前提是配置文件在下面的标准位置
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
3.mysqld启动
1.启动吧小宇宙
/usr/local/mysql/bin/mysqld &
为了保险起见我们是要查看下error.log下面是否有ready for connection的
cat /data/mysql/mysql3316/data/error.log
效果和刚才的mysqld_safe里面是一样的
2.是的,我们又关闭了
/usr/local/mysql/bin/mysqladmin -S /tmp/mysql.sock shutdown
如果你很轻松的就完成了mysqld和mysqld_safe的启动方式的话,请继续往下看,如果没有的话,别着急,再试一次。
4.配置文件非标准位置启动
准备工作
mv /etc/my.cnf /data/mysql/mysql3316/my3316.cnf
#将etc下的my.cnf移动到指定位置
下面我们在启动的时候加上--defaults-file=xxxx参数就可以了。(有的时候起不来不要慌张。。很大概率是你把defaults-file打错了,别问我怎么知道的)
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql3316/my3316.cnf &
或者
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3316/my3316.cnf &
关闭还是那样关闭,就不多说了,下面讲讲单机多实例的启动
5.多实例MySQL启动(以mysqld为主)
多实例的启动并不复杂,说白了就是我们在上面4.非标准位置配置文件启动的一种变形。
就是选用不同的配置文件,启动两次。
这个实验,我们采用端口3316,3317两个实例,你需要注意下面两点
1.两个实例要不同的配置文件
2.初始化3317数据库
5.1规范配置文件
上面已经说了啊需要注意的两点,那么配置文件中究竟什么不一样呢。就下面几个
-
port
-
sock
-
datadir
-
log-bin
-
tmpdir
-
server-id
所以下面我的要做的就是把3316的配置文件中上面包含的参数规范化以下,如下:我只是列举了必要的参数其他的不变就可以了
#my.cnf
[client]
socket = /tmp/mysql3316.sock
[mysqld]
#misc
datadir = /data/mysql/mysql3316/data
port = 3316
socket = /tmp/mysql3316.sock
tmpdir = /data/mysql/mysql3316/tmp
#binlog
server-id = 813316
log-bin = /data/mysql/mysql3316/data
#注意server-id = 813316,就是我机器IP的最后一位+实例端口号。比如你的虚拟机是192.168.1.66,开3316端口,就建议设置成663316
5.2 创建3317数据库
-
创建目录
mkdir -p /data/mysql/mysql3317/{data,tmp,logs}
chown -R mysql:mysql /data/mysql/mysql3317
#一定要记得把权限改了,否则初始化都过不去的
-
复制配置文件
cp /data/mysql/mysql3316/my3316.cnf /data/mysql/mysql3317/my3317.cnf
-
规范配置文件
将3317的配置文件中上面提到的几个参数修改成对应3317的
vim /data/mysql/mysql3317/my3317.cnf
高雅的时候到了:
你可以用vi的批量替换:
:% s/3316/3317/g
也可以用sed:
sed -i ’s/3316/3317/g’ 3317.cnf
-
初始化数据库
cd /usr/local/mysql/
./scripts/mysql_install_db --defaults-file=/data/mysql/mysql3317/my3317.cnf
如果没有问题就会看见你期待的两个OK
-
启动3316、3317数据库
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3316/my3316.cnf &
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3317/my3317.cnf &
-
看看监听端口的情况
netstat -nalp | grep mysqld
如果顺利的话你应该看到的是下面的图
-
进入数据库
聪明的你这时候应该会发现,这时候用mysql命令已经不能进入数据库了。。。是的,因为咱们修改了配置文件中client用的sock,所以用下面的命令,分别进入3316和3317数据库
mysql -S /tmp/mysql3316.sock
mysql -S /tmp/mysql3317.sock
-
关闭数据库
是的,这个时候我们关闭数据库也需要注意 加上 -S参数(注意是大写S,小写s关不掉,别问我怎么知道的。。)
mysqladmin -S /tmp/mysql3316.sock shutdown
mysqladmin -S /tmp/mysql3317.sock shutdown
今天就先说到这里吧,改天再单独说一下mysql_multi的启动方式,用来提升优雅。虽然mysql_multi是官方推荐的启动方式,但是用写shell的脚本的方式启动多实例是实际生产推荐的。