Akemi

MySQL多实例

2024/08/31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
环境:
192.168.10.115 mysql8
CentOS Linux release 7.9.2009 (Core)
mysql版本 mysql8.0.15

groupadd mysql
useradd -r -g mysql -s /bin/nologin mysql

1.准备目录与配置文件
mkdir -p /data/330{6..8}/data
cat > /data/3306/my.cnf<<EOF
#[mysql]
#default-character-set=utf8mb4
#socket=/data/3306/mysql.sock
[mysqld]
port=3306
basedir=/app/mysql
datadir=/data/3306/data
socket=/data/3306/mysql.sock
character-set-server=utf8mb4
default-storage-engine=INNODB
log-error=/data/3306/mysql.log
default-authentication-plugin=mysql_native_password
server-id=3306
log_bin=/data/3306/mysql-bin
explicit_defaults_for_timestamp=1
default-storage-engine=INNODB
EOF
cat > /data/3307/my.cnf<<EOF
#[mysql]
#default-character-set=utf8mb4
#socket=/data/3307/mysql.sock
[mysqld]
port=3307
basedir=/app/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
character-set-server=utf8mb4
default-storage-engine=INNODB
log-error=/data/3307/mysql.log
default-authentication-plugin=mysql_native_password
server-id=3307
log_bin=/data/3307/mysql-bin
explicit_defaults_for_timestamp=1
default-storage-engine=INNODB
EOF
cat > /data/3308/my.cnf<<EOF
#[mysql]
#default-character-set=utf8mb4
#socket=/data/3308/mysql.sock
[mysqld]
port=3308
basedir=/app/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
character-set-server=utf8mb4
default-storage-engine=INNODB
log-error=/data/3308/mysql.log
default-authentication-plugin=mysql_native_password
server-id=3308
log_bin=/data/3308/mysql-bin
explicit_defaults_for_timestamp=1
default-storage-engine=INNODB
EOF

2.数据库初始化
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.15-linux-glibc2.12-x86_64/bin/mysql* /bin/
\cp -R mysql-8.0.15-linux-glibc2.12-x86_64/* /app/mysql/
mkdir -p /app/mysql
chown -R mysql:mysql /data
chown -R mysql:mysql /app/
mysqld --initialize-insecure --user=mysql --datadir=/data/3306/data --basedir=/app/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/mysql
#所有实例都共享同一个MySQL安装目录

3.自动启动配置文件与验证
cat >/etc/systemd/system/mysqld3306.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf
LimitNOFILE=65536
LimitNPROC=65536
EOF
cat >/etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE=65536
LimitNPROC=65536
EOF
cat >/etc/systemd/system/mysqld3308.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE=65536
LimitNPROC=65536
EOF
systemctl daemon-reload
systemctl start mysqld3306.service
systemctl start mysqld3307.service
systemctl start mysqld3308.service
netstat -lnp|grep 330
#tcp6 0 0 :::33060 :::* LISTEN 5499/mysqld
#tcp6 0 0 :::3306 :::* LISTEN 5499/mysqld
#tcp6 0 0 :::3307 :::* LISTEN 5576/mysqld
#tcp6 0 0 :::3308 :::* LISTEN 5596/mysqld
#unix 2 [ ACC ] STREAM LISTENING 29913 5596/mysqld /data/3308/mysql.sock
#unix 2 [ ACC ] STREAM LISTENING 29912 5576/mysqld /data/3307/mysql.sock
#unix 2 [ ACC ] STREAM LISTENING 29898 5499/mysqld /data/3306/mysql.sock

#验证
mysql -S /data/3306/mysql.sock -e "select @@server_id"
mysql -S /data/3307/mysql.sock -e "select @@server_id"
mysql -S /data/3308/mysql.sock -e "select @@server_id"

CATALOG