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

 

多实例的优点:

一台服务器可以创建多个数据库:(只要硬件可以带得起服务)

多实例的缺点:

服务器断电或者硬件损坏,服务就会停止,影响到客户的访问

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

运维螺丝钉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值