|
|
环境:windows 7 ,mysql-5.5.18-win32.msi
8 z) _$ |8 N) s( _; E4 m, k主服务器地址:192.168.1.192
% O0 f/ n8 R$ {6 a9 l3 d从数据库地址:192.168.1.193
$ M2 B. q1 ]3 g5 S: H: qps.某些步骤可在phpmyadmin中设置!教程同样实用于linux注意路径即可,要同步的数据库:test1 同步帐号:slavetb- O9 a! U4 z( c- K0 K+ L1 }. h/ x5 X
' G# @' S5 A- I7 J( L* |! X流程:( V3 U5 L4 ^" G5 W4 M8 F
主服务器 E1 z2 C/ c0 [% @5 Y3 k
1:在mysql下找到my.ini文件,在其[mysqld] 下添加主服务器端配置:: a. ~- c2 D$ ^7 z3 z3 Z" N1 t
server-id=1 #服务器 id
4 n; G- ?: \/ D% M* t* B# K3 rlog-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin #二进制文件存放路径1 n& k# v$ q& O; p9 ]
binlog-do-db=test1 #待同步的数据库; G9 B9 L& C; A: h
binlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
( ]; y4 h H3 x( S0 ?5 g# j5 Ibinlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写& n `+ J. M) k6 N
binlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
% U" Y3 A5 s* i! U0 cexpire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)
% l' n+ N9 ?- M2 _; q
. H! s$ X, H3 r/ ]6 x7 y4 V8 g9 r2:保存my.ini文件,重启数据库,然后会在C:\Program Files\MySQL\MySQL Server 5.5 下看到mysql-bin.index 文件和mysql-bin.000001文件;2 v2 ?5 V" A8 A& U; \; g
5 V; o' g; `6 t. N2 A3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin输入用户名和密码:mysql -u用户名 -p密码 ( mysql -uroot -proot )
" E8 ` a* Z0 x9 Q3 I- t7 N8 G4 V; m2 M! J# J, T
4:给要连接的从服务器设置权限: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即可)
- L, t/ S* K8 Q# }& q; s
. [" H* X5 f# B) k' W2 ^5:输入命令 show master status\G # 找到File 和 Position 的值记录下来在从服务器(Slave)配置同步关系会有用到的。
; Q1 f1 e9 h5 O; h# J" ^/ W, Z3 K* h3 p! s- |( R8 B( t0 `
6:备份你要同步的数据库,然后导入从服务器,不要有数据修改添加操作,实在不行可暂时锁下表。
3 X' Q1 I. ]5 m7 o9 s& k3 b( n$ R0 q4 r6 b
其实,主服务器是不需要设置太多信息的,只需要第1条中的前三行就足够了。下面配置从服务器:7 s F9 k6 s; \4 o
/ g! U. K. c# ?% p6 G: K
1:在mysql下找到my.ini文件,在其[mysqld] 下添加从服务器端配置:
. N* M, d' m) Q0 g- N5 mserver-id=2 #服务器 id ,不能和主服务器一致
& P1 f, C5 p! F9 U: ireplicate-do-db=test1 #待同步的数据库,ps.如果只同步test1中的news表可改成这样:replicate-wild-do-table = test1.news
" }$ Z n9 P+ d6 C9 I6 w, `binlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写- G! B, ]0 e' U9 G
binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写% C/ Y0 L2 A, j, h$ C
binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
) m- e8 m) D) R& J }binlog-ignore-db=test #忽略不同步的数据库,这个可以不用写0 q+ d1 i* U# _
expire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)
/ h: J" c* R M2 z8 Y% v8 u& |& b; n% `8 |- W$ q# i$ z
2:保存my.ini文件,重启从数据库。ps.在mysql5.1以上版本中有个master设置这里已经取消无效了,如果添加了master设置,数据库就无法重启了;
, s9 O$ ?8 j( B& A4 G6 e7 R& r* V9 f: @4 _3 O2 l
3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin
/ f/ m! w- o4 O3 o2 b& v
* F% J5 s% {. z" m; s4:从服务器上测试:mysql -uslavetb -p123456 -h192.168.1.192,查看能否连接主数据库成功,如果成功,则一定要退出来,之前我就是一直犯了一个错误,按照网上的步骤测试完毕之后就没有退出mysql,结果执行以下步骤时老是报错,其原因是一直设置的是主数据库;" S* G) h* F9 u
( v* x- a% \) F, L5:修改对主数据库的连接的参数: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线程,然后再设置连接的参数;) W& [, h$ G! y6 e
( e* Q- P3 T# b# {6:设置完之后,执行 mysql> start slave; 开启slave线程;执行mysql> show slave status\G (没有分号),查看Slave_IO_Running: Yes% I3 N2 m- @: a- E4 I% r8 ~
Slave_SQL_Running: Yes
! H" Q, p' V6 ~/ Z- W ! p4 j/ O2 k: n. F5 F+ o
) ]4 G; P- S5 A
7:完毕,在这个过程中我的测试结果一直是Slave_IO_Running:No;让我很是郁闷,一直没找到原因,错误代码如下, 后来找到了,其实原因很简单,当我测试连接主数据库之后我没有退出来,造成接下来的所有步骤都是对主数据库的操作; 其实主主同步也是相同的配置,只是相互为主机和从机的设置; |
|