|
|
环境:windows 7 ,mysql-5.5.18-win32.msi $ t+ e% n; r5 P3 @
主服务器地址:192.168.1.192
2 y/ h. i2 n" M! [7 ?从数据库地址:192.168.1.193( q6 |8 T$ I& ^ e5 J4 C
ps.某些步骤可在phpmyadmin中设置!教程同样实用于linux注意路径即可,要同步的数据库:test1 同步帐号:slavetb
) X2 _7 n4 c) t# {& w5 q _3 _+ j! e; ^
: Q) S0 v- @" S$ t( u/ S流程:
8 D1 J/ Q* q" {5 S5 S) s- T主服务器
/ N+ a8 W/ a- ]1:在mysql下找到my.ini文件,在其[mysqld] 下添加主服务器端配置:
* s3 d% B4 X2 c6 Sserver-id=1 #服务器 id 0 H5 [) T( E- i% P: @
log-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin #二进制文件存放路径# Z: @# x l7 n( s4 c& j; }2 b
binlog-do-db=test1 #待同步的数据库7 j% h4 ^, r; G6 N# c
binlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
& D3 r8 z( [/ [ `0 u6 P; Rbinlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写3 L* A; y: E' T. h5 T
binlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
' b$ _: }9 Y. }: `expire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)
# W s3 A4 [7 H2 l
, a: f! @. X _( L# B) r. i1 Y2:保存my.ini文件,重启数据库,然后会在C:\Program Files\MySQL\MySQL Server 5.5 下看到mysql-bin.index 文件和mysql-bin.000001文件;5 O# V2 g* A# w* O4 o5 w& `
* F7 H6 M$ I$ [+ X) Z
3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin输入用户名和密码:mysql -u用户名 -p密码 ( mysql -uroot -proot )6 k- q4 O0 r3 r9 k
: a3 R- f+ o# V# o' h1 h+ i: g) S
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即可)# V' P% t$ p+ V- { D' @3 s
3 ?6 Y0 E$ Q; L) ~; ]/ v# b- }
5:输入命令 show master status\G # 找到File 和 Position 的值记录下来在从服务器(Slave)配置同步关系会有用到的。5 {. Q. O# F8 u$ u" |
A3 R& o6 G8 ~/ J% R
6:备份你要同步的数据库,然后导入从服务器,不要有数据修改添加操作,实在不行可暂时锁下表。6 a1 O" }8 X2 j+ r! s/ f
% U# t& G9 T) l. t2 k其实,主服务器是不需要设置太多信息的,只需要第1条中的前三行就足够了。下面配置从服务器:, X1 T9 Y; V% Z% J0 d/ S
L8 P) O( d a7 ~: b1:在mysql下找到my.ini文件,在其[mysqld] 下添加从服务器端配置:
0 `+ A9 u4 y# F- N/ G$ iserver-id=2 #服务器 id ,不能和主服务器一致# f/ W+ e6 R$ c/ w; _# @
replicate-do-db=test1 #待同步的数据库,ps.如果只同步test1中的news表可改成这样:replicate-wild-do-table = test1.news4 p- R6 f% G4 N1 K1 _
binlog-ignore-db=information_schema #忽略不同步的数据库,这个可以不用写
( z$ S, u$ ~' z3 N4 `binlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写
0 l1 W' W0 N2 g! F/ Z3 D6 z% Jbinlog-ignore-db=mysql #忽略不同步的数据库,这个可以不用写6 _, T) W2 U# R" V1 D# @
binlog-ignore-db=test #忽略不同步的数据库,这个可以不用写
, ~, L" l; F! j% {1 jexpire_logs_days = 7 #超过7天自动删除日志文件可以防止同步日志文件过大(可选项)) W4 U% c! }" g" q
: X) K( A" _% ]2:保存my.ini文件,重启从数据库。ps.在mysql5.1以上版本中有个master设置这里已经取消无效了,如果添加了master设置,数据库就无法重启了;
1 R P1 [$ b# `/ g. o* c+ f8 n
4 Z# i9 p g. I, P @3:通过cmd进入mysql:cd C:\Program Files\MySQL\MySQL Server 5.5\bin
! m1 X7 s- @! X$ S
& B8 e( O A3 c* k: R4:从服务器上测试:mysql -uslavetb -p123456 -h192.168.1.192,查看能否连接主数据库成功,如果成功,则一定要退出来,之前我就是一直犯了一个错误,按照网上的步骤测试完毕之后就没有退出mysql,结果执行以下步骤时老是报错,其原因是一直设置的是主数据库;
' }% ]* A( c, C4 f! X) q3 S5 w" W/ ?+ x
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线程,然后再设置连接的参数;
E N: Z) W. l y( o2 y) t) t' w' U7 w# [8 J$ Q5 d5 c
6:设置完之后,执行 mysql> start slave; 开启slave线程;执行mysql> show slave status\G (没有分号),查看Slave_IO_Running: Yes( d2 m8 y7 Y, g& K$ b# Y/ s
Slave_SQL_Running: Yes
" H) @' i# x: X 6 L6 H E, P* w1 H6 V
6 K9 T1 u& s, B P5 o5 v6 K3 d$ O; p* |7:完毕,在这个过程中我的测试结果一直是Slave_IO_Running:No;让我很是郁闷,一直没找到原因,错误代码如下, 后来找到了,其实原因很简单,当我测试连接主数据库之后我没有退出来,造成接下来的所有步骤都是对主数据库的操作; 其实主主同步也是相同的配置,只是相互为主机和从机的设置; |
|