38. mycat多实例环境准备¶
1. mycat规划图¶
2. 环境准备¶
#两台虚拟机
192.168.178.161
192.168.178.162
iptables -L
#部署MySQL5.7.20二进制包
3. 准备MySQL5.7.20二进制包¶
ls /usr/local
4. 解压缩二进制包¶
cd /usr/local
tar -zxf MySQL5.7.20*
ls /usr/local
5. 重命名¶
mv /usr/local/... /usr/local/mysql
6. 更改属主属组¶
chown -R mysql.mysql /usr/local/mysql
7. 添加环境变量¶
#如果有以前的环境变量,则删除,重新建
echo "export PATH=/usr/local/mysql/bin:$PATH" >>/etc/profile
source /etc/profile
8. 验证¶
#查看版本
mysql -V
多实例配置¶
1. 前提¶
#mysql5.7.20环境
2. 环境准备¶
#1.两台虚拟机
192.168.178.161:3307,3308,3309,3310
192.168.178.162:3317,3318,3319,3320
3. 删除历史环境¶
#1.关闭mysqld进程
pkill mysqld
#2.删除历史多实例文件
rm -rf /data/330*
#3.备份历史配置文件
mv /etc/my.cnf /etc/my.cnf.bak
4. 创建关键目录¶
#161
mkdir /data/33{07..10}/data -p
#162
mkdir /data/33{17..20}/data -p
5. 初始化数据¶
#161
mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3310/data --basedir=/usr/local/mysql
#162
mysqld --initialize-insecure --user=mysql --datadir=/data/3317/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3318/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3319/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3320/data --basedir=/usr/local/mysql
6. 准备配置文件¶
vim /data/3307/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
port=3307
log-error=/data/3307/mysql.log
log_bin=/data/3307/mysql-bin
binlog_format=row
skip-name-resolve
server-id=7
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
...
7. 准备启动脚本¶
vim /etc/systemd/system/mysqld3307.service
[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=/usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE=5000 #貌似是limit number of file ,最大文件d限制
8. 修改权限¶
chown -R mysql.mysql /data/*
9. 启动多实例¶
#161
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
systemctl start mysqld3310
#162
systemctl start mysqld3317
systemctl start mysqld3308
systemctl start mysqld3309
systemctl start mysqld3310
10. 测试¶
mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
11. 创建脚本实现一键生成配置文件和启动脚本¶
#!/bin/bash
#配置文件3307
cat >/data/3307/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
port=3307
log-error=/data/3307/mysql.log
log_bin=/data/3307/mysql-bin
binlog_format=row
skip-name-resolve
server-id=7
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
EOF
#3308
cat >/data/3308/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
port=3307
log-error=/data/3308/mysql.log
log_bin=/data/3308/mysql-bin
binlog_format=row
skip-name-resolve
server-id=8
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
EOF
#3309
cat >/data/3309/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
port=3307
log-error=/data/3309/mysql.log
log_bin=/data/3309/mysql-bin
binlog_format=row
skip-name-resolve
server-id=9
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
EOF
#3310
cat >/data/3310/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3310/data
socket=/data/3310/mysql.sock
port=3307
log-error=/data/3310/mysql.log
log_bin=/data/3310/mysql-bin
binlog_format=row
skip-name-resolve
server-id=10
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
EOF
#启动脚本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=/usr/local/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=/usr/local/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=/usr/local/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE=5000
EOF
#启动脚本3310
cat >/etc/systemd/system/mysqld3310.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=/usr/local/mysql/bin/mysqld --defaults-file=/data/3310/my.cnf
LimitNOFILE=5000
EOF
10.1 使用循环实现(待验证)¶
#!/bin/bash
for i in 17 18 19 20
do
#配置文件
cat >/data/33${i}/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/33${i}/data
socket=/data/33${i}/mysql.sock
port=33${i}
log-error=/data/33${i}/mysql.log
log_bin=/data/33${i}/mysql-bin
binlog_format=row
skip-name-resolve
server-id=$i
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
EOF
#启动脚本
cat >/etc/systemd/system/mysqld33${i}.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=/usr/local/mysql/bin/mysqld --defaults-file=/data/33${i}/my.cnf
LimitNOFILE=5000
EOF
done
#!/bin/bash
for i in 07 08 09 10
do
#配置文件
cat >/data/33${i}/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/33${i}/data
socket=/data/33${i}/mysql.sock
port=33${i}
log-error=/data/33${i}/mysql.log
log_bin=/data/33${i}/mysql-bin
binlog_format=row
skip-name-resolve
server-id=$i
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1
EOF
#启动脚本
cat >/etc/systemd/system/mysqld33${i}.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=/usr/local/mysql/bin/mysqld --defaults-file=/data/33${i}/my.cnf
LimitNOFILE=5000
EOF
done
最后更新:
2022-02-20 11:21:58