跳转至

38. mycat多实例环境准备

1. mycat规划图

img_4.png

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