|
|
环境:windows 7 ,mysql-5.5.18-win32.msi : M8 I% N# Y# s! q& I- G
主服务器地址:192.168.1.1922 c$ ?( O) f$ ~+ e) g8 V
从数据库地址:192.168.1.193. T& F7 X2 H! M) h3 n; z
ps.某些步骤可在phpmyadmin中设置!教程同样实用于linux注意路径即可,要同步的数据库:test1 同步帐号:slavetb
9 ^9 \1 g) \# O& e3 f3 z6 \% s: r' O5 H3 q
流程:
( o a" s6 l+ n% y- r2 _/ `主服务器
- G: } X! I: W9 p1:在mysql下找到my.ini文件,在其[mysqld] 下添加主服务器端配置:
: H0 o9 ^5 W3 o: @3 [# _server-id=1 #服务器 id * f; n2 t/ I# J: Y
log-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin #二进制文件存放路径9 p* Q$ {* z1 v" y/ c& S" C
binlog-do-db=test1 #待同步的数据库
# M+ t; r5 { l/ Q# E9 `1 ^' cbinlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
* q2 D0 n/ c0 Q+ ]* Y4 Q7 xbinlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
8 j9 o1 i% _/ C) gbinlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
5 f4 O+ g8 `6 O8 t+ G5 Pexpire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)
9 a" M$ K* Q0 O9 x9 D* B' O
n( C9 @5 H; q# L3 J& S2:保存my.ini文件,重启数据库,然后会在C:\Program Files\MySQL\MySQL Server 5.5 下看到mysql-bin.index 文件和mysql-bin.000001文件;
7 p$ R) S4 u& Y/ }- G
1 R( `3 ]/ T1 K g/ h3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin输入用户名和密码:mysql -u用户名 -p密码 ( mysql -uroot -proot )- e( g9 m7 k3 P7 Z8 [! b/ f+ c8 O2 u
1 B( y( H0 ?& W [6 F- 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即可)6 e# s. p2 Z. `" ?: _# s1 ~
i( d% o# r/ T5:输入命令 show master status\G # 找到File 和 Position 的值记录下来在从服务器(Slave)配置同步关系会有用到的。
3 K1 V! M8 _0 M4 ^( A9 v R+ _- T
6:备份你要同步的数据库,然后导入从服务器,不要有数据修改添加操作,实在不行可暂时锁下表。( J- |: S p; `( m1 c) R3 E1 d
6 L6 L, ]/ ]) H3 R9 d
其实,主服务器是不需要设置太多信息的,只需要第1条中的前三行就足够了。下面配置从服务器:) t1 A! ]: ]( J2 ?
( G. \+ v5 d. Z
1:在mysql下找到my.ini文件,在其[mysqld] 下添加从服务器端配置:
. q" q+ u+ C. N: Z1 }( ?7 F% E3 Oserver-id=2 #服务器 id ,不能和主服务器一致! _+ [( {; W$ J
replicate-do-db=test1 #待同步的数据库,ps.如果只同步test1中的news表可改成这样:replicate-wild-do-table = test1.news
" I- w e& U* X3 z8 zbinlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
) O8 W) u$ v( J X0 g6 x6 Tbinlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
& `/ g2 g& N* k% l/ ?; Rbinlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
, h6 ~+ X: b- p% s9 o) Ybinlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
- `1 s5 b+ W% }* F# Oexpire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)1 V- E& Z' d6 H& I
U+ }' Z, p0 P- S% y* Y* Y
2:保存my.ini文件,重启从数据库。ps.在mysql5.1以上版本中有个master设置这里已经取消无效了,如果添加了master设置,数据库就无法重启了;
* {; d" D( h/ J3 l, T# L4 ^ |$ N7 \9 o d2 S, D& Q
3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin, u- o+ C- n. ?/ W) z9 J/ c
5 e) S% G- {7 W4:从服务器上测试:mysql -uslavetb -p123456 -h192.168.1.192,查看能否连接主数据库成功,如果成功,则一定要退出来,之前我就是一直犯了一个错误,按照网上的步骤测试完毕之后就没有退出mysql,结果执行以下步骤时老是报错,其原因是一直设置的是主数据库;, O; i3 c2 l9 o
1 b' I* @5 ^! [& y4 ?2 S8 ^/ D
5:修改对主数据库的连接的参数: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线程,然后再设置连接的参数;
& s/ p4 I4 o9 ]* `
$ X* u5 F. g) L8 n$ |6:设置完之后,执行 mysql> start slave; 开启slave线程;执行mysql> show slave status\G (没有分号),查看Slave_IO_Running: Yes
* T" k, D, b' h8 b/ E0 sSlave_SQL_Running: Yes
: f* b. s9 t% f+ k: M1 n, u& L
- ?8 \" Q6 }* l, m- Y7 g; {5 f( _. ^4 x; l2 X
7:完毕,在这个过程中我的测试结果一直是Slave_IO_Running:No;让我很是郁闷,一直没找到原因,错误代码如下, 后来找到了,其实原因很简单,当我测试连接主数据库之后我没有退出来,造成接下来的所有步骤都是对主数据库的操作; 其实主主同步也是相同的配置,只是相互为主机和从机的设置; |
|