﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-李春生-文章分类-linux</title><link>http://www.blogjava.net/lcs868/category/36657.html</link><description>李春生的博客</description><language>zh-cn</language><lastBuildDate>Fri, 21 Jan 2011 13:28:55 GMT</lastBuildDate><pubDate>Fri, 21 Jan 2011 13:28:55 GMT</pubDate><ttl>60</ttl><item><title>mysql安装</title><link>http://www.blogjava.net/lcs868/articles/343305.html</link><dc:creator>李春生</dc:creator><author>李春生</author><pubDate>Fri, 21 Jan 2011 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/lcs868/articles/343305.html</guid><wfw:comment>http://www.blogjava.net/lcs868/comments/343305.html</wfw:comment><comments>http://www.blogjava.net/lcs868/articles/343305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs868/comments/commentRss/343305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs868/services/trackbacks/343305.html</trackback:ping><description><![CDATA[shell&gt; groupadd mysql<br />
shell&gt; useradd -g mysql mysql<br />
shell&gt; gunzip &lt; mysql-VERSION.tar.gz | tar -xvf -<br />
shell&gt; cd mysql-VERSION<br />
shell&gt; ./configure --prefix=/usr/local/mysql<br />
shell&gt; make<br />
shell&gt; make install<br />
shell&gt; cp support-files/my-medium.cnf /etc/my.cnf<br />
shell&gt; cd /usr/local/mysql<br />
shell&gt; bin/mysql_install_db --user=mysql<br />
shell&gt; chown -R root&nbsp; .<br />
shell&gt; chown -R mysql var<br />
shell&gt; chgrp -R mysql .<br />
shell&gt; bin/mysqld_safe --user=mysql &amp;
<img src ="http://www.blogjava.net/lcs868/aggbug/343305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs868/" target="_blank">李春生</a> 2011-01-21 11:16 <a href="http://www.blogjava.net/lcs868/articles/343305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux系统下jdk1.6安装</title><link>http://www.blogjava.net/lcs868/articles/343304.html</link><dc:creator>李春生</dc:creator><author>李春生</author><pubDate>Fri, 21 Jan 2011 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/lcs868/articles/343304.html</guid><wfw:comment>http://www.blogjava.net/lcs868/comments/343304.html</wfw:comment><comments>http://www.blogjava.net/lcs868/articles/343304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs868/comments/commentRss/343304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs868/services/trackbacks/343304.html</trackback:ping><description><![CDATA[<p>1. 从网站上下载jdk1.6包(jdk-6u10-linux-i586-rpm.bin ),通过leapFTP上传到linux系统的/var/ftp/pub目录下</p>
<p>&nbsp;</p>
<p>&nbsp; 2.在linux中切换到 /var/ftp/pub目录下，修改jdk1.6的使用权限：#chmod&nbsp; u+x&nbsp; jdk-6u10-linux-i586-rpm.bin</p>
<p>&nbsp;</p>
<p>&nbsp; 3.解压并安装：#./ jdk-6u10-linux-i586-rpm.bin (默认安装在/usr/java中)</p>
<p>&nbsp;</p>
<p>&nbsp; 4.环境变量配置：</p>
<p>&nbsp;&nbsp;&nbsp; #vi&nbsp; /etc/profile</p>
<p>&nbsp;&nbsp;&nbsp; 在该profile文件中添加：</p>
<p>&nbsp;&nbsp;&nbsp; JAVA_HOME=/usr/java/jdk1.6.0_10</p>
<p>&nbsp;&nbsp;&nbsp; JRE_HOME=/usr/java/jdk1.6.0_10/jre</p>
<p>&nbsp;&nbsp;&nbsp; PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin</p>
<p>&nbsp;&nbsp;&nbsp; CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib</p>
<p>&nbsp;&nbsp;&nbsp; export JAVA_HOME JRE_HOME PATH CLASSPATH</p>
<p>&nbsp;&nbsp;&nbsp; 添加完毕保存退出</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; #source /etc/profile</p>
<p>&nbsp;&nbsp;&nbsp; #java -version</p>
<p>&nbsp;&nbsp;&nbsp; 显示 java version "1.6.0_10" (jdk1.6安装成功)</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 卸载rpm版的jdk：</p>
<p>&nbsp;&nbsp; #rpm -qa|grep jdk</p>
<p>&nbsp;&nbsp; 显示：jdk-1.6.0_10-fcs<br />
&nbsp;&nbsp; 卸载：#rpm -e&nbsp; --nodeps&nbsp; jdk-1.6.0_10-fcs</p>
 <img src ="http://www.blogjava.net/lcs868/aggbug/343304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs868/" target="_blank">李春生</a> 2011-01-21 11:14 <a href="http://www.blogjava.net/lcs868/articles/343304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql slave,master配置</title><link>http://www.blogjava.net/lcs868/articles/343303.html</link><dc:creator>李春生</dc:creator><author>李春生</author><pubDate>Fri, 21 Jan 2011 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/lcs868/articles/343303.html</guid><wfw:comment>http://www.blogjava.net/lcs868/comments/343303.html</wfw:comment><comments>http://www.blogjava.net/lcs868/articles/343303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs868/comments/commentRss/343303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs868/services/trackbacks/343303.html</trackback:ping><description><![CDATA[<p>一个完整的mysql读写分离环境包括以下几个部分：</p>
<p>应用程序client <br />
database proxy <br />
database集群 <br />
在本次实战中，应用程序client基于c3p0连接后端的database proxy。database proxy负责管理client实际访问database的路由策略，采用开源框架amoeba。database集群采用mysql的master-slave的replication方案。整个环境的结构图如下所示：</p>
<p>&nbsp;</p>
<p>实战步骤与详解</p>
<p>一.搭建mysql的master-slave环境 </p>
<p>1）分别在host1（10.20.147.110）和host2（10.20.147.111）上安装mysql（5.0.45），具体安装方法可见官方文档</p>
<p>2）配置master</p>
<p>首先编辑/etc/my.cnf，添加以下配置：</p>
<p>log-bin=mysql-bin #slave会基于此log-bin来做replication<br />
server-id=1 #master的标示<br />
binlog-do-db = amoeba_study #用于master-slave的具体数据库</p>
<p>然后添加专门用于replication的用户：</p>
<p>mysql&gt; GRANT REPLICATION SLAVE ON *.* TO repl@10.20.147.111 IDENTIFIED BY '111111';</p>
<p>重启mysql，使得配置生效：</p>
<p>/etc/init.d/mysqld restart</p>
<p>最后查看master状态：</p>
<p>&nbsp;</p>
<p>3）配置slave</p>
<p>首先编辑/etc/my.cnf，添加以下配置：</p>
<p>server-id=2 #slave的标示</p>
<p>配置生效后，配置与master的连接：</p>
<p>mysql&gt; CHANGE MASTER TO<br />
&nbsp;&nbsp;&nbsp; -&gt; MASTER_HOST='10.20.147.110',<br />
&nbsp;&nbsp;&nbsp; -&gt; MASTER_USER='repl',<br />
&nbsp;&nbsp;&nbsp; -&gt; MASTER_PASSWORD='111111',<br />
&nbsp;&nbsp;&nbsp; -&gt; MASTER_LOG_FILE='mysql-bin.000003',<br />
&nbsp;&nbsp;&nbsp; -&gt; MASTER_LOG_POS=161261;</p>
<p>其中MASTER_HOST是master机的ip，MASTER_USER和MASTER_PASSWORD就是我们刚才在master上添加的用户，MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息</p>
<p>最后启动slave：</p>
<p>mysql&gt; start slave;</p>
<p>4）验证master-slave搭建生效</p>
<p>通过查看slave机的log（/var/log/mysqld.log）：</p>
<p>100703 10:51:42 [Note] Slave I/O thread: connected to master 'repl@10.20.147.110:3306',&nbsp; replication started in log 'mysql-bin.000003' at position 161261</p>
<p>如看到以上信息则证明搭建成功，如果有问题也可通过此log找原因</p>
<p>二.搭建database proxy </p>
<p>此次实战中database proxy采用amoeba ，它的相关信息可以查阅官方文档，不在此详述</p>
<p>1）安装amoeba</p>
<p>下载amoeba（1.2.0-GA）后解压到本地（D:\openSource\amoeba-mysql-1.2.0-GA），即完成安装</p>
<p>2）配置amoeba</p>
<p>先配置proxy连接和与各后端mysql服务器连接信息（D:\openSource\amoeba-mysql-1.2.0-GA\conf\amoeba.xml）：</p>
<p>&lt;server&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- proxy server绑定的端口 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="port"&gt;8066&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- proxy server绑定的IP --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!--&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="ipAddress"&gt;127.0.0.1&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- proxy server net IO Read thread size --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="readThreadPoolSize"&gt;20&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- proxy server client process thread size --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="clientSideThreadPoolSize"&gt;30&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- mysql server data packet process thread size --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="serverSideThreadPoolSize"&gt;30&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- socket Send and receive BufferSize(unit:K)&nbsp; --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="netBufferSize"&gt;128&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm). --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="tcpNoDelay"&gt;true&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- 对外验证的用户名 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="user"&gt;root&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;!-- 对外验证的密码 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="password"&gt;root&lt;/property&gt;&nbsp; <br />
&lt;/server&gt;&nbsp; <br />
&lt;server&gt;<br />
&nbsp;&lt;!-- proxy server绑定的端口 --&gt;<br />
&nbsp;&lt;property name="port"&gt;8066&lt;/property&gt;<br />
&nbsp;<br />
&nbsp;&lt;!-- proxy server绑定的IP --&gt;<br />
&nbsp;&lt;!-- <br />
&nbsp;&lt;property name="ipAddress"&gt;127.0.0.1&lt;/property&gt;<br />
&nbsp; --&gt;<br />
&nbsp;&lt;!-- proxy server net IO Read thread size --&gt;<br />
&nbsp;&lt;property name="readThreadPoolSize"&gt;20&lt;/property&gt;<br />
&nbsp;<br />
&nbsp;&lt;!-- proxy server client process thread size --&gt;<br />
&nbsp;&lt;property name="clientSideThreadPoolSize"&gt;30&lt;/property&gt;<br />
&nbsp;<br />
&nbsp;&lt;!-- mysql server data packet process thread size --&gt;<br />
&nbsp;&lt;property name="serverSideThreadPoolSize"&gt;30&lt;/property&gt;<br />
&nbsp;<br />
&nbsp;&lt;!-- socket Send and receive BufferSize(unit:K)&nbsp; --&gt;<br />
&nbsp;&lt;property name="netBufferSize"&gt;128&lt;/property&gt;<br />
&nbsp;<br />
&nbsp;&lt;!-- Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm). --&gt;<br />
&nbsp;&lt;property name="tcpNoDelay"&gt;true&lt;/property&gt;<br />
&nbsp;<br />
&nbsp;&lt;!-- 对外验证的用户名 --&gt;<br />
&nbsp;&lt;property name="user"&gt;root&lt;/property&gt;<br />
&nbsp;<br />
&nbsp;&lt;!-- 对外验证的密码 --&gt;<br />
&nbsp;&lt;property name="password"&gt;root&lt;/property&gt;<br />
&lt;/server&gt; </p>
<p>以上是proxy提供给client的连接配置</p>
<p>&lt;dbServerList&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;dbServer name="server1"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- PoolableObjectFactory实现类 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="manager"&gt;defaultManager&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 真实mysql数据库端口 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="port"&gt;3306&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 真实mysql数据库IP --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="ipAddress"&gt;10.20.147.110&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="schema"&gt;amoeba_study&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 用于登陆mysql的用户名 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user"&gt;root&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 用于登陆mysql的密码 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password"&gt;&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/factoryConfig&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- ObjectPool实现类 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxActive"&gt;200&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxIdle"&gt;200&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="minIdle"&gt;10&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="minEvictableIdleTimeMillis"&gt;600000&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="timeBetweenEvictionRunsMillis"&gt;600000&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="testOnBorrow"&gt;true&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="testWhileIdle"&gt;true&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/poolConfig&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;/dbServer&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;dbServer name="server2"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- PoolableObjectFactory实现类 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="manager"&gt;defaultManager&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 真实mysql数据库端口 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="port"&gt;3306&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 真实mysql数据库IP --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="ipAddress"&gt;10.20.147.111&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="schema"&gt;amoeba_study&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 用于登陆mysql的用户名 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user"&gt;root&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 用于登陆mysql的密码 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password"&gt;&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/factoryConfig&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- ObjectPool实现类 --&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxActive"&gt;200&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxIdle"&gt;200&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="minIdle"&gt;10&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="minEvictableIdleTimeMillis"&gt;600000&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="timeBetweenEvictionRunsMillis"&gt;600000&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="testOnBorrow"&gt;true&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="testWhileIdle"&gt;true&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/poolConfig&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;/dbServer&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&lt;/dbServerList&gt;&nbsp; <br />
&lt;dbServerList&gt;<br />
&nbsp;&lt;dbServer name="server1"&gt;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;!-- PoolableObjectFactory实现类 --&gt;<br />
&nbsp;&nbsp;&lt;factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="manager"&gt;defaultManager&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 真实mysql数据库端口 --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="port"&gt;3306&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 真实mysql数据库IP --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="ipAddress"&gt;10.20.147.110&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="schema"&gt;amoeba_study&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 用于登陆mysql的用户名 --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="user"&gt;root&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 用于登陆mysql的密码 --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="password"&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;/factoryConfig&gt;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;!-- ObjectPool实现类 --&gt;<br />
&nbsp;&nbsp;&lt;poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="maxActive"&gt;200&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="maxIdle"&gt;200&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="minIdle"&gt;10&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="minEvictableIdleTimeMillis"&gt;600000&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="timeBetweenEvictionRunsMillis"&gt;600000&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="testOnBorrow"&gt;true&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="testWhileIdle"&gt;true&lt;/property&gt;<br />
&nbsp;&nbsp;&lt;/poolConfig&gt;<br />
&nbsp;&lt;/dbServer&gt;<br />
&nbsp;&lt;dbServer name="server2"&gt;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;!-- PoolableObjectFactory实现类 --&gt;<br />
&nbsp;&nbsp;&lt;factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="manager"&gt;defaultManager&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 真实mysql数据库端口 --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="port"&gt;3306&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 真实mysql数据库IP --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="ipAddress"&gt;10.20.147.111&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="schema"&gt;amoeba_study&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 用于登陆mysql的用户名 --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="user"&gt;root&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;!-- 用于登陆mysql的密码 --&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="password"&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;/factoryConfig&gt;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&lt;!-- ObjectPool实现类 --&gt;<br />
&nbsp;&nbsp;&lt;poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="maxActive"&gt;200&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="maxIdle"&gt;200&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="minIdle"&gt;10&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="minEvictableIdleTimeMillis"&gt;600000&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="timeBetweenEvictionRunsMillis"&gt;600000&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="testOnBorrow"&gt;true&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;property name="testWhileIdle"&gt;true&lt;/property&gt;<br />
&nbsp;&nbsp;&lt;/poolConfig&gt;<br />
&nbsp;&lt;/dbServer&gt;&nbsp;&nbsp;<br />
&lt;/dbServerList&gt; </p>
<p>以上是proxy与后端各mysql数据库服务器配置信息，具体配置见注释很明白了</p>
<p>最后配置读写分离策略：</p>
<p>&lt;queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="LRUMapSize"&gt;1500&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="defaultPool"&gt;server1&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="writePool"&gt;server1&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="readPool"&gt;server2&lt;/property&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="needParse"&gt;true&lt;/property&gt;&nbsp; <br />
&lt;/queryRouter&gt;&nbsp; <br />
&lt;queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"&gt;<br />
&nbsp;&lt;property name="LRUMapSize"&gt;1500&lt;/property&gt;<br />
&nbsp;&lt;property name="defaultPool"&gt;server1&lt;/property&gt;<br />
&nbsp;&lt;property name="writePool"&gt;server1&lt;/property&gt;<br />
&nbsp;&lt;property name="readPool"&gt;server2&lt;/property&gt;<br />
&nbsp;&lt;property name="needParse"&gt;true&lt;/property&gt;<br />
&lt;/queryRouter&gt; </p>
<p>从以上配置不然发现，写操作路由到server1（master），读操作路由到server2（slave）</p>
<p>3）启动amoeba</p>
<p>在命令行里运行D:\openSource\amoeba-mysql-1.2.0-GA\amoeba.bat即可：</p>
<p>log4j:WARN log4j config load completed from file:D:\openSource\amoeba-mysql-1.2.0-GA\conf\log4j.xml<br />
log4j:WARN ip access config load completed from file:D:\openSource\amoeba-mysql-1.2.0-GA/conf/access_list.conf<br />
2010-07-03 09:55:33,821 INFO&nbsp; net.ServerableConnectionManager - Server listening on 0.0.0.0/0.0.0.0:8066.<br />
三.client端调用与测试 </p>
<p>1）编写client调用程序</p>
<p>具体程序细节就不详述了，只是一个最普通的基于mysql driver的jdbc的数据库操作程序</p>
<p>2）配置数据库连接</p>
<p>本client基于c3p0，具体数据源配置如下：</p>
<p>&lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"&nbsp; <br />
&nbsp;&nbsp;&nbsp; destroy-method="close"&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="driverClass" value="com.mysql.jdbc.Driver" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="jdbcUrl" value="jdbc:mysql://localhost:8066/amoeba_study" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="user" value="root" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="password" value="root" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="minPoolSize" value="1" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="maxPoolSize" value="1" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="maxIdleTime" value="1800" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="acquireIncrement" value="1" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="maxStatements" value="0" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="initialPoolSize" value="1" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="idleConnectionTestPeriod" value="1800" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="acquireRetryAttempts" value="6" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="acquireRetryDelay" value="1000" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="breakAfterAcquireFailure" value="false" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="testConnectionOnCheckout" value="true" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;property name="testConnectionOnCheckin" value="false" /&gt;&nbsp; <br />
&lt;/bean&gt;&nbsp; <br />
&lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"<br />
&nbsp;destroy-method="close"&gt;<br />
&nbsp;&lt;property name="driverClass" value="com.mysql.jdbc.Driver" /&gt;<br />
&nbsp;&lt;property name="jdbcUrl" value="jdbc:mysql://localhost:8066/amoeba_study" /&gt;<br />
&nbsp;&lt;property name="user" value="root" /&gt;<br />
&nbsp;&lt;property name="password" value="root" /&gt;<br />
&nbsp;&lt;property name="minPoolSize" value="1" /&gt;<br />
&nbsp;&lt;property name="maxPoolSize" value="1" /&gt;<br />
&nbsp;&lt;property name="maxIdleTime" value="1800" /&gt;<br />
&nbsp;&lt;property name="acquireIncrement" value="1" /&gt;<br />
&nbsp;&lt;property name="maxStatements" value="0" /&gt;<br />
&nbsp;&lt;property name="initialPoolSize" value="1" /&gt;<br />
&nbsp;&lt;property name="idleConnectionTestPeriod" value="1800" /&gt;<br />
&nbsp;&lt;property name="acquireRetryAttempts" value="6" /&gt;<br />
&nbsp;&lt;property name="acquireRetryDelay" value="1000" /&gt;<br />
&nbsp;&lt;property name="breakAfterAcquireFailure" value="false" /&gt;<br />
&nbsp;&lt;property name="testConnectionOnCheckout" value="true" /&gt;<br />
&nbsp;&lt;property name="testConnectionOnCheckin" value="false" /&gt;<br />
&lt;/bean&gt; </p>
<p>值得注意是，client端只需连到proxy，与实际的数据库没有任何关系，因此jdbcUrl、user、password配置都对应于amoeba暴露出来的配置信息</p>
<p>3）调用与测试</p>
<p>首先插入一条数据：insert into zone_by_id(id,name) values(20003,'name_20003')</p>
<p>通过查看master机上的日志/var/lib/mysql/mysql_log.log：</p>
<p>100703 11:58:42&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set names latin1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET NAMES latin1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET character_set_results = NULL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHOW VARIABLES<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHOW COLLATION<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET autocommit=1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET sql_mode='STRICT_TRANS_TABLES'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHOW VARIABLES LIKE 'tx_isolation'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SHOW FULL TABLES FROM `amoeba_study` LIKE 'PROBABLYNOT'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Prepare&nbsp;&nbsp;&nbsp;&nbsp; [1] insert into zone_by_id(id,name) values(?,?)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Prepare&nbsp;&nbsp;&nbsp;&nbsp; [2] insert into zone_by_id(id,name) values(?,?)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Execute&nbsp;&nbsp;&nbsp;&nbsp; [2] insert into zone_by_id(id,name) values(20003,'name_20003') </p>
<p>得知写操作发生在master机上</p>
<p>通过查看slave机上的日志/var/lib/mysql/mysql_log.log：</p>
<p>100703 11:58:42&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert into zone_by_id(id,name) values(20003,'name_20003') </p>
<p>得知slave同步执行了这条语句</p>
<p>然后查一条数据：select t.name from zone_by_id t where t.id = 20003</p>
<p>通过查看slave机上的日志/var/lib/mysql/mysql_log.log：</p>
<p>100703 12:02:00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33 Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set names latin1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33 Prepare&nbsp;&nbsp;&nbsp;&nbsp; [1] select t.name from zone_by_id t where t.id = ?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33 Prepare&nbsp;&nbsp;&nbsp;&nbsp; [2] select t.name from zone_by_id t where t.id = ?&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33 Execute&nbsp;&nbsp;&nbsp;&nbsp; [2] select t.name from zone_by_id t where t.id = 20003&nbsp; </p>
<p>得知读操作发生在slave机上</p>
<p>并且通过查看slave机上的日志/var/lib/mysql/mysql_log.log发现这条语句没在master上执行</p>
<p>通过以上验证得知简单的master-slave搭建和实战得以生效</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/cutesource/archive/2010/07/03/5710645.aspx</p>
 <img src ="http://www.blogjava.net/lcs868/aggbug/343303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs868/" target="_blank">李春生</a> 2011-01-21 11:09 <a href="http://www.blogjava.net/lcs868/articles/343303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用的一些linux命令</title><link>http://www.blogjava.net/lcs868/articles/246083.html</link><dc:creator>李春生</dc:creator><author>李春生</author><pubDate>Sat, 13 Dec 2008 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/lcs868/articles/246083.html</guid><wfw:comment>http://www.blogjava.net/lcs868/comments/246083.html</wfw:comment><comments>http://www.blogjava.net/lcs868/articles/246083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs868/comments/commentRss/246083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs868/services/trackbacks/246083.html</trackback:ping><description><![CDATA[<strong>整理以下自己在工作中常用到的一些linux命令<br />
</strong><span style="font-size: 10pt"><span style="font-size: 10pt">一：数据库相关：<br />
1.连接mysql：mysql -uroot -p回车后输入密码；连接到远程主机用mysql -h主机地址 -uroot -p密码<br />
2.退出mysql ：exit回车<br />
3.修改密码：mysqladmin -u用户名 -p旧密码 password 新密码。<br />
4.增加新用户：进入mysqlbin然后输入grant select,insert,update,delete on mydb.*&nbsp; to <a href="mailto:username@hostIp">username@hostIp</a> identified by password;也可以不要密码<br />
5.导出数据：mysqldump -d -uroot -p mydb&gt;createdb.sql只导出表结构；mysqldump -t -uroot -p mydb&gt;datadb.sql只导出数据；mysqldump --uroot mydb&gt;all.sql全部导出；<br />
6.显示数据库列表：show databases；<br />
7.显示数据库中的数据表：use mysql；show tables；<br />
8.显示数据表的结构：describe 表名；<br />
9.创建数据库：create database 库名<br />
10.建表：use 库名；create table 表名；<br />
11.删除库，表：drop table 表名；drop database 库名；<br />
12.清空表中记录：delete from 表名；<br />
13：将文本数据转到数据库：load data local infile &#8220;文件名&#8221; into table 表名；最好把文件复制到mysqlbin目录下，操作前先打开表所在的库<br />
14.备份数据库：mysqldump db_name &gt;/path/name.sql -uroot -p ；数据库太大了,想压缩一下?好,用这个命令就行<br />
mysqldump db_name |gzip &gt;/path/name.gz -uroot -p ；备份所有数据库用<font color="#003066">mysqldump --all-databases&nbsp;&nbsp;&gt;/path/name.sql -uroot -p ；</font><font color="#003066">mysqldump --all-databases |gzip &gt;/path/name.gz -uroot -p；备份单个表：mysqldump db_name tab_name &gt;/path/sqlname.sql -uroot -p</font><br />
二：其他<br />
1.启动/停止apache服务：./apachectl start；./apachectl stop；<br />
2.启动/停止tomcat服务：bin/startup.sh；bin/shutdown.sh；<br />
3.查看tomcat进程： ps -ef|grep tomcat<br />
4.杀掉进程： kill 进程号；若强制删除加-9<br />
5.查看所有进程：top<br />
6：删除文件：rm -r 文件名 也删除子目录<br />
7.重命名：mv 原文件名&nbsp; 新文件名，移动文件也用该命令<br />
8.查看端口号 netstat -an|grep 端口号<br />
9.远程copy：scp是有Security的文件copy，基于ssh登录。操作起来比较方便，比如要把当前一个文件copy到远程另外一台主机上，可以如下命令。 <br />
scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root <br />
然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码，接着就开始copy了。 <br />
如果想反过来操作，把文件从远程主机copy到当前系统，也很简单。 <br />
scp root@172.19.2.75:/home/root /home/daisy/full.tar.gz </span></span><br />
<br />
<br />
<img src ="http://www.blogjava.net/lcs868/aggbug/246083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs868/" target="_blank">李春生</a> 2008-12-13 10:03 <a href="http://www.blogjava.net/lcs868/articles/246083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>