爱心技术专栏专题

我的互为备份的两台机子启动时怎么占用了大量的内存里cache空间

摘录:Mysql教程 来源:Mysql教程 加入时间:2007年03月25日
摘要:
我的互为备份的两台机子启动时怎么占用了大量的内存里cache空间


?我如果把一台服务停掉,重起另外一台就没有这个问题,请问这是什么原因,应该如何解决?
    是否因为太多的连接并且读写过于频繁,而我只有一个mysql服务的原因?

http://www.51dibs.com
/html/2006/article/info22/a_9b7efde7a46bba8e.htm

我的互为备份的两台机子启动时怎么占用了大量的内存里cache空间

站点:爱心种子小博士 关键字:我的互为备份的两台机子启动时怎么占用了大

   
我的互为备份的两台机子启动时怎么占用了大量的内存里cache空间

我的互为备份的两台机子启动时怎么占用了大量的内存里cache空间?我如果把一台服务停掉,重起另外一台就没有这个问题,请问这是什么原因,应该如何解决?
    是否因为太多的连接并且读写过于频繁,而我只有一个mysql服务的原因?

 yejr 回复于:2004-12-26 14:19:07
可能是同步的时间太频繁了,而且数据量大导致的.

 mxblovemusic 回复于:2004-12-27 01:33:24
谁能告诉我应该如何减低内存中的cache

 北京野狼 回复于:2004-12-27 16:55:38
[quote:cd11e11cc7="mxblovemusic"]我的互为备份的两台机子启动时怎么占用了大量的内存里cache空间?我如果把一台服务停掉,重起另外一台就没有这个问题,请问这是什么原因,应该如何解决?
    是否因为太多的连接并且读写过于频繁,而我只有一个mysql..........[/quote:cd11e11cc7]

我一直想知道怎么做到两个机器的数据库互为备份

能不能说说

 yejr 回复于:2004-12-27 19:12:55
跟普通的同步类似,都定义server-id和master-server等相关的参数即可

 北京野狼 回复于:2004-12-27 21:43:35
[quote:59f6a2ab2a="yejr"]跟普通的同步类似,都定义server-id和master-server等相关的参数即可[/quote:59f6a2ab2a]

那同一段记录,这边update了,那边delete了,那个同步那个

 北京野狼 回复于:2004-12-27 22:40:31
[quote:aba8c8e98b="北京野狼"]

mysql同步是基于日志的
那同一段记录,这边update了,那边delete了,那个同步那个[/quote:aba8c8e98b]

 yejr 回复于:2004-12-27 22:44:33
看看同步时的先后顺序了 :)

 yejr 回复于:2004-12-27 22:45:12
如果出现脏数据,就会报错的,那时候只好手工处理一次了

 北京野狼 回复于:2004-12-28 00:53:07
[quote:a2b959ecba="yejr"]如果出现脏数据,就会报错的,那时候只好手工处理一次了[/quote:a2b959ecba]

老兄,你这不是说梦话吗?
又不是主从关系,那一天脏数据得有几十万个,怎么可能互相同步?
设置什么顺序也没有用,

 yejr 回复于:2004-12-28 10:23:51
没人叫你非要做互备不可.

 icebolt 回复于:2004-12-28 12:31:46
作同步,没必要作互备份呀,两台机子都操纵主mysql就可以了

 北京野狼 回复于:2004-12-28 13:09:12
[quote:3dbcf7cad3="yejr"]没人叫你非要做互备不可.[/quote:3dbcf7cad3]

我只是在论坛上,包括web服务器版,看到有很多人说互备这个问题,
楼主也是说自己实现互备。
我只是实在不理解,现在技术怎么先进到这种程度

 yejr 回复于:2004-12-28 20:25:57
数据库只能尽量减少脏数据的产生,但是如果认为或者程序的不完善产生的就应该调整程序了,不可能什么都想依赖数据库来做这些的.
双机互备确实很简单,自己做一下就知道了.

 北京野狼 回复于:2004-12-28 20:43:18
[quote:16b7a99873="yejr"]数据库只能尽量减少脏数据的产生,但是如果认为或者程序的不完善产生的就应该调整程序了,不可能什么都想依赖数据库来做这些的.
双机互备确实很简单,自己做一下就知道了.[/quote:16b7a99873]

怎么调整程序?
两个数据库既然互备,应用程序怎么知道该往那个数据库进行写操作。

你告诉我对与互备的两个数据库,应用程序往那个数据库进行写

 yejr 回复于:2004-12-28 21:16:36
双机互备一般用意是作为热备份的替代.
既然是"双机",那么程序里肯定可以指定只往哪个机器写数据,即使在同一台机器上,也必然有2个不同的端口什么的.
当然,使用dns轮询的情况比较特殊,但是似乎很少有对数据库服务器做dns论询的吧,即使做了,也一样可以指定只往某个服务器写数据的.

 北京野狼 回复于:2004-12-28 21:43:38
[quote:0dfde7f461="yejr"]双机互备一般用意是作为热备份的替代.
既然是"双机",那么程序里肯定可以指定只往哪个机器写数据,即使在同一台机器上,也必然有2个不同的端口什么的.
当然,使用dns轮询的情况比较特殊,但是似乎很少有对数据库服务器?.........[/quote:0dfde7f461]

我就是不理解做互备干什么。你这样的话干吗不做主从互备有什么意义

数据库服务器做dns论询太可怕了吧,有那个系统的数据库是在外网的?
在内网就算做均衡也用不找dns轮询

 yejr 回复于:2004-12-28 22:01:39
我做互备只是出于技术上的兴趣,实际中我估计不会这么做的.
有次一个网友跟我讨论这个问题,他是来做类似镜像的功能的,2个服务器一个在网通,一个在电信,要使双方的数据尽量保持一致,因此才这么做的.

 北京野狼 回复于:2004-12-28 22:04:19
[quote:2b7967d4f6="yejr"]我做互备只是出于技术上的兴趣,实际中我估计不会这么做的.
有次一个网友跟我讨论这个问题,他是来做类似镜像的功能的,2个服务器一个在网通,一个在电信,要使双方的数据尽量保持一致,因此才这么做的.[/quote:2b7967d4f6]

既然另一个根本不能写,那还叫什么互备?
数据只有一致和不一致,好像没有什么尽量保持一致的说法。
算了,不讨论这个问题了。谢谢

 mxblovemusic 回复于:2004-12-29 01:41:53
希望大家能够回答我的问题:怎么减少cache。谢谢

 北京野狼 回复于:2004-12-29 10:24:46
[quote:49a4956ab1="mxblovemusic"]希望大家能够回答我的问题:怎么减少cache。谢谢[/quote:49a4956ab1]

不能给世界上不存在的系统,提供帮助

 双眼皮的猪 回复于:2004-12-30 14:04:03
互相备份,不一定是为了load balance,也可以是仅仅做个备份而已...
存在即合理....

当然单向的比较合适...如果只是备份的话...

 北京野狼 回复于:2004-12-30 16:16:36
[quote:084fa0693e="双眼皮的猪"]互相备份,不一定是为了load balance,也可以是仅仅做个备份而已...
存在即合理....

当然单向的比较合适...如果只是备份的话...[/quote:084fa0693e]


不存在的也是合理的。
那你讲讲,怎么配置的互相备份,怎么实现
同一段记录,这边update了,那边delete了

 双眼皮的猪 回复于:2005-01-01 14:12:13
我做过,也成功了,双向复制不过是打开两放的log-bin,写写配置文件而已,没什么别的....
我有篇文档写了...很简单的做法...您可以了解一下...

btw:如果您做过,就知道其实很简单。至于怎么实现的,则是有两个线程,sql thread和I/O thread的结果...您可以看看为mysql做replication哪个人的文档....并有部分代码...
我只是应用,怎么实现,则是mysql组织的事情...我的文章里也说过这个...
您看看,最后,想说一句,不喜欢你这咄咄逼人的语气...

我的blog上有该文章:
http://blog.csdn.net/lalphbet/archive/2004/12/21/223749.aspx

 北京野狼 回复于:2005-01-02 16:48:58
[quote:d1c6bedce1="双眼皮的猪"]我做过,也成功了,互相备份不过是打开两放的log-bin,写写配置文件而已,没什么别的....
我有篇文档写了...很简单的做法...您可以了解一下...

btw:如果您做过,就知道其实很简单。至于怎么实现的,则是有两个线?.........[/quote:d1c6bedce1]

我真是想知道,你的数据库两边都能自由读写,而且实现双向同步?
最近手便服务器都不用mysql暂时没有办法自己试验.

 北京野狼 回复于:2005-01-04 13:57:56
[quote:de0df09c75="双眼皮的猪"]我做过,也成功了,互相备份不过是打开两放的log-bin,写写配置文件而已,没什么别的....
我有篇文档写了...很简单的做法...您可以了解一下...

btw:如果您做过,就知道其实很简单。至于怎么实现的,则是有两个线?.........[/quote:de0df09c75]

今天刚有空仔细看了一下你的文章,没看出任何同一个表互相备份的信息。
不知道大家是不是都在梦中做的互相

 yejr 回复于:2005-01-04 19:29:30
哈哈,自己做一次不就知道了,只需要2台机器或者1台机器的2个端口便可,没什么困难的.
不做当然想象不出来到底行不行了.

 北京野狼 回复于:2005-01-04 20:41:39
[quote:978e1ed581="yejr"]哈哈,自己做一次不就知道了,只需要2台机器或者1台机器的2个端口便可,没什么困难的.
不做当然想象不出来到底行不行了.[/quote:978e1ed581]

不用做,我也知道不行。
要不你再给我一篇怎么配置的文档

 yejr 回复于:2005-01-04 21:16:16
呵呵,很抱歉,我比较擅长do it,而不是在这里say sth.

 北京野狼 回复于:2005-01-04 21:57:13
[quote:94c07b16f6="yejr"]呵呵,很抱歉,我比较擅长do it,而不是在这里say sth.[/quote:94c07b16f6]

擅长做的人都很令人佩服

不过您回复了那么多,肯定你也没做成功过

 yejr 回复于:2005-01-05 17:17:02
呵呵,如果我告诉你我做过2次,不知道你会有什么反映.
第一次属于摸索,半天时间就做完了,而且双边mysql]版本不同,且操作系统是从freebsd4.7到redhat9.0的双向同步.
第二次是redhat9.0和7.3之间的mysql4.1.7双向同步,只用了1个小时.

 北京野狼 回复于:2005-01-05 18:07:27
[quote:df5039d941="yejr"]呵呵,如果我告诉你我做过2次,不知道你会有什么反映.
[/quote:df5039d941]

那我就不理解你,我都问你7,8边能不能两边同时写,会不会出现脏数据。
总是不肯回答。

 yejr 回复于:2005-01-05 20:58:36
我确实没有明确的回答,但是从我的回复中不难看出:
1. 肯定可以2边同时写数据
2. 出现脏数据的可能性还是不小的
3. 出现脏数据的解决方案也不是不存在的
为了测试脏数据的问题,我还特地做了相关测试,确实会存在脏数据,但是既然做互备了,就肯定要考虑到这个问题,在应用程序级别上就应该做相关的分离了,而且这个也是很简单就能做到的.
总结一下:双机互备完全那可行,但是为了数据的完整性最好还是只往其中一个机器上写数据,另一个读; 或者根据数据库或者数据表来决定该往哪边写数据,这就最大限度避免了上述问题.
最后,建议你还是自己做一下吧试验.

 北京野狼 回复于:2005-01-05 21:21:22
[quote:2854f0a4c4="yejr"]我确实没有明确的回答,但是从我的回复中不难看出:
1. 肯定可以2边同时写数据
2. 出现脏数据的可能性还是不小的
3. 出现脏数据的解决方案也不是不存在的
为了测试脏数据的问题,我还特地做了相关测试,确实会..........[/quote:2854f0a4c4]

谢谢,你是第一个回答说可以两边同时写。
同时写那就是实现真正意义上的互备了,但是随便就
出现脏数据还叫什么互备。

只往其中一个机器上写数据,那就更没什么意义了

 yejr 回复于:2005-01-06 08:57:26
无话可说.

 wangyih 回复于:2005-01-06 13:43:14
数据库做互相同步完全就是扯淡,只要两边一同时写,立刻就完蛋。
根本就不存在这样的技术

 双眼皮的猪 回复于:2005-01-17 14:58:14
对有些人表示强烈鄙视...

 stonerose 回复于:2005-02-22 14:10:55
[quote:048cf60135="北京野狼"]

那同一段记录,这边update了,那边delete了,那个同步那个[/quote:048cf60135]
哪台修改了,另一台也修改。目的是保证两台机器的数据一致。

 stonerose 回复于:2005-02-22 14:27:36
[quote:7714dae378="wangyih"]数据库做互相同步完全就是扯淡,只要两边一同时写,立刻就完蛋。
根本就不存在这样的技术[/quote:7714dae378]怎么是扯谈?你做过吗?

 大雪飞扬 回复于:2005-02-25 14:31:05
呵呵,看了大家的讨论,感觉:

1、数据库间同步在两边同时进行修改操作是会出现脏数据,这一点需要靠应用程序来解决。

2、配置成一个读,一个写,应该是一个不错的解决方案

 wangyih 回复于:2005-02-25 21:18:37
[quote:7a56eea064="大雪飞扬"]呵呵,看了大家的讨论,感觉:

1、数据库间同步在两边同时进行修改操作是会出现脏数据,这一点需要靠应用程序来解决。

2、配置成一个读,一个写,应该是一个不错的解决方案[/quote:7a56eea064]

兄弟一个读,一个写那还是互备吗?

 aiwei 回复于:2005-03-13 22:30:30
在理论上互备是可以的(小弟是根据Mysql 的HOWTO来理解),但实际上我做的互备只维持了20几个小时就崩掉了.郁闷

 jim.ma 回复于:2005-03-19 21:11:07
:shock:

...........看到后面怎觉得不太像讨论技术了。

 第八天 回复于:2005-05-18 18:19:08
真正意义上的双机互备是不支持的!这里是mysql官方文档的说法:
MySQL replication currently does not support any locking protocol between master and slave to guarantee the atomicity of a distributed (cross-server) update. In other words, it is possible for client A to make an update to co-master 1, and in the meantime, before it propagates to co-master 2, client B could make an update to co-master 2 that will make the update of client A work differently than it did on co-master 1. Thus, when the update of client A makes it to co-master 2, it will produce tables that are different than what you have on co-master 1, even after all the updates from co-master 2 have also propagated. This means that you should not co-chain two servers in a two-way replication relationship unless you are sure that your updates can safely happen in any order, or unless you take care of mis-ordered updates somehow in the client code

 tiandexiao 回复于:2005-08-13 09:45:57
我也不知道如何解决这样的问题噢。

关于我们 - 网站留言 - 友情链接 - 与我在线 - 与我聊天 - 领取红包 - TOP

客户服务中心信箱:[email protected] [email protected] 网站地图

声明

合作伙伴: