-
Notifications
You must be signed in to change notification settings - Fork 15
/
mysql主从环境搭建
304 lines (116 loc) · 4.96 KB
/
mysql主从环境搭建
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
Mysql主从环境:
主服务器IP:192.168.199.12 主机名 master
从服务器IP:192.168.199.10 主机名 slave
系统为:centos 6.5 64位
Mysql 5.1.73 64位
sestatus检查
1、关闭防火墙
2、关闭selinux
1.创建安装目录与数据存放目录
mkdir /opt/mysql
mkdir /opt/mysql/data
2.创建mysql用户与组
useradd mysql
id mysql
uid=500(mysql) gid=500(mysql) 组=500(mysql)
3.授权安装目录与数据目录
# chown -R mysql.mysql /opt/mysql/
# chown -R mysql.mysql /opt/mysql/data
4.安装mysql 依赖包
yum install -y autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* openssl* make cmake gcc gcc-c++ ncurses ncurses-devel
下载mysql数据库
$ wget http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz
tar -vzxf mysql-5.1.73.tar.gz
进入mysql安装路径
/opt/mysql
cd mysql-5.1.73
./configure --prefix=/opt/mysql/ --with-charset=utf8 --with-extra-charsets=gbk,utf8,ascii,big5,latin1,binary --with-unix-socket-path=/opt/mysql/tmp/mysql.sock --with-mysqld-user=mysql
make && make install
初始化数据库
修改配置文件和启停脚本
cd /opt/mysql
mkdir etc log tmp var
使他们具有mysql的权限。
chown -R mysql.mysql etc log tmp var
cp share/mysql/my-medium.cnf etc/my.cnf
cp share/mysql/mysql.server bin/
vim etc/my.cnf
在【mysqld】下添加配置项
basedir = /opt/mysql
datadir = /opt/mysql/var
tmpdir = /opt/mysql/tmp
slave-load-tmpdir = /opt/mysql/tmp
pid-file = /opt/mysql/var/mysql.pid
#skip-name-resolve
#skip-symbolic-links
max_connect_errors = 10000
max_connections = 500
wait-timeout = 30
启动数据库
root用户
./bin/mysql_install_db --user=mysql #安装数据库文件
./bin/mysql.server start #出现下面这行说数据库启动ok了
root用户启动
# /opt/mysql/bin/mysql.server start
starting MySQL.
上午刚装完MySQL,启动时报如下错误:
starting MySQL.Manager of pid-file quit without updating file.[FAILED]
解决:
/opt/mysql/bin/mysql_install_db --user=mysql
配置mysql用户
使用./bin目录下的mysql命令可以登录到数据库,登录后删除匿名用户并且为root设置密码:
$ mysql -u root
> delete from mysql.user where user='';
> UPDATE mysql.user SET Password = PASSWORD('password') WHERE user='root';
按照以上同样的步骤再搭建一个mysql,注意,如果在同一主机搭建多个mysql实例,那么就需要将端口改成不同才行。
查看一下mysql版本
show variables like '%version_%';
mysql> show variables like '%dir%';
首先在主库新建专门用于同步的数据库账号sync
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'%' IDENTIFIED BY 'jsb';
主库配置
所有的配置项还是在my.cnf中的[mysqld]下添加。
首先server-id作为MySQL服务器的标识,具有相关联上下游同步系统需具有全局唯一性。主库我们将server-id配置为1。其他主库需要添加的配置有:
server-id=1
# 同步过程中需要忽略的表,支持正则表达式。全库同步时,必须屏蔽mysql系统库和test测试库。
replicate-wild-ignore-table = mysql.%
replicate-wild-ignore-table = test.%
# 需要同步的表,多个表需多次指定,这里我们使用全库同步,方便点
# replicate-do-table = database.table
log-bin = mysql-bin #二进制日志,强制开启
log-bin-index = mysql-bin.index # 记录二进制日志索引文件
relay-log-index = relay-log.index # 记录中继日志索引文件
从库配置
server-id=2
read-only
skip-slave-start
relay-log = mysql-relay
relay-log-index = relay-log.index
log-bin = mysql-bin
log-bin-index = mysql-bin.index
replicate-wild-ignore-table = mysql.%
replicate-wild-ignore-table = test.%
同步设置
启动数据库并查看主库状态
su - mysql
$ /opt/mysql/bin/mysql.server start
Starting MySQL SUCCESS!
$ mysql -uroot -p
-bash: mysql: command not found
[mysql@localhost ~]$ /opt/mysql/bin/mysql -uroot
mysql> show master status;
记录下 mysql-bin 和pid
记下log文件名字和位置,这里是“mysql-bin。000004” 和 “465”
然后启动从库:
[root@localhost bin]# su - mysql
[mysql@localhost ~]$ /opt/mysql/bin/mysql.server start
Starting MySQL SUCCESS!
[mysql@localhost ~]$ /opt/mysql/bin/mysql -uroot
mysql> change master to master_host='192.168.199.126',master_port=3306,master_user='sync',master_password='jsb',master_log_file='mysql-bin.000006',master_log_pos=465;
mysql> start slave; #启动从库
mysql> show slave status\G;
其中Slave_IO_Running和Slave_SQL_Running是yes就对了。
最后,可以验证一下,在主库修改记录,从库可以看到同步过来的变化。
如果显示以下2个YES,则为配置成功:
Slave_IO_Running: Yes #负责从库去主库读取BINLOG日志,并写入从库的中继日志中
Slave_SQL_Running: Yes #负责读取并执行中继日志中的BINGLOG,转换SQL语句后应用到数据库汇总