MySQL 同版本多实例
环境准备
软件安装位置 | 数据存放位置 | 自定义端口 |
---|---|---|
/data/3307 | /data/3307/data | 3307 |
/data/3308 | /data/3308/data | 3308 |
/data/3309 | /data/3309/data | 3309 |
什么意思?同版本多实例?分身术
在windows下面 我们安装软件 不论版本高低,只能安装一个
在linux系统下,一个软件可以安装很多个,故名理解为多实例。
每个服务启动后,都会有一个端口,所以我们修改它的端口 就可以安装多个软件。
应用场景: 同主机下,主从搭建。
前提条件
MySQL 安装参考文档:
必须有3306的数据库
/data/app/mysql
在原数据库下 克隆多台
生成3组配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
port=3307
server_id=7
EOF
cat > /data/3308/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
port=3308
server_id=8
EOF
cat > /data/3309/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3309/data
socket=/tmp/mysql3309.sock
port=3309
server_id=9
EOF
初始化三组数据
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3308/data
mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3309/data
mv /etc/my.cnf.bak /etc/my.cnf
授权
chown -R mysql. /data/*
准备启动脚本
用原数据库命令启动 并指定克隆实例的配置文件
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=/data/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
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=/data/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF
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=/data/app/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF
启动多实例
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
$ netstat -tlunp
tcp6 0 0 :::3306 :::* LISTEN 3202/mysqld
tcp6 0 0 :::3307 :::* LISTEN 4602/mysqld
tcp6 0 0 :::3308 :::* LISTEN 5362/mysqld
tcp6 0 0 :::3309 :::* LISTEN 1204/mysqld