多实例配置 ---mysql/linux

多实例的概念
什么是多实例?
 在一台物理主机上运行多个数据库服务 (并不是所有的版本的数据库的可以配置多实例)
• 为什么要使用多实例?
 节约运维成本,提高硬件利用率
配置步骤
• 配置步骤说明
– 安装支持多实例服务的软件包
具体配置(解压软件,修改目录名,修改 PATH 变量)
– 修改主配置文件
– 根据配置文件做相应设置
– 初始化授权库
– 启动服务
– 客户端访问

1.安装提供多实例服务的, mysql数据库服务软件
[root@host56 ~]# mv  mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql  为了方便之后使用命令
[root@host56 ~]# ls /usr/local/mysql/
bin  COPYING  docs  include  lib  man  README  share  support-files
[root@host56 ~]# ls /usr/local/mysql/bin/   ---主要的命令的介绍
mysqld_multi    ----mysql多实例的启用

 mysqldump   --- 备份数据库的 

mysql   ---连接数据库服务

mysqladmin  --改密码的

mysqlbinlog   --看日志的
[root@host56 ~]# echo  "export  PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile

   --- --为了使用方便,把源码包的多实例文件路径添加到系统变量中
[root@host56 ~]# source /etc/profile   --刷新系统环境变量
[root@host56 ~]# echo $PATH     ---检查是否安装成功
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


2 编辑配置文件    

如果服务器上有其他mysql版本的数据库,应该把其他版本的数据库服务停止并设置disable并删除

相应的/etc/my.cnf,然后在自己创建etc/my.cnf。不能在原有的版本的数据库配置文件中进行更改。

否则将会出现错误。
[root@host56 ~]# rm  -rf  /etc/my.cnf
[root@host56 ~]#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=/zhu1         ----指定数据库存放的目录,需要手动创建

socket=/zhu1/mysqld.sock       ---指定sock文件的路径和名称
log-error=/zhu1/mysqld.log      ----指定进程pid号文件位置

pid-file=/zhu1/mysqld.pid      ---指定错误日志位置

[mysqld2] 

port=3308
datadir=/zhu2

socket=/zhu2/mysqld.sock
log-error=/zhu2/mysqld.log

pid-file=/zhu2/mysqld.pid
3 根据配置文件的设置,做相应的配置
3.1创建数据库目录
3.2创建进程运行的所有者和组 mysql

[root@host56 ~]# mkdir -p /zhu1
[root@host56 ~]# mkdir -p /zhu2
[root@host56 ~]# useradd  mysql
c[root@host56 ~]# chown  mysql:mysql  /zhu*

3.3 初始化授权库

在初始化的过程中最后一行会出现该实例的初始化密码。该密码用于开启实例。
[root@host56 ~]#mysqld  --user=mysql  --basedir=/usr/local/mysql   --datadir=/zhu1   --initialize 
2018-05-05T08:47:48.992696Z 1 [Note] A temporary password is generated for root@localhost: 

bXk.5j!pjto#

[root@host56 ~]# ls  /zhu1/      ----当没有开启实例的时候,实例的进程文件下是没有sock文件的。
auto.cnf  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys


[root@host56 ~]#mysqld  --user=mysql  --basedir=/usr/local/mysql  --datadir=/zhu2  --initialize 

2018-05-05T08:50:09.429934Z 1 [Note] A temporary password is generated for root@localhost: 

bKsaf+xzk0V3

[root@host56 ~]# ls /zhu2/ 
auto.cnf  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys

4 启动多实例服务
[root@host56 ~]# mysqld_multi   start   1      -----开启多实例
[root@host56 ~]# mysqld_multi   start   2

[root@host56 ~]# netstat -utnlp  | grep :3308    -----可以查看多实例的端口
tcp6       0      0 :::3308                 :::*                    LISTEN      1156/mysqld     
    
[root@host56 ~]# netstat -utnlp  | grep :3307
tcp6       0      0 :::3307                 :::*                    LISTEN      927/mysqld          
[root@host56 ~]# 

5.访问多实例服务
连接实例服务1,这里的密码是在初始化的时候得到的。
[root@host56 ~]#mysql -uroot   -p'bXk.5j!pjto#'  -S    /zhu1/mysqld.sock

mysql> ALTER USER user() identified   by   "123456";
mysql> quit;

]# mysql  -uroot  -p123456   -S  /zhu1/mysqld.sock
mysql> show databases;
+--------------------+
| Database                    |
+--------------------+
| information_schema |
| mysql                          |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
连接实例服务2
[root@host56 ~]#mysql -uroot   -p'bKsaf+xzk0V3'  -S    /zhu2/mysqld.sock
mysql> alter user  user() identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> quit
Bye
[root@host56 ~]# mysql  -uroot -p123456   -S  /zhu2/mysqld.sock

6.停止启动的实例服务

[root@host56 ~]# netstat -utnlp | grep :3307
tcp6       0      0 :::3307                 :::*                    LISTEN      927/mysqld          
[root@host56 ~]# netstat -utnlp | grep :3308
tcp6       0      0 :::3308                 :::*                    LISTEN      1156/mysqld         
[root@host56 ~]# mysqld_multi  --user=root  --password=123456 stop 1
[root@host56 ~]# netstat -utnlp | grep :3307
[root@host56 ~]# netstat -utnlp | grep :3308
tcp6       0      0 :::3308                 :::*                    LISTEN      1156/mysqld         
[root@host56 ~]# mysqld_multi  --user=root  --password=123456 stop 2
[root@host56 ~]# netstat -utnlp | grep :3308
[root@host56 ~]# mysql -uroot   -p123456   -S    /zhu2/mysqld.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/datatwo/mysqld.sock' (2)


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值