MySql多实例设置

https://blog.csdn.net/qq_21153619/article/details/81529880#%E4%BA%8C%E3%80%81%E5%A4%9A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%90%AD%E5%BB%BA

MySQL多实例

什么是MySQL多实例

MySQL多实例就是一台机器上开启多个不同的服务端口(这是有:3306(默认配置)、3307、3308、3309),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自服务。

MySQL多实例的特点有一下几点

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

  • 节约服务器资源;

  • 资源相互抢占问题,当某个服务实例并发很高时,或者开启慢查询时,会消耗更多的内存CPU磁盘IO资源,导致服务器上的其他实例提供服务的质量下降;

部署mysql多实例的两种方式

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

  第二种是通过官方自带的mysql_multi使用单独的配置文件来实现多实例(一个文件配置多个多实例),这种方式定制每个实例的配置不太方便,优点是管理起来很方便,集中管理。

同一开发环境下安装多个数据库,必须处理以下问题

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

  • 数据库目录不能相同

  • 启动脚本不能同名

  • 端口不能相同

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

多实例搭建

注:这里配置330733083309端口的配置文件

创建需要目录

rm -rf /data/330{7..9}/data/*
rm -rf /binlog/330{7..9}/data/*
mkdir -p /data/330{7..9}/data
mkdir -p /binlog/330{7..9}

配置文件

cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/binlog/3307/mysql-bin
EOF

cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/binlog/3308/mysql-bin
EOF

cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql
datadir=/data/3309/data
socket=/tmp/mysql3309.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/binlog/3309/mysql-bin
EOF

初始化数据

chown -R mysql.mysql /data /binlog
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data  --basedir=/app/database/mysql 
mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data  --basedir=/app/database/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data  --basedir=/app/database/mysql

准备启动脚本

注:之前的环境变量是export PATH=/app/database/mysql/bin:$PATH

#3307启动脚本
cat >/etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
#3308启动脚本
cat >/etc/systemd/system/mysqld3308.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF
#3309启动脚本
cat >/etc/systemd/system/mysqld3309.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF

启动多实例

systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
netstat -tulnp

猜你喜欢

转载自www.cnblogs.com/Mercury-linux/p/12305494.html