自己遇到的mysql主从同步错误及解决

数据库主从同步做了有1年,期间遇到一些错误,自己查资料摸索解决 % [3 E) d0 N& C
和大家分享一下 4 m4 p8 R! M& z" _: Y, {$ m# U

- j- G7 x+ K) \' T; D- Q1 如果:Slave_IO_Running=NO,Slave_SQL_Running=YES,Last_Errno=0
\4 y- \' V+ U& ~2 B8 Q4 qmysql> slave stop ; - }* y: v. ?/ e9 v& A7 z$ P% a
mysql> slave start; % ?/ q% ^8 D7 m4 C3 W5 p+ k
mysql> show slave status ;
. e' E4 ~: s* b4 H U/ b' l如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0 & N5 F& K# j6 t. X
那么,数据库的replication已经成功启动。 ~& b( C+ \8 \ ~
& h3 U2 t1 n+ Z9 T H, @% m
2 如果提示有duplicated数据,直接delete那条数据之后的,然后
) a4 _- A# D. m% P; V' Xmysql> slave stop ;
% @# r \- T! E; Imysql> slave start;
5 O8 b9 G6 S" s h8 K8 {4 }mysql> show slave status ;
6 n+ Q6 P. C0 V* W5 _1 l0 y X2 b% m% h如果Slave_IO_Running=YES,Slave_SQL_Running=YES,Last_Errno=0 ! o1 j% `5 x4 l1 U* n% A! }6 C
那么,数据库的replication已经成功启动。 + j1 d" `' o" |) R1 p

% N" V( X2 ^+ ?1 r0 E$ U. X( c0 G3 如果还不行,查看错误日志,看看是卡在那个binlog上了,比如 : 卡在000079 . V1 `& b ~7 A/ n6 I
则: 6 Q8 @* q% } x! A+ b& {, q
SLAVE STOP;
7 e" _; R( j% _. h- A. ZCHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000080', MASTER_LOG_POS=0; 6 X5 f, [# V$ v
SLAVE START;
5 o4 d1 W; o2 m: l3 O. B I, ~, O6 Q( n- K% j

3 V' _( o( b2 ?6 o; Z) U0 d4 如果错误提示: [mysql]Table tblName is marked as crashed and should be repaired 2 c/ |) o/ t. ?
Mysql提示tblName表格已损坏,需要修复,解决方法:
! b; O0 E, }' h进入到对应的数据库目录:
/ p. K9 Q3 B3 @9 z6 B2 M7 acd /var/lib/mysql/dbname 2 H& i& Z8 x7 ~
使用myisamchk修复: 3 A5 m. p7 d) d' h0 B/ S/ ]
shell> myisamchk -r tblName - y3 |0 ~) ]" U( Q8 t
如果提示failed
: g( b0 G4 B/ A( ?" q& Eshell> myisamchk -f tblName 9 G+ Y0 }1 `. \; d6 d
强制修复 2 D1 ]5 m. K0 j9 Y9 U
恢复时间比较长,耐心等待修复完成
# T' Z4 s3 A& l' g$ l5 |然后重启mysql就行