Mysql5.7 多实例

什么是mysql多实例?

在一台服务器中装有一个mysql数据库,但是现在的情况是这台服务器的配置非常的高,那么跑一个数据库是不是很浪费,那么我们可以在服务器中跑多个数据库实例,每个数据库实例相互不影响。这里还是一个mysql数据库,只是运行了多个实例,相当于你开了多个QQ一样。从而更好的利用服务器的资源,不用重新买服务器搭建mysql。

一、配置my.cnf文件

 ①在[mysqld] 标签下面添加

# 多实例配置 新建一个mysqld实例
[mysqld1]
port = 3307  # 端口
datadir = /mdata/data1 # 数据目录
socket = /tmp/mysql.sock1 # 设置sock

 

 ②  执行初始化mysqld1 

mysqld --initialize-insecure --datadir=/mdata/data1  ###初始化mysqld --initialize-insecure 初始化且密码为空的意思

 注意:当服务器里面装有多个数据库,版本不一样的话,

执行改命令时最好 加上全路径 例如我的mysql-5.7.16安装在 /usr/local/mysql-5.7.16则 执行

/usr/local/mysql-5.7.16/bin/mysqld --initialize-insecure --datadir=/mdata/data1

因为我在这里执行,跑到另外的低版本的mysql中去了,搞了半天没有通

执行完成之后,就可以看到/mdata/data1 里面有mysql的初始化数据了

③ 配置mysqld_multi

[mysqld_multi]
user=root                                  ## 账号
pass='123456'                              ## 密码 
mysqld = /usr/local/mysql/bin/mysqld_safe  ## 启动mysql的链接
mysqladmin=/usr/local/mysql/bin/mysqladmin ## 关闭mysql的链接
log=/usr/local/mysql/mysqld_multi.log      ## 日志

解析:

mysqld_multi标签下面的

有启动mysql和关闭mysql的链接, 注意关闭mysql的链接是通过mysqladmin的命令关闭的,这里必须是要在mysqld_multi里面配置账户密码,不然执行mysql_multi stop,是不能关闭运行的实例的,user和pass配置的就是 下面的mysqld1和mysql2的账户密码,也可以单独在下面配置。 

命令:mysqladmin -uroot -p123456 -S /tmp/mysql.sock shutdown

这个shutdown其实就是进入mysql实例后直接执行也可以关闭,mysqladmin相当于是登录进去后关闭mysql实例。

a) 这里的坑,mysqld的配置文件默认是在  /usr/local/mysql/bin/mysqld_safe 目录,而我们的mysqld_safe 是在 /usr/local/mysql-5.7.15/bin/目录下面,所以这里需要建立2个软链接,这里是个坑,所以建议我们的mysql最好是建立到/usr/local/mysql目录下面,不要用mysql-5.7.16目录

ln -s /usr/local/mysql-5.7.15/bin/mysqld_safe /usr/local/mysql/bin/mysqld_safe

ln -s /usr/local/mysql-5.7.15/mysql/bin/mysqld   /usr/local/mysql/bin/mysqld  

b) 启动mysqld1 这里实例

 mysqld_multi start 1 启动我们新建的mysqld1实例(我这里是有多个数据库影响了,所以必须带路径)

mysqld_multi stop 1 停止我们的实例

 c) 查看我们的mysqld1实例是否启动成功

mysqld_multi report

 这里显示就是mysqld1实例启动了

启动不成功,需要去看mysql的日志,对应的解决问题即可。

d) 连接mysqld1实例

mysql -S /tmp/mysql.sock1 -u root -p

/tmp/mysql.sock1 是我们配置的连接mysql的sock,这里必须写上,而远程连接的话直接连接端口3307即可 默认的初始密码为空。是因为前面初始化的时候,mysqld --initialize-insecure --datadir=/mdata/data1  ### --initialize-insecure 初始化且密码为空的意思

f) 如果还要建立多个实例的话 则my.cnf配置 

 然后重新初始化即可

小知识:如果单独配置实例则在对应的[mysqld_num] 下面配置参数,如果要共用则在[mysqld]下面配置

 二、 配置不同版本的mysql多实例 再装一个5.6.28的版本

 ① 到mysql官网下载一个 mysql 5.6.28版本的数据库

 ② 解压到/usr/local/mysql-5.6.28目录

  tar -xvf mysql-5.6.28.tar.gz

     并且把目录权限给mysql  

       chown mysql:mysql /usr/local/mysql-5.6.28 -R

   ③ 初始化mysql5.6

cd /usr/local/mysql-5.6.28
scripts/mysql_install_db --user=mysql --datadir=/mdata/data56

    ④ 配置mysql.cnf

[mysqld56]
server-id = 56  ##每个实例不一样的 server-id
port = 3356     ##端口
basedir = /usr/local/mysql-5.6.28  ##mysql5.6.28的解压目录
datadir = /mdata/data56            ##我们的数据目录
socket = /tmp/mysql.sock56         ##本地连接的sock

         ⑤ 启动和关闭

        mysqld_muilt start 56 或者 直接全部启动 mysqld_muilt start

        查看是否启动成功  mysqld_muilt report

        关闭就是stop

         注意:如果批量关闭和启动有问题,那么可能需要配置密码跟其他的实例一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值