目录

MySQL多实例

概念

优点

命令

案例

操作步骤


MySQL多实例

概念

在一台物理主机上运行多个数据库服务叫多实例

Socket文件:访问本机mysql服务(自己访问自己)时通过socket建立连接

当启动mysqld服务时会自动创建,当停止mysqld服务时会自动删除

优点

节约运维成本

提高硬件利用率

比如有一个游戏网站和一个购物网站要跑,可以在一个服务器上跑两个网站,硬件要求比较高,可以用多实例来实现。

命令

启动服务——首次启动服务会创建root登录初始密码

/usr/local/mysql/bin/mysqld_multi start 实例编号

停止服务

/usr/local/mysql/bin/mysqld_multi –user=root –password=密码 stop 实例编号

案例

操作步骤

1、安装依赖 添加用户

yum –y install libaio  # libaio 是Linux系统提供的异步I/O库

useradd mysql

tar –zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql

2、检查有没有my.cnf,有就删除

ls /etc/my.cnf

rm –rf /etc/my.cnf

3、重新创建my.cnf,配置多实例

vim /etc/my.cnf

[mysqld_multi]         #多实例服务的主配置

mysqld=/urs/local/mysql/bin/mysqld_safe   #指定进程文件路径

mysqladmin=/usr/local/mysql/bin/mysqladmin  #指定管理命令路径

user=root      #指定进程用户

[mysqld1]  #实例1,固定格式

datadir=/dir1     #数据库目录

port=3307       #默认端口,不要用3306  范围是1024-65536

pid-file=/dir1/mysqld1.pid   #存放服务进程PID号的文件,文件名称就是实例名

log-error=/dir1/mysqld1.err  #错误日志文件位置,文件名称就是实例名

socket=/dir1/mysqld1.sock    #指定socket文件的路径和名称,文件名称就是实例名

[mysqld2]  #实例2,固定格式

datadir=/dir2

port=3308

pid-file=/dir2/mysqld2.pid

log-error=/dir2/mysqld2.err

socket=/dir2/mysqld2.sock

4、启动实例1

#dir1目录会自动创建

/usr/local/mysql/bin/mysqld_multi start 1

#注意最后显示的是随机生成的root用户的初始密码

…

… for root@localhost: gryhkM9-W&1D

5、用初始密码登录实例

ls /dir1/

netstar –utnlp | grep mysqld

#看到3307端口

#登录需要指定socket文件

mysql –uroot –p ‘gryhkM9-W&1D’ –S /dir1/mysqld1.sock

#修改密码

mysql> alter user root@”localhost” identified by “123456”;

mysql> exit

#重新登录后,创建个新表

mysql –uroot –p ‘123456’ –S /dir1/mysqld1.sock

mysql> create database gamedb;

mysql> create table gamedb.user(name char(10));

mysql> exit

6、启动实例2

#dir2目录会自动创建

/usr/local/mysql/bin/mysqld_multi start 2

#注意最后显示的是随机生成的root用户的初始密码

…

… for root@localhost: =y(a&amz0Z26#

7、用初始密码登录实例

ls /dir2/

netstar –utnlp | grep mysqld

#看到3308端口

#登录需要指定socket文件

mysql –uroot –p ‘=y(a&amz0Z26#’ –S /dir2/mysqld2.sock

#修改密码

mysql> alter user root@”localhost” identified by “123456”;

mysql> exit

#重新登录后,创建个新表

mysql –uroot –p ‘123456’ –S /dir2/mysqld2.sock

mysql> create database buydb;

mysql> create table buydb.user(name char(10));

mysql> exit

8、停止服务

/usr/local/mysql/bin/mysqld_multi –user=root –password=’123456’ stop 2

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐