linux部署Mysql多实例

mysql多实例的概述

多实例就是在一台服务器上开启多个不同的mysql服务端口,运行多个mysql服务进程。这些进程通过不同的socket监听不同的服务端口,以此来提供不同的服务。

多个实例共用一套安装程序,但有各自的配置文件my.cnf,数据文件,进程以及日志文件等。

多实例优缺点

优点:有效的利用服务器资源

当单个服务器资源有剩余时,可以利用多实例来充分利用服务器的资源来提供更多的服务

缺点:会出现资源互相抢占的现象

当某个实例并发量很高,或者有慢查询时,会消耗服务器更多的cpu、内存、磁盘IO等资源,这时就会影响其他实例提供的服务,访问质量下降。

多实例的应用场景

公司有不同业务数据库要各自独立的需求,同时访问量也不怎么大,服务器资源也有空余的,而且需要通过主从同步技术来提供备份或读写分离时,应该使用多实例。

多实例的部署

1、通过相互隔离的配置文件来实现

2、使用官方自带的mysql_multi来实现(不方便,而且版本不兼容)

实战:部署三个实例,分别由3306、3307、3308端口来监听

1、安装mariadb-server

官方下载二进制安装包

tar xzvf mariadb-10.2.20-linux-x86_64.tar.gz -C /usr/local

cd /usr/local

mv mariadb-10.2.20-linux-x86_64 mysql

注意安装完后不要启动mariadb,因为此时是单实例。

2、创建mysql用户

useradd -r mysql

3、创建各自的多实例的目录并修改权限

mkdir -p /mysql/{3306,3307,3308}/data 

chowm -R mysql:mysql /mysql

4、创建各自的配置文件

cp support-files/my-huge.cnf /mysql/3306/my.cnf

vim /mysql/3306/my.cnf

[client]

port = 3306

socket = /mysql/3306/mysql.sock

[mysqld]

port = 3306

socket = /mysql/3306/mysql.sock

basedir=/usr/local/mysql

datadir=/mysql/3306/data

log-error=/mysql/3306/mysql.log

pid-file=/mysql/3306/mysql.pid

同样配置好3307和3308:

cp /mysql/3306/my.cnf /mysql/3307/my.cnf

cp /mysql/3306/my.cnf /mysql/3308/my.cnf

sed -i 's/3306/3307/g' /mysql/3307/my.cnf

sed -i 's/3306/3308/g' /mysql/3308/my.cnf

5、初始化多实例

cd /usr/local/mysql

./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/3306/data

./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/3307/data

./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/3308/data

查看

tree -L 3 /mysql/  #各自的data目录下是否生成了初始的数据库,-L 3表示只输出三层树结构。

linux部署Mysql多实例_第1张图片

6、修改数据库目录的权限

chown -R mysql:mysql /mysql/

7、启动多实例

/usr/local/mysql/bin/mysqld_safe --defaults-file=/mysql/3306/my.cnf &

/usr/local/mysql/bin/mysqld_safe --defaults-file=/mysql/3307/my.cnf &

/usr/local/mysql/bin/mysqld_safe --defaults-file=/mysql/3308/my.cnf &

注意:起始单实例也是通过mysqld_safe来启动的,默认加载/etc/my.cnf文件

如果出现以下信息

警告:/mysql/3306/my.cnf全局可写,被忽略。是说这个文件每一个用户都可修改my.cnf文件,只需要修改一下权限即可。

chmod 770 -R /mysql      #其他用户都没有权限

再次启动多实例即可。

查看实例是否启动成功

ss -anpl |grep mysqld

linux部署Mysql多实例_第2张图片

8、连接多实例

mysql -uroot -p -S /mysql/3306/mysql.sock

初始密码为空,直接回车即可。可以根据需要修改密码

 

至此,数据库多实例就部署完成了

如有错误,敬请指正~~

你可能感兴趣的:(linux部署Mysql多实例)