|
|
环境:windows 7 ,mysql-5.5.18-win32.msi
& \8 \5 A" E2 _, U0 v* o主服务器地址:192.168.1.192
, c P# w2 I4 r$ z$ t' H7 ]从数据库地址:192.168.1.1930 k( G% j1 j+ `, ]- u
ps.某些步骤可在phpmyadmin中设置!教程同样实用于linux注意路径即可,要同步的数据库:test1 同步帐号:slavetb/ A2 O3 P! W% V: N; L3 C0 s. M" m1 ~
: D; ?+ r0 Q/ b2 h* Z流程:- f* g1 A: q8 a8 ?+ q' f
主服务器+ t/ g3 J" B+ [" v; C$ s& ~8 I
1:在mysql下找到my.ini文件,在其[mysqld] 下添加主服务器端配置:/ i! v0 S# l( v# P( t$ s- S
server-id=1 #服务器 id ; j6 \% O# a8 R; P( T2 O2 v
log-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin #二进制文件存放路径
0 }$ A6 a. E2 T8 m) G) B6 d# j7 qbinlog-do-db=test1 #待同步的数据库
% `* I F& w8 lbinlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写" d7 b' d1 T) X) b
binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写& \6 W/ G- J6 X% T5 z0 I$ J
binlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
3 r1 g" B! E2 y4 s8 ^expire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)
9 G7 ^3 O: i- s' G# K/ g4 C8 b- |1 q. l4 c6 U$ q) m5 \4 M0 [
2:保存my.ini文件,重启数据库,然后会在C:\Program Files\MySQL\MySQL Server 5.5 下看到mysql-bin.index 文件和mysql-bin.000001文件;; }, f- t5 F6 T8 a9 i7 d2 }
" m+ Y% M' E" d3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin输入用户名和密码:mysql -u用户名 -p密码 ( mysql -uroot -proot )
0 O4 m$ f- U9 c- [0 ^6 `! S
3 `7 x7 H9 t/ c+ ]2 \8 h4:给要连接的从服务器设置权限:grant replication slave,reload,super on *.* to slavetb@192.168.1.193 identified by '123456'; ps: 给主机192.168.1.193添加权限,用户名:slavetb,密码:123456;注意不要少了;号(只需输入一次就可以了,向数据库中插入一个具有同步权限的帐号,可在phpmyadmin中设置,全局权限管理项选中RELOAD, SUPER, REPLICATION SLAVE即可)2 @, h& z& @- `" l4 a- g
- A' s1 n0 F6 W+ H5:输入命令 show master status\G # 找到File 和 Position 的值记录下来在从服务器(Slave)配置同步关系会有用到的。: N( K0 M9 J b. ~4 A* W
) F( Z; _) h1 @% A; m% X Y h! Y6:备份你要同步的数据库,然后导入从服务器,不要有数据修改添加操作,实在不行可暂时锁下表。
, e5 m8 k6 E+ u" p* o9 f1 q+ W
+ o! ^( q0 f( }) P# s" F其实,主服务器是不需要设置太多信息的,只需要第1条中的前三行就足够了。下面配置从服务器:4 G: b+ o6 S5 L2 q6 d( H
2 H4 k1 I& u+ M! u% X M s1:在mysql下找到my.ini文件,在其[mysqld] 下添加从服务器端配置:0 y, Q* i6 X: z+ y/ ~' s' a8 b
server-id=2 #服务器 id ,不能和主服务器一致
" j. r0 N* c* g Preplicate-do-db=test1 #待同步的数据库,ps.如果只同步test1中的news表可改成这样:replicate-wild-do-table = test1.news% s( \8 |% f$ n4 V. G* [
binlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
8 `& @2 q/ |: Q5 G! {6 M& Nbinlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写! Q Q3 j; T: o8 ^
binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
; c1 P6 Y. T. t. P- ubinlog-ignore-db=test #忽略不同步的数据库,这个可以不用写/ u& C. N# @5 H7 G( y( L% ]
expire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)- p5 H) G( |3 D2 R- Q a
3 m& T/ u/ Q9 E$ c7 i! \: E
2:保存my.ini文件,重启从数据库。ps.在mysql5.1以上版本中有个master设置这里已经取消无效了,如果添加了master设置,数据库就无法重启了;1 ~. A2 y+ S1 \
* P: m- s( V6 }8 \+ H E0 e- {* w/ x4 i
3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin: k3 \3 d9 P& R
# [3 e; Y2 l8 \4 X4:从服务器上测试:mysql -uslavetb -p123456 -h192.168.1.192,查看能否连接主数据库成功,如果成功,则一定要退出来,之前我就是一直犯了一个错误,按照网上的步骤测试完毕之后就没有退出mysql,结果执行以下步骤时老是报错,其原因是一直设置的是主数据库;: w, U& C# i7 M
$ \% J+ Z l( j- g5:修改对主数据库的连接的参数:mysql>change master to master_host='192.168.1.193',master_user='slavetb',master_password='1234562', master_log_file='mysql-bin.000001',master_log_pos=107; ps:最后两个中mysql-bin.000001与107为主服务器配置中第5步记录下来的值。可能会报一个错误,大概的意思是说slave线程正在运行,不能设置,这样的话,执行mysql>stop slave; 停止slave线程,然后再设置连接的参数;
5 Y0 C4 b# ~& h2 C( A$ `4 o
2 H! W4 t" v. j6:设置完之后,执行 mysql> start slave; 开启slave线程;执行mysql> show slave status\G (没有分号),查看Slave_IO_Running: Yes7 j* Z' x3 r' D
Slave_SQL_Running: Yes
9 V/ |. |4 Y) ?
7 q; u9 ]7 d; G9 E9 C- T2 U2 F* M* j* ]8 F' N
7:完毕,在这个过程中我的测试结果一直是Slave_IO_Running:No;让我很是郁闷,一直没找到原因,错误代码如下, 后来找到了,其实原因很简单,当我测试连接主数据库之后我没有退出来,造成接下来的所有步骤都是对主数据库的操作; 其实主主同步也是相同的配置,只是相互为主机和从机的设置; |
|