mysql多实例服务_万金油_新浪博客

什么是多实例
– 在一台物理主机上运行多个数据库服务

• 为什么要使用多实例
– 节约运维成本
– 提高硬件利用率

• 配置步骤说明
– 安装支持多实例服务的软件包
– 修改主配置文件
– 根据配置文件做相应设置
– 初始化授权库
– 启动服务
– 客户端访问

[root@host50 ~]# systemctl  stop  mysqld.service 
[root@host50 ~]# systemctl  disable  mysqld.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/mysqld.service
[root@host50 ~]# ss -ntulp | grep mysql

1.把软件包下载
mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
1.2解包
[root@host50 ~]# tar -zxf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

[root@host50 ~]# ls
mysql-5.7.17.tar
mysql-5.7.20-linux-glibc2.12-x86_64
mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

[root@host50 ~]# ls mysql-5.7.20-linux-glibc2.12-x86_64
bin  COPYING  docs  include  lib  man  README  share  support-files
[root@host50 ~]# ls /usr/local/
bin  etc  games  include  lib  lib64  libexec  sbin  share  src

[root@host50 ~]# mv mysql-5.7.20-linux-glibc2.12-x86_64  /usr/local/mysql

[root@host50 ~]# vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
:wq
[root@host50 ~]# source  /etc/profile——直接运行命令的意思(刷新原)——刷新配置文件
[root@host50 ~]# echo  $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
现在输入命令就不用打绝对路径

创建主配置文件:
[root@host50 ~]# mv /etc/my.cnf /etc/my.cnf.bak——把原有的给改一个名

配置文件参数说明
• 主配置文件 /etc/my.cnf
– 每个实例要有独立的数据库目录和监听端口号
– 每个实例要有独立的实例名称和独立的 sock 文件

[mysqld_multi] // 启用多实例
mysqld = /usr/local/mysql/bin/mysqld_safe // 指定进程文件的路径
mysqladmin = /usr/local/mysql/bin/mysqladmin // 指定管理命令路径
user = root // 指定调用进程的用户
[mysqlX] // 实例进程名称 ,X 表示实例名称 , 如 [mysql2]
port= 3307// 端口号
datadir = /data3307// 数据库目录 ,要手动创建
socket=/data3307/mysql.sock // 指定 sock 文件的路径和名称
pid-file = /data3307/mysqld.pid // 进程 pid 号文件位置
log-error = /data3307/mysqld.err // 错误日志位置

sock 文件:是服务起来才会有这个文件
当关停服务是就会关闭sock文件
服务自己连接自己的时候,是通过sock文件连接



启动服务:
启动服务时会对数据进行初始化

初始化授权库:
– 会提示 root 用户登录的初始化密码
• 启动实例进程
• 停止实例进程
[root@localhost bin]# /mysqld --user=mysql --basedir= 软件安装目录 --datadir= 数据库目录 –initialize // 初始化授权库

[root@stu ~]# mysqld_multi start实例编号   // 启动实例进程

[root@localhost bin]# ./mysqld_multi --user=root --password=密码 stop 实例编号 // 停止实例进程

--datadir= 数据库目录 –initialize  (初始化的意思)

实验步骤:
[root@host50 ~]# vim /etc/my.cnf

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root

[mysqld1]
port    = 3307
datadir = /data3307
socket = /data3307/mysql.sock
pid-file = /data3307/mysqld.pid
log-error = /data3307/mysqld.err

[mysqld2]
port    = 3308
datadir = /data3308
socket = /data3308/mysql.sock
pid-file = /data3308/mysqld.pid
log-error = /data3308/mysqld.err

:wq
可以添加多个数据库,只要硬件带得起

启动进程: (不用重起服务,只要手动初始化就可以了)
[root@host50 ~]# mysqld  --user=mysql  --basedir=/usr/local/mysql --datadir=/data3307  --initialize
[root@host50 ~]# mysqld  --user=mysql  --basedir=/usr/local/mysql --datadir=/data3308  --initialize
要等命令执行完毕,自动跳出来

命令自动创建文件:
[root@host50 ~]# ls  /data3307
auto.cnf  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys
[root@host50 ~]# ls  /data3308
auto.cnf  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys
[root@host50 ~]# ll    /data3307
总用量 110628
-rw-r-----. 1 mysql mysql       56 7月  23 09:07 auto.cnf
-rw-r-----. 1 mysql mysql      419 7月  23 09:07 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 7月  23 09:07 ibdata1
-rw-r-----. 1 mysql mysql 50331648 7月  23 09:07 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 7月  23 09:07 ib_logfile1
drwxr-x---. 2 mysql mysql     4096 7月  23 09:07 mysql
drwxr-x---. 2 mysql mysql     8192 7月  23 09:07 performance_schema
drwxr-x---. 2 mysql mysql     8192 7月  23 09:07 sys
[root@host50 ~]# ll    /data3308
总用量 110628
-rw-r-----. 1 mysql mysql       56 7月  23 09:08 auto.cnf
-rw-r-----. 1 mysql mysql      419 7月  23 09:08 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 7月  23 09:08 ibdata1
-rw-r-----. 1 mysql mysql 50331648 7月  23 09:08 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 7月  23 09:08 ib_logfile1
drwxr-x---. 2 mysql mysql     4096 7月  23 09:08 mysql
drwxr-x---. 2 mysql mysql     8192 7月  23 09:08 performance_schema
drwxr-x---. 2 mysql mysql     8192 7月  23 09:08 sys

启动服务:
[root@host50 ~]# ss -ntulp | grep 3307
[root@host50 ~]# ss -ntulp | grep 3308
[root@host50 ~]# mysqld_multi start 1
[root@host50 ~]# ss -ntulp | grep 3307
tcp    LISTEN     0      80       :::3307                 :::*                   users:(("mysqld",pid=2002,fd=16))
[root@host50 ~]# ls /data3307
auto.cnf        ib_logfile0  mysql       mysql.sock          sys
ib_buffer_pool  ib_logfile1  mysqld.err  mysql.sock.lock
ibdata1         ibtmp1       mysqld.pid  performance_schema
[root@host50 ~]# mysqld_multi start 2
[root@host50 ~]# ss -nutlp | grep 3308
tcp    LISTEN     0      80       :::3308                 :::*                   users:(("mysqld",pid=2516,fd=16))



测试配置:
1.两个初始密码:
3307
2018-07-23T01:07:41.618814Z 1 [Note] A temporary password is generated for root@localhost: _lQI_p#a>3Tv

3308
2018-07-23T01:08:16.381694Z 1 [Note] A temporary password is generated for root@localhost: SKu-01)r+iu_
2.语法格式:
mysql -uroot -p初始密码    -S sock 文件
[root@host50 ~]# mysql -uroot  -p'_lQI_p#a>3Tv'  -S /data3307/mysql.sock
mysql> alter user root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.00 sec)
[root@host50 ~]# mysql -uroot -p"SKu-01)r+iu_"  -S  /data3308/mysql.sock
mysql> alter user root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.00 sec)



停止多实例服务:
mysqld_mutli --user=root --password=密码  stop 编号
 [root@host50 ~]# ss -nutlp | grep 3307
tcp    LISTEN     0      80       :::3307                 :::*                   users:(("mysqld",pid=2002,fd=16))
[root@host50 ~]# mysqld_multi --user=root  --password=123456 stop 1
[root@host50 ~]# ss -nutlp | grep 3307

多实例的优点:
一台服务器可以创建多个数据库:(只要硬件可以带得起服务)
多实例的缺点:
服务器断电或者硬件损坏,服务就会停止,影响到客户的访问




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值