登陆论坛 找回密码 地图 帮助
宽带山生活
版主:saliven 麦克 银河 

<< [1] >>  [只看楼主] 点击数:232 回复数:16 此贴功能: [管理]

主题:Mysql 达人入........

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2352 
操作系统::redhat as 3

数据库:Mysql 3.23.58



目前以两台数据库相同版本从MASTER 单向同步到 SLAVE 以保持数据的近似相同

采用Mysql replication机制

系统原本一直工作很正常,近来突然发现同步停止了 以下为SLAVE 的mysql log

070925 16:24:21 Slave: connected to master 'repl@192.168.10.51:3306', replication started in log 'log-bin.212' at position 266410

070925 16:24:21 Could not parse log event entry, check the master for binlog corruption

This may also be a network problem, or just a bug in the master or slave code.

070925 16:24:21 Error running query, slave aborted. Fix the problem, and re-start the slave thread with "mysqladmin start-slave". We stopped at log 'log-bin

.212' position 266410

070925 16:24:21 Slave thread exiting, replication stopped in log 'log-bin.212' at position 266410



在企图恢复同步时进行如下操作

删除MASTER 下所有binlog 文件 删除mysql.info 文件

Restart mysqld

检查同步状态 Mysql>show master status 正常

检查msql log 如下

070926 11:58:20 Slave thread killed while connecting to master

070926 11:58:20 Slave thread exiting, replication stopped in log 'FIRST' at position 4

已经开始同步



检查SLAVE 同步状态

mysql> show slave status\G

*************************** 1. row ***************************

Master_Host: 192.168.10.51

Master_User: repl

Master_Port: 3306

Connect_retry: 60

Log_File: log-bin.001

Pos: 31778587

Slave_Running: Yes

Replicate_do_db:

Replicate_ignore_db:

Last_errno: 0

Last_error:

Skip_counter: 0

1 row in set (0.00 sec)



检查SLAVE MYSQL LOG

ERROR: 1062 Duplicate entry '213205725' for key 1

ERROR: 1062 Duplicate entry '213205726' for key 1

ERROR: 1062 Duplicate entry '213205727' for key 1

ERROR: 1062 Duplicate entry '213205728' for key 1

ERROR: 1062 Duplicate entry '213205729' for key 1

ERROR: 1062 Duplicate entry '213205730' for key 1

ERROR: 1062 Duplicate entry '213205731' for key 1

ERROR: 1062 Duplicate entry '213205732' for key 1

ERROR: 1062 Duplicate entry '213205733' for key 1

ERROR: 1062 Duplicate entry '213205734' for key 1

ERROR: 1062 Duplicate entry '213205735' for key 1



错误代码定义

ERROR: 1062 :字段值重复,入库失败



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 14:01:59

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2353 
技术贴无人问津downloading



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 14:14:39

小虾米
1577151

来自:上海
注册:2001-02-17
发帖:718+9259 
初始化master机后,先手工把master机上的数据库复制到salve机上,再同步看看

[此贴子已经被作者于 2007-09-26 14:40:10 编辑过]    




-------------------------------------------------------------------------------------------
世上本无事,庸人自扰之
容天下难容之事
笑天下可笑之人
msn:huyuegui@hotmail.com
QQ:312066776

发表于:2007-09-26 14:37:31

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2355 
由于A机数据庞大 复制的话耗时太大 且本身大部分数据以同步到B机
A与B之间 中断了约1天多的时间 本分有备份机制 这段时间的数据可以考虑放弃

现在只想恢复同步功能...



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 14:41:18
推荐:整理硬盘,发现一些奇瑞图 ...第3楼...

小虾米
1577151

来自:上海
注册:2001-02-17
发帖:718+9260 
mysql复制不是很简单的,只要把数据库文件通过网络copy过去就可以了。就是几G么也是很快的。看了一下网络上的教程。感觉mysql自带的同步在初始时master和slave机上的数据库必须相同。



-------------------------------------------------------------------------------------------
世上本无事,庸人自扰之
容天下难容之事
笑天下可笑之人
msn:huyuegui@hotmail.com
QQ:312066776

发表于:2007-09-26 14:47:12

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2356 
感觉同步机制已经恢复.. 所报ERROR 只是同步时insert的一些错误 是否可以忽略呢?



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 14:48:14
推荐:BMW 325 2级培训 ...第5楼...

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2357 
要是数据只有几个G 我也就COPY 下了...
现在有上百G
而且在DUMP 的时候会锁表 目前业务运行中 长时间锁表是不允许的


难道他的replication机制 在中断后重新同步 必须保持两台数据库中的数据一致性?

[此贴子已经被作者于 2007-09-26 14:52:10 编辑过]    




-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 14:49:22

沙瓦多利
588

来自:上海
注册:2003-09-20
发帖:43+1141 
1、master上执行 mysqldump -F --database DBxxx --opt > /home/DBxxx.sql
2、执行完后,echo "begin work;" > 1.sql,然后 cat DBxxx.sql >> 1.sql,然后 echo "commit;" >> 1.sql
3、把1.sql传到DR
4、在DR上, mysql***** shutdown关闭库,把mysql目录下的内容删干净,注意预先保留my.cnf文件,然后执行mysql/bin/mysql_install_db,然后执行启动mysql
5、在DR上把1.sql导入,然后执行CHANGE MASTER TO MASTER_HOST="Master_IP", MASTER_USER="repl", MASTER_PASSWORD="ur_passwd", MASTER_LOG_FILE="Master上最新生成的log-bin", MASTER_LOG_POS=4;
6、flush privileges;,然后执行 start slave;,使用 show slave status;查看状态



-------------------------------------------------------------------------------------------
Leica M6/EPSON R-D1/Leica R-E/Contax T2/Kodak Retina IIIC
M35/2 ASPH
M90/2 ASPH
R50/2
R135/2.8

发表于:2007-09-26 14:52:47
推荐:宠物医生你来当 ...第7楼...

小虾米
1577151

来自:上海
注册:2001-02-17
发帖:718+9261 
应该无法忽略的。我猜想mysql的同步机制只不过是slave机定期去访问master机上的binlog。然后把binlog里记录的再操作一遍。你现在两边数据不一致了,那边在同步时肯定会有问题的。



-------------------------------------------------------------------------------------------
世上本无事,庸人自扰之
容天下难容之事
笑天下可笑之人
msn:huyuegui@hotmail.com
QQ:312066776

发表于:2007-09-26 14:53:34
推荐:【夏新】商标的惊人发现 ...第8楼...

沙瓦多利
588

来自:上海
注册:2003-09-20
发帖:43+1142 
楼主肯定还是要dump出一个库传过去才行的。



-------------------------------------------------------------------------------------------
Leica M6/EPSON R-D1/Leica R-E/Contax T2/Kodak Retina IIIC
M35/2 ASPH
M90/2 ASPH
R50/2
R135/2.8

发表于:2007-09-26 14:55:59
推荐:马路上拍到的。。。 ...第9楼...

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2358 
  引用:

楼主肯定还是要dump出一个库传过去才行的


这是我最不想看到的... dump上百G数据N多个库downloading



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 15:01:49
推荐:kds官方美食群 ...第10楼...

小虾米
1577151

来自:上海
注册:2001-02-17
发帖:718+9262 
你把binlog都删掉了,叫slave机如何同步中断后的操作?



-------------------------------------------------------------------------------------------
世上本无事,庸人自扰之
容天下难容之事
笑天下可笑之人
msn:huyuegui@hotmail.com
QQ:312066776

发表于:2007-09-26 15:01:51

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2359 
  引用:
你把binlog都删掉了,叫slave机如何同步中断后的操作


删除后 重启MYSQL 会生成新的BINLOG 从新的基点开始读取



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 15:03:31
推荐:马自达销售内幕 连载中 ...第12楼...

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2360 
刚才测试了下
在MASTER 创建新库后 会被同步到SLAVE
同步已经恢复...

在不DUMP整个MASTER的情况下 中断同步那段时间的数据已经没有办法了 可以忽略



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 15:08:02
推荐:百年通用,见证汽车百年历史 ...第13楼...

小虾米
1577151

来自:上海
注册:2001-02-17
发帖:718+9263 
  引用:
同步机制实现概述

  MySQL同步机制基于master把所有对数据库的更新操作(更新、删除 等)都记录在二进制日志里。因此,想要启用同步机制,在master就必须启用二进制日志。详情请看"5.9.4 The Binary Log"。

  每个slave接受来自master上在二进制日志中记录的更新操作,因此在slave上执行了这个操作的一个拷贝。应该非常重要地意识到,二进制日志只是从启用二进制日志开始的时刻才记录更新操作的。所有的slave必须在启用二进制日志时把master上已经存在的数据拷贝过来。如果运行同步时slave上的数据和master上启用二进制日志时的数据不一致的话,那么slave同步就会失败。

  把master上的数据拷贝过来的方法之一实在slave上执行 LOAD DATA FROM MASTER 语句。不过要注意,LOAD DATA FROM MASTER 是从MySQL 4.0.0之后才开始可以用的,而且只支持master上的 MyISAM 类型表。同样地,这个操作需要一个全局的读锁,这样的话传送日志到slave的时候在master上就不会有更新操作了。当实现了锁自由表热备份时(在MySQL 5.0中),全局读锁就没必要了。

  由于有这些限制,因此我们建议只在master上相关数据比较小的时候才执行 LOAD DATA FROM MASTER 语句,或者在master上允许一个长时间的读锁。由于每个系统之间 LOAD DATA FROM MASTER 的速度各不一样,一个比较好的衡量规则是每秒能拷贝1MB数据。这只是的粗略的估计,不过master和slave都是奔腾700MHz的机器且用100MBit/s网络连接时就能达到这个速度了。

  slave上已经完整拷贝master数据后,就可以连接到master上然后等待处理更新了。如果master当机或者slave连接断开,slave会定期尝试连接到master上直到能重连并且等待更新。重试的时间间隔由 --master-connect-retry 选项来控制,它的默认值是60秒。每个slave都记录了它关闭时的日志位置。msater是不知道有多少个slave连接上来或者哪个slave从什么时候开始更新。



-------------------------------------------------------------------------------------------
世上本无事,庸人自扰之
容天下难容之事
笑天下可笑之人
msn:huyuegui@hotmail.com
QQ:312066776

发表于:2007-09-26 15:15:30

人生无希望
5880

来自:上海
注册:2003-07-15
发帖:201+2361 
谢谢LS 两位

我知道现有的做法 很不严谨 毕竟有数据丢失
考虑到假期快来临 为避免假期中出现任何问题 就先把同步恢复起来...

至于丢失的那部分数据 待假期过后 系统空闲时 再进行全局dump



-------------------------------------------------------------------------------------------
面对惨淡的人生 直面淋漓的鲜血 彪捍的活下去!

发表于:2007-09-26 15:29:26

回复主题 [ 返回KDS宽带山 ]
主题: Mysql 达人入........
回复话题
手机看宽带山

关于我们 - 联系我们 - 加入我们 - 营销服务 - 友情链接 - 频道合作- PChome Widget
Copyright © 1996-2008 PChome.net All rights reserved. 电脑之家 版权所有