vlambda博客
学习文章列表

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/datamysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3308/datamysqld --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 ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target[Install]WantedBy=multi-user.target[Service]User=mysqlGroup=mysqlExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnfLimitNOFILE = 5000EOF cat > /etc/systemd/system/mysqld3308.service <<EOF[Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target[Install]WantedBy=multi-user.target[Service]User=mysqlGroup=mysqlExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnfLimitNOFILE = 5000EOF  cat > /etc/systemd/system/mysqld3309.service <<EOF[Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target[Install]WantedBy=multi-user.target[Service]User=mysqlGroup=mysqlExecStart=/data/app/mysql/bin/mysqld --defaults-file=/data/3309/my.cnfLimitNOFILE = 5000EOF


启动多实例

systemctl start mysqld3307systemctl start mysqld3308systemctl start mysqld3309
$ netstat -tlunptcp6 0 0 :::3306 :::* LISTEN 3202/mysqldtcp6 0 0 :::3307 :::* LISTEN 4602/mysqldtcp6 0 0 :::3308 :::* LISTEN 5362/mysqld tcp6       0      0 :::3309       :::*      LISTEN      1204/mysqld