<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[mysql federated 引擎变相跨服务器使用实例]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Sat, 28 Jul 2012 06:37:23 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;大家都知道mysql目前（5.1.x是现行用的最多的版本，至于最新版5.5.x有什么新的强大功能，就不得而知了）还是不支持sql语句直接跨服务器查询数据和操作数据的。但是我们要的数据在两个不同的服务器上数据库上，该怎么办？其实办法还是有的，谁叫网络上的牛人多啊。我这里就讲一下通过mysql federated 引擎 变相实现跨服务器的效果。废话少说，直接上操作步骤！<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.root登录mysql，输入show engines 结果如下（如果不尽相同纯属版本问题）：<br/><div class="code"><br/>+------------+----------+----------------------------------------------------------------+<br/>&#124; Engine&nbsp;&nbsp;&nbsp;&nbsp; &#124; Support&nbsp;&nbsp;&#124; Comment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;<br/>+------------+----------+----------------------------------------------------------------+<br/>&#124; MyISAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; DEFAULT&nbsp;&nbsp;&#124; Default engine as of MySQL 3.23 with great performance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; MEMORY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Hash based, stored in memory, useful for temporary tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; <br/>&#124; InnoDB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Supports transactions, row-level locking, and foreign keys&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; BerkeleyDB&nbsp;&nbsp;&#124; NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; Supports transactions and page-level locking&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; BLACKHOLE &#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; /dev/null storage engine (anything you write to it disappears) &#124; <br/>&#124; EXAMPLE&nbsp;&nbsp;&nbsp;&nbsp; &#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Example storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; ARCHIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Archive storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; CSV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; CSV storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; ndbcluster&nbsp;&nbsp; &#124; DISABLED &#124; Clustered, fault-tolerant, memory-based tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; FEDERATED&nbsp;&nbsp;&#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Federated MySQL storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; <br/>&#124; MRG_MYISAM &#124; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Collection of identical MyISAM tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; <br/>&#124; ISAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; Obsolete storage engine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; <br/>+------------+----------+----------------------------------------------------------------+<br/> </div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果 federated 显示不为 yes，也不用紧张，速度找到my.cnf文件，改配置文件一般在/etc/my.cnf&nbsp;&nbsp;这里指linux服务器上的路径。打开编辑，找到[mysqld] 并在下面添加一行 federated 然后保存退出，重启服务，再进mysql，输入show engines 看看是不是 federated 为yes了。 如果一开始就没有federated这个项，就麻烦了。这里不多说了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.假设我有两个服务器A(192.168.0.10:3306) 和 B(192.168.0.11:3306)&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在A上建数据库DB_A，DB_A上建表TB_A，TB_A上建字段id,name,sex....随意，然后添加一些测试数据。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在B上建数据库DB_B，DB_B上建表TB_A（不过这里的表不要工具建，直接上代码、、）<br/><div class="code"><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATE TABLE `TB_B` (<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`id` int(11) NOT NULL AUTO_INCREMENT,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`name` varchar(20) DEFAULT NULL,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`sex` varchar(4) DEFAULT NULL,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY (`id`)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) ENGINE=federated connection =&#039;mysql://root:123456@192.168.0.10:3306/DB_A/TB_A&#039;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEFAULT CHARSET=utf8;<br/></div><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：新建表的结构要和A服DB_A库TB_A表上的一致哦。。。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.一切搞定后，在B服DB_B库上输入 select * from DB_B.TB_B&nbsp;&nbsp;看看什么结果。是不是A服DB_A库TB_A表上的数据都可以在B服务器上显示了！其实原理和同步差不多，然而如果TB_A表上数据有变动的话，TB_B表也会时时跟进的，达到让数据保持一致的效果。既然数据都在一个服务器能显示了。接下来改怎么做，就不用多说了吧。<br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/federated/" rel="tag">federated</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] mysql federated 引擎变相跨服务器使用实例]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>