61阅读

成功可以复制-用MySQL内建复制功能来优化可用性

发布时间:2017-10-03 所属栏目:IT业界

一 : 用MySQL内建复制功能来优化可用性

在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试。通过测试我们发现,可以使用这个特性来与备份数据库服务器保持数据同步,这样当主服务器因为某种原因处理失效时,能够使用备份机处理所有的查询。对于这样的要求,配置两台服务器并不困难。我将详细讨论整个处理过程,同时讨论一下当主服务器失效时,如何使用PHP来重定向查询。

MySQL内部复制功能是建立在两个或两个以上服务器之间,通过设定它们之间的主-从关系来实现的。其中一个作为主服务器,其它的作为从服务器。我将详细讨论如何配置两台服务器,将一个设为主服务器,另一个设为从服务器。并且描述一下在它们之间进行切换的处理过程。我是在MySQL的3.23.23版本上进行的配置设置过程,并且也是在这个版本上进行的测试。MySQL开发人员建议最好使用最新版本,并且主-从服务器均使用相同的版本。同时MySQL 3.23版本仍然是beta测试版,而且这个版本可能不能向下兼容。所以因为这个原因,在实际的网站中,我现在还没有使用这个版本。拥有容错能力具有一个好处是,在不需中断任何查询的情况下,对服务器进行升级。

第一步:配置主服务器

在这篇文章的剩下篇幅中,我将指定两台服务器。A(IP为10.1.1.1)作为主服务器(简称为主机)。B(IP为10.1.1.2)作为后备服务器(简称为备机)。

MySQL的复制功能的实现过程为:备机(B)与主机(A)连接,然后读出主机的二进制更新日志,再将发生的变化合并到自已的数据库中。备机需要一个用户帐号来与主机连接,所以在主机上创建一个帐号,并只给它FILE权限,如下操作: GRANT FILE ON *.* TO replicate@10.1.1.2 IDENTIFIED BY 'password';

为了备机能够与主机连接,要在主机上运行'FLUSH PRIVILEGES',不过不要担心,因为我们将在下面的步骤中停掉服务器。

现在我们需要主机数据库的一个快照,并且对主机进行配置,允许生成二进制的更新日志。首先编辑'my.cnf'文件,以便允许二进制更新日志,所以在[mysqld]部分的下面某个地方增加一行:'log-bin'。在下一次服务器启动时,主机将生成二进制更新日志(名为:<主机名>-bin.<增量序号#>)。为了让二进制更新日志有效,关闭MySQL服务程序,然后将主机上的所有数据库目录到另一个目录中,接着重新启动mysqld。

请确定得到了所有数据库,否则在进行复制时,如果一个表在主机上存在但在备机上不存在,将因为出错而退出。现在你已经得到了数据的快照,和一个从建立快照以来的二进制日志,上面记录着任何对数据库的修改。请注意MySQL数据文件(*.MYD,*.MYI和*.frm)是依赖于文件系统的,所以你不能仅仅进行文件传输,如从Solaris到Linux。如果你处于一个异种的服务器环境,你将不得不使用mysqldump实用程序或其它的定制脚本来得到数据快照。

第二步:配置备机

让我们继续。停掉备机上的MySQL服务程序,并且把从主机上拷贝来的数据库目录移到备机上的data目录下。请确认将目录的拥有者和属组改变为MySQL用户相应值,并且修改文件模式为660(只对拥有者和属组可读、可写),目录本身为770(只对拥有者和属组可读、可写和可执行)。

继续。在备机上启动MySQL服务程序,确认MySQL工作正常。运行几个select查询(不要update或insert查询),看一看在第一步中得到的数据快照是否成功。接着,在测试成功后关掉MySQL服务程序。

在备机上配置需要访问的主机,以便接收主机的更改。所以需要编辑务机上的'my.cnf'文件,在[mysqld]部分中增加下面几行: master-host=10.1.1.1

master-user=replicate

master-password=password

在启动备机服务程序后,备机服务程序将查看在'my.cnf'文件中所指定的主机,查看是否有改变,并且将这些改变合并到自已的数据库中。备机保持了主机的更新记录,这些记录是从主机的'master.info'文件中接收下来的。备机线程的状态可以通过sql命令'SHOW SLAVE-STATUS'看到。在备机上处理二进制日志中如果发生错误,都将导致备机线程的退出,并且在*.err的日志文件中生成一条信息。然后错误可以被改正,接着可以使用sql语句'SLAVE START'来重新启动备机线程。线程将从主机二进制日志处理中断的地方继续处理。

至此,在主机上所发生的数据改变应该已经复制到备机上了,要测试它,你可以在主机上插入或更新一条记录,而在备机上选择这条记录。

现在我们拥有了从A机到B机的这种主-从关系,这样当A机可能当机的时候,允许我们将所有的查询重定向到B机上去,但是当A机恢复时,我们没有办法将发生的改变恢复到A机中去。为了解决这个问题,我们创建从B机到A机的主-从关系。

第三步:创建相互的主从关系

首先在B机上的my.cnf文件中,在[mysqld]部分中加入'log-bin',接着重新启动mysqld,然后创建可在

它的上面执行复制功能的用户帐号,使用: GRANT FILE ON *.* TO replicate@10.1.1.1 IDENTIFIED BY 'password';

在B机上运行'FLUSH PRIVILEGES'命令,以便装入在加入复制用户后的新的授权表,接着回到A机上,在它的'my.cnf'中加入下面几行: master-host=10.1.1.2

master-user=replicate master-password=password

在重启A机的服务程序之后,现在我们一拥有了在A机与B机之间的相互主-从关系。不管在哪个服务器上 更新一条记录或插入一条记录,都将被复制到另一台服务器上。要注意的是:我不敢确定一个备机合并二进 制日志变化的速度有多快,所以用这种方法来进行插入或更新语句的负载平衡可能不是一个好办法。

第四步:修改你的数据库连接程序

既然你已经在A机和B机之间建立了一个相互的关系,你需要修改数据库连接程序,以便从这种方式中得 到好处。下面的函数首先试图与A机连接,如果不能建立连接则与B机连接。

********************************************************

function db_connect()

returns a link identifier on success, or false on error ********************************************************

function db_connect(){ $username = "replUser";

$password = "password"; $primary = "10.1.1.1";

$backup = "10.1.1.2";

# attempt connection to primary

if(!$link_id = @mysql_connect($primary, $username, $password))

# attempt connection to secondary

$link_id = @mysql_connect($secondary, $username, $password) return $link_id; }

我在两种情况下对使用了上面技术的数据库连接建立过程进行了测试,一种是主MySQL服务程序关闭了, 但是服务器还在运行,另一种情况是主服务器关闭了。如果只是mysqld关闭了,连接会马上转向备机;但是 如果整个服务器关闭了,就出现了无限地等待(两分钟后我放弃了跟踪 -- 很短的注意跨度),因为PHP在查 找一个不存在的服务器。不幸地是,不象fsockopen函数,mysql_connect函数没有一个超时参数,然而我们 可以使用fsockopen来模拟一个超时处理。

第五步:一个改进的数据库连接程序

**********************************************

function db_connect_plus()

returns a link identifier on success, or false on error **********************************************

function db_connect_plus(){

$username = "username";

$password = "password"; $primary = "10.1.1.1";

$backup = "10.1.1.2"; $timeout = 15; // timeout in seconds

if($fp = fsockopen($primary, 3306, &$errno, &$errstr, $timeout))

{ fclose($fp); return

$link = mysql_connect($primary, $username, $password); }

if($fp = fsockopen($secondary, 3306, &$errno, &$errstr, $timeout))

{ fclose($fp); return

$link = mysql_connect($secondary, $username, $password); }

return 0; }

这个新改进的函数向我们提供了一个可调的超时特性,这正是mysql_connect函数所缺少的。如果连接 立即失败,这种情况如机器"活"着,但mysqld"当"掉了,函数立即移到第二个服务器。上面的函数相当健壮, 在试图进行连接之前先测试一下,查看服务程序是否在指定端口进行监听,让你的脚本在一段可接受的时间 段后超时,允许你适当地对出错情况进行处理。如果你修改了缺省端口3306,请保证对端口号进行修改。

结论和意见 首先,要确定得到了一个完整的数据快照。如果忘记拷贝一个表或数据库将导致备机线程序停止。生成 快照的时刻是很关健的。你应该确保在拷贝数据文件之前二进制日志功能是无效的。如果在得到快照之前就 允许了二进制日志功能,备机的线程可能会停止,原因就是当线程试图导入重要的记录时,可能会由于主键 重复而停止。最好就是接照第二部分所讨论的处理办法来做:关闭-拷贝-允许二进制日志功能重启。

你可能想要按照最初的一种方式来配制复制处理,并且在合适的时间关注备机,确保备机与主机保持同 步。

我没有测试过一个使用了复制特性的系统的负载平衡处理性能,但是我会灵活地使用这样系统来平衡插 入和更新。例如,如果在两台服务器上两条记录都给出了同一个auto_increment值,这种情况备机线程会在 哪一条记录上停掉呢?象这样的问题将会让负载平衡作为只读的处理,一台服务器处理所有的插入和更新, 同时一组备机(是的,你可以有多个与主机分离的备机)处理所有的选择。

我非常高兴,MySQL已经具备了复制系统的某些功能,并且配置很简单。使用它,你就可以开始针对失 控的事件提供额外的安全措施了。我仅仅涉及了复制特性,这个我已经测试并且使用了,但是在MySQL的在线文档中的第11部分有中更详细的说明。

二 : 满足三大前提条件 成功站长你可以“复制”

  初入seo行业的人,大多数对于这个行业的知识都只是略知一二,含糊不清,曾经刚踏入这个行业的我也是如此。所以那时我建立了一个seo交流Q群,希望通过和其他站长的交流,学到一些知识。现在的我已经大有长进了,但是在Q群里新加入的seo新手们仍然会有诸多疑问:要怎么学好seo?seo有没什么技巧?

  一个成功的站长,说推广不需要技巧是瞎扯蛋,说推广全靠技巧又是无稽之谈。seo是需要技巧和实践相结合的。如果站长一点技巧都不懂,那么在推广和优化过程中必然要走很多弯路,有时候甚至连seo的一些专业术语都无法理解。但是如果说全靠技巧,那么就等于把搜索引擎堪称是“透明体”,这和seo的初衷就格格不入了。做站的最终目的就是让网站博得搜索引擎的“欢心”,如果将搜索引擎看成是“透明体”,试问,站长还能博得它的欢心吗?不能!那么,站长应该怎么做才能让自己得到提升?

  1、基础知识需知道,做站方法更重要

  基础知识笼统来讲就是seo常用的一些专业术语,包括域名、外链、友链、锚文本、蜘蛛、搜索引擎等等。建议新站长多去看看前辈们的一些经验心得,或许当中很多方法现在已经不适用了,但是seo的基本原理和思路却是必学的。这些知识的掌握程度,就决定了你未来的路能走多远。也只有对这些知识了如指掌之后,你才能对搜索引擎动向有个比较准确的判断,这其实也是做站方法妙用的体现。

  2、实践是检验真理的唯一标准

  毛主席说的好,实践是检验真理的唯一标准。理论知识学的再多,没有去切身实践的话,仍然是空谈;而经验又是从实践中总结出来的,没有实践又何谈经验呢?要知道,只有自己亲身实践了,才能够真正的深刻的理解真理,也才能从中创造出属于自己的一套“真理”。 seo是一条很长的路,很多东西都是需要一定的时间和量去积累方能见效,而持之以恒的实践能力就是最有效的途径。所以,想要成功我们不能仅仅局限于做一个思想家,还应该成为一个行动派,让我们的知识在实践中得到验证。

  3、开阔眼界、站高望远才能走的更久

  seo并不像很多人想象中的那么美好,是自由自在很悠闲的工作。其实不然,它需要站长每天都重复着大量机械式工作,需要一年365天都在进行推广和优化,需要和网络上的虚拟世界打交道……久而久之,很多站长就有可能和现实中的世界脱轨,这是很可怕的事情。但是没办法,既然选择了这条路,就必须承受这样的结果。而身为站长,在碰到类似这样的困难时,就应该懂得从长远利益着想,懂得取舍。这条路很漫长,我们并不能只看到眼前的东西,开阔眼界、站高望远才能走的更久。

  从seo新手过度到seo高手,这其实就是一个“破蛹化蝶”的过程。“破蛹化蝶”的过程非常痛苦,有些蛹就算承受了这般巨大痛苦,最后也未必能成功蜕变。但是,蛹化成蝶后才是最美丽的,只有承受了痛苦,才能有成蝶的机会。所以说,既然选择了要走seo这条路,站长就应该敢于承受过程中的一切困难,坚持到最后才是真正的成功者。

  本文出自www.65834.com,A5站长站首发,转载请保留链接,感谢A5平台支持!

三 : 不要简单复制 成功不能模仿但可以再创造

  近日网上关于“拍卖名人时间”的话题再次被关注。原来是央视著名制片人退出央视,创办网络电视平台优米网(umiwi.com),其中一个栏目“拍卖名人时间”被关注了。当前这期与史玉柱面对面,短短时间内拍卖已经叫到49999,而这还不是最终价格。与名人面对面,会获得什么?

  2008年与巴菲特共进午餐的竞价中,华人赵丹阳花费211万美元获得了这个机会。虽然花了天价,但股神的赠言让这个投资很快回本了。毕竟是名人,站得高看得远,几句话指点迷津,能在变幻莫测的股市风云中避免流血。当然,这也要看听者的领悟能力,如何把对话转化成财富。用网络流行语来说,哥吃的不是饭,是机会。赵丹阳与巴菲特共进天价午餐后,直奔华尔街,在华尔街他很快就捞回211万。优米网的“史玉柱拍卖”,现在还不知道,谁即将和史玉柱直面三个钟头,对话后会创造什么财富是更值得关注的。

  中国古话说,与君一席话,胜读十年书,与名人对话,玄机就在这里吧。如何把对话里的商机成功转化,这饭才没白吃,这价才没白叫。在当下激烈的社会竞争下,谁都希望能尽快实现财富的积累,生活的改善。相关调查结果显示,目前社会环境下,就业问题,医改问题,住房问题是民众最关注的三大社会问题。在高压下,早日实现脱贫致富变得更迫切,与名人面对面也意味着更多的机会和可能。与名人对话,并不是简单的复制他们的成功,更重要的是在谈话中扑捉机会,成功无法复制,那就借鉴一下吧,这样至少能离成功更近一点。

  相信很多人都有从众心理,人云亦云,缺乏主观的思考。就说这段时间网络整顿,在关闭的14万多个人网站中,相信绝大部分都是类似的。一个网站做的好,它的模板、程序很快就能在网上被出售了。对于他人的成功如果只是简单的复制,注定走在别人后面。对话名人,在对话中寻找商机,这才是关键。成功经验能够学习,但很难复制,举一反三,另辟蹊径,也许就能成就另一段辉煌。

  就像站长交流平台里落伍者、A5站长网61k.com和chinaz,各有重点。落伍重交流,人气最旺;A5重交易,是站长首选中介平台;chinaz重资讯,每天都有最新最及时讯息。三个论坛各有自己的特色,三足鼎立,是草根站长的精神乐园。三个论坛的模式各不相同,彼此不重合。三个论坛中,A5起步最晚,如果A5想做资讯,前有chinaz,不好超越;如果想做交流,落伍是座大山,很难逾越,于是另辟蹊径,做交易,终于在交易市场找到自己的位置。现在三个论坛在站长圈里都有很高的知名度,也有后来者模仿,但没有一个成功的。有句话不是说,“一直被模仿,从未被超越”嘛,虽然是玩笑,多少也包涵了一点道理。鱼、图王和阿飞可以告诉你,他们是怎么成功的,但你仍然很难模仿,可以学习它们的成功经验,但很难一样成功,那就试试另辟蹊径,找一条新的出路。

  与名人的对话,其实还是可以学到很多。如果经济允许,不妨来一场面对面。当然,你要足够犀利,才能在微妙的谈话中,找到商机,并转换成财富,这样才不至于得不偿失。(文/梦江)

         投票:如果有可能,你会付费和名人对话吗?

四 : 不要简单复制 成功不能模仿但可以再创造

近日网上关于“拍卖名人时间”的话题再次被关注。原来是央视著名制片人退出央视,创办网络电视平台优米网(umiwi.com),其中一个栏目“拍卖名人时间”被关注了。当前这期与史玉柱面对面,短短时间内拍卖已经叫到49999,而这还不是最终价格。与名人面对面,会获得什么?

2008年与巴菲特共进午餐的竞价中,华人赵丹阳花费211万美元获得了这个机会。虽然花了天价,但股神的赠言让这个投资很快回本了。毕竟是名人,站得高看得远,几句话指点迷津,能在变幻莫测的股市风云中避免流血。当然,这也要看听者的领悟能力,如何把对话转化成财富。用网络流行语来说,哥吃的不是饭,是机会。赵丹阳与巴菲特共进天价午餐后,直奔华尔街,在华尔街他很快就捞回211万。优米网的“史玉柱拍卖”,现在还不知道,谁即将和史玉柱直面三个钟头,对话后会创造什么财富是更值得关注的。

中国古话说,与君一席话,胜读十年书,与名人对话,玄机就在这里吧。如何把对话里的商机成功转化,这饭才没白吃,这价才没白叫。在当下激烈的社会竞争下,谁都希望能尽快实现财富的积累,生活的改善。相关调查结果显示,目前社会环境下,就业问题,医改问题,住房问题是民众最关注的三大社会问题。在高压下,早日实现脱贫致富变得更迫切,与名人面对面也意味着更多的机会和可能。与名人对话,并不是简单的复制他们的成功,更重要的是在谈话中扑捉机会,成功无法复制,那就借鉴一下吧,这样至少能离成功更近一点。

相信很多人都有从众心理,人云亦云,缺乏主观的思考。就说这段时间网络整顿,在关闭的14万多个人网站中,相信绝大部分都是类似的。一个网站做的好,它的模板、程序很快就能在网上被出售了。对于他人的成功如果只是简单的复制,注定走在别人后面。对话名人,在对话中寻找商机,这才是关键。成功经验能够学习,但很难复制,举一反三,另辟蹊径,也许就能成就另一段辉煌。

就像站长交流平台里落伍者、站长网和61k,各有重点。落伍重交流,人气最旺;A5重交易,是站长首选中介平台;61k重资讯,每天都有最新最及时讯息。三个论坛各有自己的特色,三足鼎立,是草根站长的精神乐园。三个论坛的模式各不相同,彼此不重合。三个论坛中,A5起步最晚,如果A5想做资讯,前有61k,不好超越;如果想做交流,落伍是座大山,很难逾越,于是另辟蹊径,做交易,终于在交易市场找到自己的位置。现在三个论坛在站长圈里都有很高的知名度,也有后来者模仿,但没有一个成功的。有句话不是说,“一直被模仿,从未被超越”嘛,虽然是玩笑,多少也包涵了一点道理。鱼、图王和阿飞可以告诉你,他们是怎么成功的,但你仍然很难模仿,可以学习它们的成功经验,但很难一样成功,那就试试另辟蹊径,找一条新的出路。

与名人的对话,其实还是可以学到很多。如果经济允许,不妨来一场面对面。当然,你要足够犀利,才能在微妙的谈话中,找到商机,并转换成财富,这样才不至于得不偿失。(文/梦江)

五 : 小猪CMS微场景添新功能 美丽可以复制!

  小猪CMS微场景添新功能 美丽可以复制!

  自从上次走在大街上被妹子递了传单,研发部老大就坚定地认为:他已经帅得令人发纸了(没错,就是这个纸!)。所以在今天接到隔壁包子店王大娘发的传单后,老大又再次向小编传达了这个信息,并重点强调了一句:我的美,无人能够复制。

  (根据以往的写作规律,以及大家看文的经验,小编肯定会在这个时候插入一个广告。如你所料,没错。)

  人世间,有些美,是无法复制的(比如我们的老大);但是有些美,就可以复制,比如小猪CMS的微场景,现在已支持场景复制功能了。

  

 

  炫酷狂拽的小猪CMS微场景,是一款人见人爱花见花开的商家(企业)宣传展示利器。丰富的模板素材,搭载震撼特效,强大的编辑能力,让商家(企业)轻轻松松就能打造一场视觉盛宴,把粉丝迷得不要不要的。

  

 

  如今,微场景已经新增复制功能。商家拿起鼠标这么轻松一点,就能将自己精心雕琢的微场景完美复制一份。一键式操作,一个变两个。

  想获得一个孪生微场景?不用二次制作,微场景复制功能,帅气帮你搞定,省时省力又省心!同时,商家还可以在复制而生的微场景上进行自主编辑与设置等操作。

  小猪CMS微场景,看得见的美,能复制的美。(作者:小猪CMS 微信号:pigcms)

本文标题:成功可以复制-用MySQL内建复制功能来优化可用性
本文地址: http://www.61k.com/1112637.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1