??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲va欧美va在线观看,国产乱码精品一区二三赶尸艳谈 ,男人的天堂在线视频http://www.aygfsteel.com/lzj520/category/29730.htmlzh-cnThu, 28 Feb 2008 09:39:56 GMTThu, 28 Feb 2008 09:39:56 GMT60MYSQL数据同步,双向热备Q{Q?/title><link>http://www.aygfsteel.com/lzj520/archive/2008/02/27/182485.html</link><dc:creator>lzj520</dc:creator><author>lzj520</author><pubDate>Wed, 27 Feb 2008 06:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/lzj520/archive/2008/02/27/182485.html</guid><wfw:comment>http://www.aygfsteel.com/lzj520/comments/182485.html</wfw:comment><comments>http://www.aygfsteel.com/lzj520/archive/2008/02/27/182485.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lzj520/comments/commentRss/182485.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lzj520/services/trackbacks/182485.html</trackback:ping><description><![CDATA[<p>1、简要介l:mysql?.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,M模式(A->B)Q互相备份模?A<=>B)的功能?br /> mysql数据库同步复制功能的讄都在mysql的配|文件中体现。在linux环境下的配置文g一般在/etc/mysql/my.cnf或者在mysql用户的home目录下的my.cnfQ笔者的my.cnf则在/etc/my.cnfQwindows环境下则可到mysql安装路径下找到my.ini?/p> <p> 2、下面我们来看看如何配置数据同步(A->B)Q?br /> (W者mysql版本 5.0.26)<br /> 假设数据库AZ机(向B提供同步服务Q即B中的数据来自AQ:<br /> A机器Q?br /> IP = 192.168.1.101<br /> B机器Q?br /> IP = 192.168.1.102</p> <p> (1).在A机器中有数据库如下:</p> <p>//数据库A<br /> <span style="background-color: #99ccff">CREATE DATABASE backup_db;<br /> USE backup_db;<br /> CREATE TABLE `backup_table` (<br />   `id` int(11) NOT NULL auto_increment,<br />   `name` varchar(20) character set utf8 NOT NULL,<br />   `sex` varchar(2) character set utf8 NOT NULL,<br />   PRIMARY KEY  (`id`)<br /> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;</span></p> <p>#A机器的my.cnf(或my.ini)中应该配|:<br /> <span style="color: #000000; background-color: #99ccff">server-id=1<br /> log-bin=c:\mysqlback #同步事g的日志记录文?br /> binlog-do-db=backup_db #提供数据同步服务的数据库</span></p> <p> (2).在B机器中有数据库如下:</p> <p>//数据库B<br /> <span style="background-color: #99ccff">CREATE DATABASE backup_db;<br /> USE backup_db;<br /> CREATE TABLE `backup_table` (<br />   `id` int(11) NOT NULL auto_increment,<br />   `name` varchar(20) character set utf8 NOT NULL,<br />   `sex` varchar(2) character set utf8 NOT NULL,<br />   PRIMARY KEY  (`id`)<br /> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;</span><br /> 注:数据库A和B的数据库l构一定要相同Q否则无法构成同步?/p> <p>#B机器的my.cnf(或my.ini)中应该配|:<br /> <span style="background-color: #99ccff">server-id=2<br /> master-host=192.168.1.101 #LA的地址<br /> master-user=ym #LA提供lB的用P该用户中需要包括数据库backup_db的权?br /> master-password=ym #讉K密码<br /> master-port=3306 #端口Q主机的MYSQL端口<br /> master-connect-retry=60 #重试间隔60U?br /> replicate-do-db=backup_db #同步的数据库</span></p> <p> (3).完成了以上配|之后,A的mysql数据的权限给B?br /> A机器Q?br /> <span style="color: #ffffff; background-color: #000000">mysql>GRANT FILE ON *.* TO </span><a href="mailto:ym@'192.168.1.102'"><span style="color: #ffffff; background-color: #000000">ym@'192.168.1.102'</span></a><span style="color: #ffffff; background-color: #000000"> IDENTIFIEDBY ‘ym’;</span></p> <p> (4).重启AB数据库,后:<br /> B机器Q?br /> <span style="color: #ffffff; background-color: #000000">mysql>slave start;</span></p> <p>查看同步配置情况<br /> A机器Q?br /> <span style="color: #ffffff; background-color: #000000">mysql>show master status;</span><br /> B机器Q?br /> <span style="color: #ffffff; background-color: #000000">mysql>show slave status;</span></p> <p> (5).在A中的backup_db.backup_table表中插入一些数据,查看B中的backup_db.backup_table表是否同步了数据改动。如果没有看到同步数据结果,卛_步不成功Q请查看错误Q如下)?br /> 当有错误产生?.err日志文gQ可到mysql安装目录下找Q,同步的线E退出。当U正错误后重复步?4)?/p> <p> 3、实现双向热?A<=>B)Q?br /> 以上的(1)-(5)步骤按A-B双向配置卛_?br /> <br /> </p> <p>异步复制基本原理 </p> <p>从MySQL3.23.15以后QMySQL支持单向的异步复制。也是_1台MySQL服务器充当Master(d)Q?台或多台MySQL服务器充当Slaves(从库)Q数据从Master向Slavesq行异步复制。注意,q种复制是异步的Q有别于MySQL的同步复制实玎ͼq种实现U做MySQL集群QMySQL ClusterQ?</p> <p>当主库有更新的时候,d会把更新操作的SQL写入二进制日?Bin log)Qƈl护一个二q制日志文g的烦引,以便于日志文件轮回(RotateQ。在从库启动异步复制的时候,从库会开启两个I/OU程Q其中一个线E连接主库,要求d把二q制日志的变化部分传l从库,q把传回的日志写入本地磁盘。另一个线E则负责d本地写入的二q制日志Qƈ在本地执行,以反映出q种变化。较老的版本在复制的时候只启用一个I/OU程Q实现这两部分的功能?</p> <p>有几个关键性的地方需要注意: </p> <p>- d必须启用Bin logQ主库和从库必须有唯一的Server Id <br /> - 从库必须清楚了解从主库的哪一个Bin log文g的哪一个偏UM|v开始复?<br /> - 从库可以从主库只复制指定的数据库Q或者数据库的某些数据表 <br /> - d和从库的数据库名U可以不一P不过q是推荐使用一L名称 <br /> - d和从库的MySQL版本需保持一?</p> <p>附:资料出处 <br /> http://www.javaeye.com/topic/153875<br /> http://blog.sina.com.cn/s/blog_4b0710d8010007eo.html</p> <img src ="http://www.aygfsteel.com/lzj520/aggbug/182485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lzj520/" target="_blank">lzj520</a> 2008-02-27 14:45 <a href="http://www.aygfsteel.com/lzj520/archive/2008/02/27/182485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL优化(转)http://www.aygfsteel.com/lzj520/archive/2008/02/27/182462.htmllzj520lzj520Wed, 27 Feb 2008 04:30:00 GMThttp://www.aygfsteel.com/lzj520/archive/2008/02/27/182462.htmlhttp://www.aygfsteel.com/lzj520/comments/182462.htmlhttp://www.aygfsteel.com/lzj520/archive/2008/02/27/182462.html#Feedback0http://www.aygfsteel.com/lzj520/comments/commentRss/182462.htmlhttp://www.aygfsteel.com/lzj520/services/trackbacks/182462.html如果q个服务可以被其他非数据库应用代替(比如很多Z数据库的计数器完全可以用WEB日志l计代替Q最好将其禁用。非用数据库不可吗?虽然数据库的可以简化很多应用的l构设计Q但本n也是一个系l资源消耗比较大的应用。在某些情况下文本,DBM比数据库是更好的选择Q比如:很多应用如果没有很高的实时统计需求的话,完全可以先记录到文g日志中,定期的导入到数据库中做后l统计分析。如果还是需要记录简单的2l键Q值对应结构的话可以用类gDBM的HEAPcd表。因为HEAP表全部在内存中存取,效率非常高,但服务器H然断电时有可能出现数据丢失Q所以非帔R合存储在线用户信息Q日志等临时数据。即佉K要用数据库的,应用如果没有太复杂的数据完整性需求的化,完全可以不用那些支持外键的商业数据库,比如MySQL。只有非帔R要完整的商业逻辑和事务完整性的时候才需要Oracleq样的大型数据库。对于高负蝲应用来说完全可以把日志文ӞDBMQMySQL{轻量方式做前端数据采集格式,然后用Oracle MSSQL DB2 Sybase{做数据库仓库以完成复杂的数据库挖掘分析工作?/p>

数据库服务的主要瓉Q单个服务的q接数。对于一个应用来_如果数据库表l构的设计能够按照数据库原理的范式来设计的话Qƈ且已l用了最新版本的MySQLQƈ且按照比较优化的方式q行了,那么最后的主要瓉一般在于单个服务的q接敎ͼ即一个数据库可以支持q发500个连接,最好也不要把应用用到这个地步,因ؓq发q接数过多数据库服务本n用于调度的线E的开销也会非常大了。所以如果应用允许的话:让一台机器多跑几个MySQL服务分担。将服务均衡的规划到多个MySQL服务端口上:比如app_1 ==> 3301 app_2 ==> 3302...app_9 ==> 3309。一?G内存的机器跑?0个MySQL是很正常的。让10个MySQLD承担1000个ƈ发连接效率要比让2个MySQLD承担1000个效率高的多。当Ӟq样也会带来一些应用编E上的复杂度Q?

使用单独的数据库服务器(不要让数据库和前台WEB服务抢内存)QMySQL拥有更多的内存就可能能有效的q行l果集的~存Q在前面的启动脚本中有一?O key_buffer=32M参数是用于缺省的8M索引~存增加?2MQ当然对于)

应用量使用PCONNECT和polling机制Q用于节省MySQL服务建立q接的开销Q但也会造成MySQLq发链接数过多(每个HTTPD都会对应一个MySQLU程Q;

表的横向拆分Q让最常被讉K?0%的数据放在一个小表里Q?0%的历史数据放在一个归表里(所谓:快慢表)Q数据中间通过定期“搬家”和定期删除无效数据来节省Q毕竟大部分应用Q比如论坛)讉K2个月前数据的几率会非常少Q而且价g不是很高。这样对于应用来说L在一个比较小的结果中进行数据选择Q比较有利于数据的缓存,不要指望MySQL中对单表记录条数?0万以上q有比较高的效率。而且有时候数据没有必要做那么_Q比如一个快表中查到了某个h发表的文章有60条结果,快表和慢表的比例?:20Q那么就可以单的估计q个Z共发表了1200。Google的搜索结果数也是一P对于很多上十万的l果敎ͼ后面很多的数字都是通过一定的法估计出来的?

数据库字D设计:表的U向拆分Q过渡范化)Q将所有的定长字段Qchar, int{)攑֜一个表里,所有的变长字段Qvarchar,text,blob{)攑֜另外一个表里,2个表之间通过主键兌Q这P定长字段表可以得到很大的优化Q这样可以用HEAP表类型,数据完全在内存中存取Q,q里也说明另外一个原则,对于我们来说Q尽量用定长字D可以通过I间的损失换取访问效率的提高。在MySQL4中也出现了支持外键和事务的InnoDBcd表,标准的MyISAM格式表和ZHASHl构的HEAP内存表,MySQL之所以支持多U表cdQ实际上是针对不同应用提供了不同的优化方式;

仔细的检查应用的索引设计Q可以在服务启动参数中加?--log-slow-queries[=file]用于跟踪分析应用瓉Q对于跟t服务瓶颈最单的Ҏ是用MySQL的status查看MySQL服务的运行统计和show processlist来查看当前服务中正在q行的SQLQ如果某个SQLl常出现在PROCESS LIST中,一。有可能被查询的此时非常多,二,里面有媄响查询的字段没有索引Q三Q返回的l果数过多数据库正在排序QSORTINGQ;所以做一个脚本:比如?U运行以下show processlist;把结果输出到文g中,看到底是什么查询在吃CPU?

全文索:如果相应字段没有做全文烦引的话,全文索将是一个非常消耗CPU的功能,因ؓ全文索是用不上一般数据库的烦引的Q所以要q行相应字段记录遍历。关于全文烦引可以参考一下基于Java的全文烦引引擎lucene的介l?

前台应用的记录缓存:比如一个经怋用数据库认证Q如果需要有更新用户最后登陆时间的操作Q最好记录更新后把用户攑ֈ一个缓存中Q设|?个小时后q期Q,q样如果用户?个小时内再次使用到登陆,q接从~存里认证,避免了过于频J的数据库操作?

 查询优先的表应该可能ؓwhere和order by字句中的字段加上索引Q数据库更新插入优先的应用烦引越越好?

避免使用视图(viewport)与关联。视图viewport与关联都是ؓ了程序员处理相对复杂的数据管理提供方便的手段。万物有其利Q必有其弊。视囑֒兌提高了编E效率,都会较大地媄响数据库的访问效率(事实上ƈ不像一般资料说介绍的的那样高效Q,因此如果是web应用Q则一般不要用视图与兌?br />
字W串(varchar)比较变成数字?int)比较

每个pȝ都会有用L理,其中必然?늧Q密码,邮g{的字符串类型数据比较的问题。在数据库操作中Q字W串比较的效率是相当低下的。因此遇到字W串的比较,必须其转换为数字型比较?
具体做法是:在数据库表中增加相应的数字字D,比如 cNickname -> iNickNumber Q其?iNickNumber 的数gؓ cNickname ?哈希?/p>

数据库表table的字Dfield不要太多

本以为无需说明Q也是发C的朋友Qؓ了省事,一股脑把所有的相关字段都放在一个表中间。这样做的后果便是,E序写v来简单了Q运行效率下来了?
无论字段多少Q有两类字段是必ȝ立出ȝQ一是进E更新的字段Q比如文章的点击ơ数字段iShowQ二是二q制或者是text字段Q?br />

为每个数据库?table)讄 datetime 字段

在许多情况下Q很多的表是不需?datetime 字段用于保存旉的。本文的是你应该为每个表都设|?datetime 字段Q而且默认gؓ getdate()?
我们的经验是Qdatetime 是实敎ͼ占用字节不多Q在q行pȝl护Q远E备份等环节都会发挥意想不到的效果?/p>


lzj520 2008-02-27 12:30 发表评论
]]>
վ֩ģ壺 ̫| °Ͷ| | ٷ| | | ͩ| ɽ| ٲ| ֬| ¤| ͨμ| | | ˮ| ľ˹| | û| | | ͨ| Դ| ٹ| ³| «| Դ| | ƽ| żҸ| | ׷| ɽ| | | ʯ| | | ѭ| | ţ| |