📄 1838.html
字号:
GRANT FILE ON *.* TO replicate@10.1.1.1 IDENTIFIED BY 'password';<br>
在B机上运行'FLUSH PRIVILEGES'命令,以便装入在加入复制用户后的新的授权表,<br>
接着回到A机上,在它的'my.cnf'中加入下面几行:<br>
master-host=10.1.1.2<br>
master-user=replicate<br>
master-password=password<br>
在重启A机的服务程序之后,现在我们一拥有了在A机与B机之间的相互主-从关系。不管<br>
在哪个服务器上更新一条记录或插入一条记录,都将被复制到另一台服务器上。要注意的是:<br>
我不敢确定一个备机合并二进制日志变化的速度有多快,所以用这种方法来进行插入或更新<br>
语句的负载平衡可能不是一个好办法。<br>
<br>
第四步:修改你的数据库连接程序<br>
既然你已经在A机和B机之间建立了一个相互的关系,你需要修改数据库连接程序,以便<br>
从这种方式中得到好处。下面的函数首先试图与A机连接,如果不能建立连接则与B机连接。<br>
<br>
/********************************************************<br>
function db_connect()<br>
returns a link identifier on success, or false on error<br>
********************************************************/<br>
function db_connect(){<br>
$username = "replUser";<br>
$password = "password";<br>
$primary = "10.1.1.1";<br>
$backup = "10.1.1.2";<br>
# attempt connection to primary<br>
if(!$link_id = @mysql_connect($primary, $username, $password))<br>
# attempt connection to secondary<br>
$link_id = @mysql_connect($secondary, $username, $password)<br>
return $link_id;<br>
}<br>
?><br>
<br>
我在两种情况下对使用了上面技术的数据库连接建立过程进行了测试, 一种是主MySQL<br>
服务程序关闭了,但是服务器还在运行,另一种情况是主服务器关闭了。如果只是mysqld关<br>
闭了,连接会马上转向备机;但是如果整个服务器关闭了, 就出现了无限地等待(两分钟后<br>
我放弃了跟踪 -- 很短的注意跨度),因为PHP在查找一个不存在的服务器。不幸地是,不象<br>
fsockopen函数,mysql_connect函数没有一个超时参数, 然而我们可以使用fsockopen来模<br>
拟一个超时处理。<br>
<br>
第五步:一个改进的数据库连接程序<br>
<br>
/********************************************************<br>
function db_connect_plus()<br>
returns a link identifier on success, or false on error<br>
********************************************************/<br>
function db_connect_plus(){<br>
$username = "username";<br>
$password = "password";<br>
$primary = "10.1.1.1";<br>
$backup = "10.1.1.2";<br>
$timeout = 15; // timeout in seconds<br>
if($fp = fsockopen($primary, 3306, &$errno, &$errstr, $timeout)){<br>
fclose($fp);<br>
return $link = mysql_connect($primary, $username, $password);<br>
}<br>
if($fp = fsockopen($secondary, 3306, &$errno, &$errstr, $timeout)){<br>
fclose($fp);<br>
return $link = mysql_connect($secondary, $username, $password);<br>
}<br>
return 0;<br>
}<br>
?><br>
<br>
这个新改进的函数向我们提供了一个可调的超时特性, 这正是mysql_connect函数所缺<br>
少的。如果连接立即失败,这种情况如机器"活"着,但mysqld"当"掉了,函数立即移到第二<br>
个服务器。<br>
上面的函数相当健壮,在试图进行连接之前先测试一下,查看服务程序是否在指定端口<br>
进行监听,让你的脚本在一段可接受的时间段后超时,允许你适当地对出错情况进行处理。<br>
如果你修改了缺省端口3306,请保证对端口号进行修改。<br>
<br>
结论和意见<br>
首先,要确定得到了一个完整的数据快照。如果忘记拷贝一个表或数据库将导致备机线<br>
程序停止。生成快照的时刻是很关健的。你应该确保在拷贝数据文件之前二进制日志功能是<br>
无效的。如果在得到快照之前就允许了二进制日志功能,备机的线程可能会停止,原因就是<br>
当线程试图导入重要的记录时,可能会由于主键重复而停止。最好就是接照第二部分所讨论<br>
的处理办法来做:关闭-拷贝-允许二进制日志功能重启。<br>
你可能想要按照最初的一种方式来配制复制处理,并且在合适的时间关注备机,确保备<br>
机与主机保持同步。<br>
我没有测试过一个使用了复制特性的系统的负载平衡处理性能,但是我会灵活地使用这<br>
样系统来平衡插入和更新。例如,如果在两台服务器上两条记录都给出了同一个<br>
auto_increment值,这种情况备机线程会在哪一条记录上停掉呢?象这样的问题将会让负载<br>
平衡作为只读的处理,一台服务器处理所有的插入和更新,同时一组备机(是的,你可以有<br>
多个与主机分离的备机)处理所有的选择。<br>
我非常高兴,mysql已经具备了复制系统的某些功能,并且配置很简单。使用它, 你就<br>
可以开始针对失控的事件提供额外的安全措施了。我仅仅涉及了复制特性,这个我已经测试<br>
并且使用了,但是在mysql的在线文档中的第11部分有中更详细的说明。<br>
----------------------------------------------------------------------------<br>
----<br>
译者的话:<br>
由于我原来使用的是3.22版的mysql,所以为了测试一下我只好下载了3.23.24版的最新<br>
程序。而且因为只有一台机器,我只是增加了二进制日志的设置。不过,正如本文所说,的<br>
确有文件生成。如果大家对此感兴趣只好请自行测试了。另外, 在最新的mysql的使用手册<br>
中,我发现这个复制功能是在3.23.15版以后才有的,请大家检查自已的mysql的版本。同时,<br>
文中关于二进制日志的设置是说在my.cnf中设置的。在我使用的3.23.24版本中, 手册上说<br>
可以有三个文件进行参数设置,分别为windows目录下的my.ini文件,c:my.cnf和<br>
c:mysqldatamy.cnf中可以设置。我在设置'log-bin'时(不需要先设log参数)是使用<br>
mysql自带的Winmysqladmin软件进行设置的,并且在my.ini中设定的,与文中不同,请大家<br>
自行测试<br>
</FONT><br>
</TD>
</TR>
<TR>
<TD colSpan=2><FONT
class=middlefont></FONT><BR>
<FONT
class=normalfont>全文结束</FONT> </TD>
</TR>
<TR>
<TD background="images/dot.gif" tppabs="http://www.linuxhero.com/docs/images/dot.gif" colSpan=2
height=10></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></TD>
<TD vAlign=top width="20%"
background="images/line.gif" tppabs="http://www.linuxhero.com/docs/images/line.gif" rowSpan=2>
<DIV align=center>
<table class=tableoutline cellspacing=1 cellpadding=4
width="100%" align=center border=0>
<tr class=firstalt>
<td noWrap background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colspan=2 height=21>
<font class=normalfont><b>所有分类</b></font></td>
</tr>
<tr class=secondalt> <td noWrap width=27%> <font class=normalfont>1:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type1.html" tppabs="http://www.linuxhero.com/docs/type1.html">非技术类</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>2:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type2.html" tppabs="http://www.linuxhero.com/docs/type2.html">基础知识</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>3:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type3.html" tppabs="http://www.linuxhero.com/docs/type3.html">指令大全</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>4:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type4.html" tppabs="http://www.linuxhero.com/docs/type4.html">shell</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>5:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type5.html" tppabs="http://www.linuxhero.com/docs/type5.html">安装启动</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>6:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type6.html" tppabs="http://www.linuxhero.com/docs/type6.html">xwindow</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>7:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type7.html" tppabs="http://www.linuxhero.com/docs/type7.html">kde</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>8:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type8.html" tppabs="http://www.linuxhero.com/docs/type8.html">gnome</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>9:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type9.html" tppabs="http://www.linuxhero.com/docs/type9.html">输入法类</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>10:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type10.html" tppabs="http://www.linuxhero.com/docs/type10.html">美化汉化</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>11:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type11.html" tppabs="http://www.linuxhero.com/docs/type11.html">网络配置</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>12:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type12.html" tppabs="http://www.linuxhero.com/docs/type12.html">存储备份</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>13:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type13.html" tppabs="http://www.linuxhero.com/docs/type13.html">杂项工具</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>14:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type14.html" tppabs="http://www.linuxhero.com/docs/type14.html">编程技术</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>15:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type15.html" tppabs="http://www.linuxhero.com/docs/type15.html">网络安全</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>16:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type16.html" tppabs="http://www.linuxhero.com/docs/type16.html">内核技术</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>17:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type17.html" tppabs="http://www.linuxhero.com/docs/type17.html">速度优化</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>18:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type18.html" tppabs="http://www.linuxhero.com/docs/type18.html">apache</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>19:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type19.html" tppabs="http://www.linuxhero.com/docs/type19.html">email</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>20:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type20.html" tppabs="http://www.linuxhero.com/docs/type20.html">ftp服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>21:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type21.html" tppabs="http://www.linuxhero.com/docs/type21.html">cvs服务</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>22:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type22.html" tppabs="http://www.linuxhero.com/docs/type22.html">代理服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>23:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type23.html" tppabs="http://www.linuxhero.com/docs/type23.html">samba</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>24:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type24.html" tppabs="http://www.linuxhero.com/docs/type24.html">域名服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>25:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type25.html" tppabs="http://www.linuxhero.com/docs/type25.html">网络过滤</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>26:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type26.html" tppabs="http://www.linuxhero.com/docs/type26.html">其他服务</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>27:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type27.html" tppabs="http://www.linuxhero.com/docs/type27.html">nfs</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>28:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type28.html" tppabs="http://www.linuxhero.com/docs/type28.html">oracle</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>29:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type29.html" tppabs="http://www.linuxhero.com/docs/type29.html">dhcp</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>30:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type30.html" tppabs="http://www.linuxhero.com/docs/type30.html">mysql</a></font></td> </tr> </table></td></tr><tr class=secondalt> <td noWrap width=27%> <font class=normalfont>31:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type31.html" tppabs="http://www.linuxhero.com/docs/type31.html">php</a></font></td> </tr> </table></td></tr><tr class=firstalt> <td noWrap width=27%> <font class=normalfont>32:</font> </td><td noWrap width=73%> <table width=100% border=0> <tr> <td><font class=normalfont><a href="type32.html" tppabs="http://www.linuxhero.com/docs/type32.html">ldap</a></font></td> </tr> </table></td></tr> </table>
</DIV></TD></TR>
<TR vAlign=top>
<TD width="80%">
<DIV align=center><BR>
</DIV>
</TD></TR></TBODY></TABLE></TD></TR>
</TABLE></TD></TR>
</TABLE>
<TABLE cellSpacing=0 cellPadding=4 width="100%" bgColor=#eeeeee
border=0><TBODY>
<TR>
<TD width="50%">
<P><FONT class=middlefont>版权所有 © 2004 <A
href="mailto:bjchenxu@sina.com">linux知识宝库</A><BR>
违者必究. </FONT></P>
</TD>
<TD width="50%">
<DIV align=right><FONT class=middlefont>Powered by: <A
href="mailto:bjchenxu@sina.com">Linux知识宝库</A> Version 0.9.0 </FONT></DIV>
</TD></TR></TBODY></TABLE>
<CENTER></CENTER></TD></TR>
</TABLE></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -