一台电脑多mysql_在一台计算机上运行多个MySQL实例

在某些情况下,您可能希望在一台计算机上运行多个MySQL实例。

每个实例可以使用不同的MySQL服务器二进制文件,也可以对多个实例使用相同的二进制文件,或者两种方法的任意组合。

限制数据目录必须不同

配置文件安装路径不能相同

socket 文件的生成路径不能相同

启动脚本不能同名

端口不能相同

为了获得更好的性能,可以为每个服务器不同地指定以下选项,以在多个物理磁盘之间分散负载:tmpdir=dir_name

部署

部署多实例有两种方式,使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;

通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,对于同一版本的多实例

不同版本的多实例部署

环境系统:

CentOS 7.6MySQL版本:mysql-5.6.48

mysql-5.7.27

mysql-8.0.18

解压

[root@testinit ~]# tar zxf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz -C /usr/local

[root@testinit ~]# tar zxf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz -C /usr/local

[root@testinit ~]# tar xf mysql-8.0.18-linux-glibc2.12-x86_64.tar -C /usr/local

[root@testinit local]# tar xf /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz -C /usr/local

建立软链

cd /usr/local/

[root@testinit local]# ln -s /usr/local/mysql-5.6.48-linux-glibc2.12-x86_64 mysql56

[root@testinit local]# ln -s /usr/local/mysql-5.7.27-linux-glibc2.12-x86_64 mysql57

[root@testinit local]# ln -s /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64 mysql80

创建用户

shell> groupadd mysql

shell> useradd -r -g mysql -s /bin/false mysql

创建数据文件路径

shell> mkdir -p /app/{mysql_data56,mysql_data57,mysql_data80}

授权

shell> chown mysql:mysql /app/{mysql_data56,mysql_data57,mysql_data80}

shell> chmod 750 /app/{mysql_data56,mysql_data57,mysql_data80}

设置my.cnf

在app目录下生成 my56.cnf my57.cnf my80.cnf,修改参数与路径

主要更改如下参数,修改为对应版本

[mysqld]

port= 3380

basedir=/usr/local/mysql80

datadir=/app/mysql_data80

socket = /app/mysql_data80/mysql.sock

初始化MySQL

5.6初始化

# 初始化

[root@testinit ~]# cd /usr/local/mysql56

[root@testinit mysql56]# scripts/mysql_install_db --defaults-file=/app/my56.cnf --user=mysql

# 启动

[root@testinit mysql56]# bin/mysqld_safe --defaults-file=/app/my56.cnf --user=mysql &

# 修改初始化密码

[root@initnode ~]# /usr/local/mysql56/bin/mysqladmin -u root -p123456 shutdown

5.7初始化

cd /usr/local/mysql57

[root@initnode mysql57]# bin/mysqld --defaults-file=/app/my57.cnf --initialize --user=mysql

# 启动

[root@initnode mysql57]# bin/mysqld_safe --defaults-file=/app/my57.cnf --user=mysql &

# 修改初始密码

[root@initnode mysql57]# cat /app/mysql_data57/error.log |grep password

[root@initnode mysql57]# /usr/local/mysql57/bin/mysql -uroot -S /app/mysql_data57/mysql.sock -p

mysql> alter user user() identified by '123456';

8.0初始化

cd /usr/local/mysql57

[root@initnode mysql80]# bin/mysqld --defaults-file=/app/my80.cnf --initialize --user=mysql

# 启动

[root@initnode mysql80]# bin/mysqld_safe --defaults-file=/app/my80.cnf --user=mysql &

# 修改初始密码

[root@initnode mysql80]# cat /app/mysql_data80/error.log |grep password

[root@initnode mysql80]# /usr/local/mysql80/bin/mysql -uroot -S /app/mysql_data80/mysql.sock -p

mysql> alter user user() identified by '123456';

切换执行环境

使用用户隔离

新建多个用户,每个用户的 .bash_profile 设置对应的环境变量

alternatives

使用 alternatives 进行环境切换

绝对路径

cd 到对应的绝对路径下去进行操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值