centos7 脚本部署mysql多实例
实验环境:
centos7
mysql5.7.13
步骤
1.下载安装省略
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.13-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.13-1.el7.x86_64.rpm-bundle.tar
yum -y install mysql-community-client-5.7.13-1.el7.x86_64.rpm
mysql-community-common-5.7.13-1.el7.x86_64.rpm
mysql-community-devel-5.7.13-1.el7.x86_64.rpm
mysql-community-libs-5.7.13-1.el7.x86_64.rpm
mysql-community-server-5.7.13-1.el7.x86_64.rpm
2.创建数据目录
mkdir -p /mydata/33{07…10}
23 touch mysql.log 创建日志文件
24 touch mysql.sock 创建socket连接文件
25 touch mysql.pid 创建进程文件
26 mkdir mysql-bin
27 mkdir data 创建数据目录。【极其重要】
创建完成后,给数据目录下的每个文件授予权限
chown -R mysql:mysql /mydata
3.创建配置文件
36 cat > /mydata/
i
/
m
y
.
c
n
f
<
<
E
O
F
37
[
m
y
s
q
l
d
]
38
d
a
t
a
d
i
r
=
/
m
y
d
a
t
a
/
i/my.cnf <<EOF 37 [mysqld] 38 datadir=/mydata/
i/my.cnf<<EOF37[mysqld]38datadir=/mydata/i/data
39 user=mysql
40 port=
i
41
b
a
s
e
d
i
r
=
/
u
s
r
/
42
s
o
c
k
e
t
=
/
m
y
d
a
t
a
/
i 41 basedir=/usr/ 42 socket=/mydata/
i41basedir=/usr/42socket=/mydata/i/mysql.sock
43
44 log-bin=/mydata/KaTeX parse error: Expected 'EOF', got '#' at position 43: …rmat=row 46 #̲gtid-mode=on 4…i
48 log-slave-updates=1
49 #[mysql]
50 #socket=/mydata/$i/mysql.sock
4.初始化数据库
55 for i in {3307…3310}
56 do
57 mysqld --defaults-file=/mydata/$i/my.cnf --user=mysql --initialize
58 echo $i
59 done
5.启动
65 for i in ls /mydata
;
66 do
67 #mysqld --user=mysql --defaults-file=/mydata/KaTeX parse error: Expected 'EOF', got '&' at position 10: i/my.cnf &̲ 68 mysqld --…i/my.cnf --user=mysql &
69 echo $i
70 done
6.查看进程
ps -aux |grep mysql
7.查看端口
netstat -tunlp |grep 33
到这多实例就ok了
8.可以登陆,修改密码
查看初始化生成的临时密码
grep ‘temporary password’ /mydata/3307/mysql.log
登陆mysql,-S socket重要!!!!不写这玩意,即使写了port ,也是默认登陆3306
mysql -S /mydata/3307/mysql.sock -P 3307 -uroot -p’8u8Y>w)Rs;EG’
修改密码
ALTER USER’root’@'localhost’IDENTIFIED BY ‘你的新密码’;
完整脚本
“mysql.sh” 71L, 1370C
1 #create direactory we need
2 mkdir -p /app/mysql/33{07…10}
3 mkdir -p /mydata/33{07…10}
4
5 #create user,but i think it’s has useless
6 grep ‘mysql’ /etc/passwd
7 if [ KaTeX parse error: Expected 'EOF', got '&' at position 54: … > /dev/null 2>&̲1 10 fi 11 1…UNZIPPATH/
M
Y
S
Q
L
N
A
M
E
"
−
C
/
a
p
p
/
17
P
A
C
K
A
G
E
N
A
M
E
=
m
y
s
q
l
−
c
o
m
m
u
n
i
t
y
18
T
A
R
F
I
L
E
=
MYSQLNAME" -C /app/ 17 PACKAGENAME=mysql-community 18 TARFILE=
MYSQLNAME"−C/app/17PACKAGENAME=mysql−community18TARFILE={MYSQLNAME%.}
19
20 for i in ls /mydata
;
21 do
22 cd /mydata/KaTeX parse error: Expected 'EOF', got '#' at position 190: …mydata 32 33 #̲create config-f…i/my.cnf <<EOF
37 [mysqld]
38 datadir=/mydata/
i
/
d
a
t
a
39
u
s
e
r
=
m
y
s
q
l
40
p
o
r
t
=
i/data 39 user=mysql 40 port=
i/data39user=mysql40port=i
41 basedir=/usr/
42 socket=/mydata/
i
/
m
y
s
q
l
.
s
o
c
k
43
p
i
d
−
f
i
l
e
=
/
m
y
d
a
t
a
/
i/mysql.sock 43 pid-file=/mydata/
i/mysql.sock43pid−file=/mydata/i/mysql.pid
44 log-error=/mydata/
i
/
m
y
s
q
l
.
l
o
g
45
l
o
g
−
b
i
n
=
/
m
y
d
a
t
a
/
i/mysql.log 45 log-bin=/mydata/
i/mysql.log45log−bin=/mydata/i/mysql-bin
1 #create direactory we need
2 mkdir -p /app/mysql/33{07…10}
3 mkdir -p /mydata/33{07…10}
4
5 #create user,but i think it’s has useless
6 grep ‘mysql’ /etc/passwd
7 if [ KaTeX parse error: Expected 'EOF', got '&' at position 54: … > /dev/null 2>&̲1 10 fi 11 1…UNZIPPATH/
M
Y
S
Q
L
N
A
M
E
"
−
C
/
a
p
p
/
17
P
A
C
K
A
G
E
N
A
M
E
=
m
y
s
q
l
−
c
o
m
m
u
n
i
t
y
18
T
A
R
F
I
L
E
=
MYSQLNAME" -C /app/ 17 PACKAGENAME=mysql-community 18 TARFILE=
MYSQLNAME"−C/app/17PACKAGENAME=mysql−community18TARFILE={MYSQLNAME%.}
19
20 for i in ls /mydata
;
21 do
22 cd /mydata/KaTeX parse error: Expected 'EOF', got '#' at position 190: …mydata 32 33 #̲create config-f…i/my.cnf <<EOF
37 [mysqld]
38 datadir=/mydata/
i
/
d
a
t
a
39
u
s
e
r
=
m
y
s
q
l
40
p
o
r
t
=
i/data 39 user=mysql 40 port=
i/data39user=mysql40port=i
41 basedir=/usr/
42 socket=/mydata/
i
/
m
y
s
q
l
.
s
o
c
k
43
p
i
d
−
f
i
l
e
=
/
m
y
d
a
t
a
/
i/mysql.sock 43 pid-file=/mydata/
i/mysql.sock43pid−file=/mydata/i/mysql.pid
44 log-error=/mydata/
i
/
m
y
s
q
l
.
l
o
g
45
l
o
g
−
b
i
n
=
/
m
y
d
a
t
a
/
i/mysql.log 45 log-bin=/mydata/
i/mysql.log45log−bin=/mydata/i/mysql-bin
46 binlog_format=row
47 #gtid-mode=on
48 server-id=KaTeX parse error: Expected 'EOF', got '#' at position 35: …pdates=1 50 #̲[mysql] 51 #…i/mysql.sock
52
53 EOF
54 done
55
56 for i in {3307…3310}
57 do
58 mysqld --defaults-file=/mydata/$i/my.cnf --user=mysql --initialize
59 echo KaTeX parse error: Expected 'EOF', got '#' at position 20: …0 done 61 62 #̲chown -R mysql.…i/my.cnf &
69 mysqld --defaults-file=/mydata/$i/my.cnf --user=mysql &
70 echo $i
71 done
遇到的问题
1.初始化未生成相应的表
basedir 指定的不对 【mysql安装目录】
一开始我以为我在哪儿yum install 就是安装目录
我在/app下install的,结果我查看变量。basedir的值在/usr/
basedir配不好,初始化受影响,未生成相应的表
2.配置过程中权限问题
必须把数据目录,chown - R mysql:mysql data
不然启动会报错。如果使用root登陆也会有相应的报错
也可以使用root,但是使用root会很麻烦,很危险
3.当你启动mysqld ,ps发现有mysqld进程,却没有监听除了3306以外的端口,有几种可能
a. 配置文件里面,端口是否改成了非3306的其他端口
b.配置文件里面是否有【skip-networking】这个东西,有的话注释掉,这个选项的的作用是不监听端口
c.basedir配错了!!!!!!!!!!