MySQL的启动

一般能碰到的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数据库
  1. 创建目录

mkdir -p /data/mysql/mysql3317/{data,tmp,logs}
chown -R mysql:mysql /data/mysql/mysql3317
#一定要记得把权限改了,否则初始化都过不去的
  1. 复制配置文件

cp /data/mysql/mysql3316/my3316.cnf /data/mysql/mysql3317/my3317.cnf
  1. 规范配置文件
    将3317的配置文件中上面提到的几个参数修改成对应3317的

vim /data/mysql/mysql3317/my3317.cnf

高雅的时候到了:
你可以用vi的批量替换:
:% s/3316/3317/g
也可以用sed:
sed -i ’s/3316/3317/g’ 3317.cnf

  1. 初始化数据库

cd /usr/local/mysql/
./scripts/mysql_install_db --defaults-file=/data/mysql/mysql3317/my3317.cnf

如果没有问题就会看见你期待的两个OK

  1. 启动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 &
  1. 看看监听端口的情况

netstat -nalp | grep mysqld

如果顺利的话你应该看到的是下面的图

  1. 进入数据库
    聪明的你这时候应该会发现,这时候用mysql命令已经不能进入数据库了。。。是的,因为咱们修改了配置文件中client用的sock,所以用下面的命令,分别进入3316和3317数据库

mysql -S /tmp/mysql3316.sock
mysql -S /tmp/mysql3317.sock
  1. 关闭数据库
    是的,这个时候我们关闭数据库也需要注意 加上 -S参数(注意是大写S,小写s关不掉,别问我怎么知道的。。)

mysqladmin -S /tmp/mysql3316.sock shutdown
mysqladmin -S /tmp/mysql3317.sock shutdown

今天就先说到这里吧,改天再单独说一下mysql_multi的启动方式,用来提升优雅。虽然mysql_multi是官方推荐的启动方式,但是用写shell的脚本的方式启动多实例是实际生产推荐的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值