??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品一区二区在线 ,日韩.欧美.亚洲,亚洲图色一区二区三区http://www.aygfsteel.com/lcs868/category/47664.html李春生的博客zh-cnFri, 21 Jan 2011 20:41:26 GMTFri, 21 Jan 2011 20:41:26 GMT60mysql 中sql 语句查询今天、昨天?天、近30天、本月、上一?数据http://www.aygfsteel.com/lcs868/articles/343319.html李春?/dc:creator>李春?/author>Fri, 21 Jan 2011 05:40:00 GMThttp://www.aygfsteel.com/lcs868/articles/343319.htmlhttp://www.aygfsteel.com/lcs868/comments/343319.htmlhttp://www.aygfsteel.com/lcs868/articles/343319.html#Feedback0http://www.aygfsteel.com/lcs868/comments/commentRss/343319.htmlhttp://www.aygfsteel.com/lcs868/services/trackbacks/343319.html今天

select * from 表名 where to_days(旉字段? = to_days(now());

昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 旉字段? <= 1

7?br />
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(旉字段?

q?0?br />
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(旉字段?

本月

SELECT * FROM 表名 WHERE DATE_FORMAT( 旉字段? '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

上一?br />
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 旉字段? '%Y%m' ) ) =1


]]>
mysql date_format 按不同时间单位进行分l统计 http://www.aygfsteel.com/lcs868/articles/343320.html李春?/dc:creator>李春?/author>Fri, 21 Jan 2011 05:40:00 GMThttp://www.aygfsteel.com/lcs868/articles/343320.htmlhttp://www.aygfsteel.com/lcs868/comments/343320.htmlhttp://www.aygfsteel.com/lcs868/articles/343320.html#Feedback0http://www.aygfsteel.com/lcs868/comments/commentRss/343320.htmlhttp://www.aygfsteel.com/lcs868/services/trackbacks/343320.html Ҏformat字符串格式化date倹{下列修饰符可以被用在format字符串中Q?nbsp;  
%M     月名?January……December)     
%W     星期名字(Sunday……Saturday)     
%D     有英语前~的月份的日期(1st,   2nd,   3rd,   {等。)   
%Y     q?   数字,   4   ?nbsp;  
%y     q?   数字,   2   ?nbsp;  
%a     ~写的星期名?Sun……Sat)     
%d     月䆾中的天数,   数字(00……31)     
%e     月䆾中的天数,   数字(0……31)     
%m     ?   数字(01……12)     
%c     ?   数字(1……12)     
%b     ~写的月份名?Jan……Dec)     
%j     一q中的天?001……366)     
%H     时(00……23)     
%k     时(0……23)     
%h     时(01……12)     
%I     时(01……12)     
%l     时(1……12)     
%i     分钟,   数字(00……59)     
%r     旉,12   时(hh:mm:ss   [AP]M)     
%T     旉,24   时(hh:mm:ss)     
%S     U?00……59)     
%s     U?00……59)     
%p     AM或PM     
%w     一个星期中的天?0=Sunday   ……6=Saturday   Q?nbsp;  
%U     星期(0……52),   q里星期天是星期的第一?nbsp;  
%u     星期(0……52),   q里星期一是星期的W一?nbsp;  
%%     一个文?#8220;%”?nbsp;    
  
所有的其他字符不做解释被复制到l果中?nbsp;  
  
mysql>   select   DATE_FORMAT('1997-10-04   22:23:00',   '%W   %M   %Y');
                  ->   'Saturday   October   1997'
mysql>   select   DATE_FORMAT('1997-10-04   22:23:00',   '%H:%i:%s');
                  ->   '22:23:00'
mysql>   select   DATE_FORMAT('1997-10-04   22:23:00',
                                                      '%D   %y   %a   %d   %m   %b   %j');
                  ->   '4th   97   Sat   04   10   Oct   277'
mysql>   select   DATE_FORMAT('1997-10-04   22:23:00',
                                                      '%H   %k   %I   %r   %T   %S   %w');
                  ->   '22   22   10   10:23:00   PM   22:23:00   00   6'


, '%Y %m'


]]>
mysql常用命ohttp://www.aygfsteel.com/lcs868/articles/343306.html李春?/dc:creator>李春?/author>Fri, 21 Jan 2011 03:17:00 GMThttp://www.aygfsteel.com/lcs868/articles/343306.htmlhttp://www.aygfsteel.com/lcs868/comments/343306.htmlhttp://www.aygfsteel.com/lcs868/articles/343306.html#Feedback0http://www.aygfsteel.com/lcs868/comments/commentRss/343306.htmlhttp://www.aygfsteel.com/lcs868/services/trackbacks/343306.html1.Linuxpȝ下启动MySQL的命令:

mysqladmin start

/ect/init.d/mysql start (前面为mysql的安装\?

2.linux下重启mysql的命令:

mysqladmin restart

/ect/init.d/mysql restart (前面为mysql的安装\?

3.linux下关闭mysql的命令:

mysqladmin shutdown

/ect/init.d/mysql shutdown (前面为mysql的安装\?

4.q接本机上的mysqlQ?/p>

q入目录mysql\binQ再键入命omysql -uroot -pQ?回R后提C入密码?/p>

退出mysql命oQexitQ回车)

5.修改mysql密码Q?/p>

mysqladmin -u用户?-p旧密?password 新密?/p>

或进入mysql命o行SET PASSWORD FOR root=PASSWORD("root");

6.增加新用戗(注意Qmysql环境中的命o后面都带一个分号作为命令结束符Q?/p>

grant select on 数据?* to 用户名@dL identified by "密码"

如增加一个用户test密码?23Q让他可以在ML上登录,q对所有数据库有查询、插入、修攏V删除的权限。首先用以root用户q入mysqlQ然后键入以下命令:

grant select,insert,update,delete on *.* to " Identified by "123";

二、有关MySQL数据库方面的操作

必须首先d到mysql中,有关操作都是在mysql的提C符下进行,而且每个命o以分L?/p>

1、显C数据库列表?/p>

show databases;

2、显C库中的数据表:

use mysqlQ?Q/打开?/p>

show tables;

3、显C数据表的结构:

describe 表名;

4、徏库:

create database 库名;

5、徏表:

use 库名Q?/p>

create table 表名(字段讑֮列表)Q?/p>

6、删库和删表:

drop database 库名;

drop table 表名Q?/p>

7、将表中记录清空Q?/p>

delete from 表名;

8、显C中的记录Q?/p>

select * from 表名;

9、编码的修改

如果要改变整个mysql的编码格式:

启动mysql的时候,mysqld_safe命o行加?/p>

--default-character-set=gbk

如果要改变某个库的编码格式:在mysql提示W后输入命o

alter database db_name default character set gbk;

三、数据的导入导出

1、文本数据{到数据库?/p>

文本数据应符合的格式Q字D|据之间用tab键隔开Qnull值用来代ѝ例Q?/p>

1 name duty 2006-11-23

数据传入命o load data local infile "文g? into table 表名;

2、导出数据库和表

mysqldump --opt news > news.sqlQ将数据库news中的所有表备䆾到news.sql文gQnews.sql是一个文本文Ӟ文g名Q取。)

mysqldump --opt news author article > author.article.sqlQ将数据库news中的author表和article表备份到author.article.sql文gQ?author.article.sql是一个文本文Ӟ文g名Q取。)

mysqldump --databases db1 db2 > news.sqlQ将数据库dbl和db2备䆾到news.sql文gQnews.sql是一个文本文Ӟ文g名Q取。)

mysqldump -h host -u user -p pass --databases dbname > file.dump

是把host上的以名字userQ口令pass的数据库dbname导入到文件file.dump?/p>

mysqldump --all-databases > all-databases.sqlQ将所有数据库备䆾到all-databases.sql文gQall-databases.sql是一个文本文Ӟ文g名Q取。)

3、导入数?/p>

mysql < all-databases.sqlQ导入数据库Q?/p>

mysql>source news.sql;Q在mysql命o下执行,可导入表Q?/p>

一、连接MySQL

格式Q?mysql -hL地址 -u用户?Qp用户密码

1、例1Q连接到本机上的MYSQL?/p>

首先在打开DOSH口Q然后进入目?mysqlbinQ再键入命omysql -uroot -pQ回车后提示你输密码Q如果刚安装好MYSQLQ超U用户root是没有密码的Q故直接回R卛_q入到MYSQL中了QMYSQL的提C符是: mysql>?/p>

2、例2Q连接到q程L上的MYSQL。假设远E主机的IP为:110.110.110.110Q用户名为root,密码为abcd123。则键入以下命oQ?/p>

mysql -h110.110.110.110 -uroot -pabcd123

Q注:u与root可以不用加空|其它也一P

3、退出MYSQL命oQ?exit Q回车)?/p>

二、修改密?/p>

格式Qmysqladmin -u用户?-p旧密?password 新密?/p>

1、例1Q给root加个密码ab12。首先在DOS下进入目录mysqlbinQ然后键入以下命令:

mysqladmin -uroot -password ab12

注:因ؓ开始时root没有密码Q所?p旧密码一就可以省略了?/p>

2、例2Q再root的密码改为djg345?/p>

mysqladmin -uroot -pab12 password djg345

三、增加新用户。(注意Q和上面不同Q下面的因ؓ是MySQL环境中的命oQ所以后面都带一个分号作为命令结束符Q?/p>

格式Qgrant select on 数据?* to 用户名@dL identified by \"密码\"

?、增加一个用户test1密码为abcQ让他可以在ML上登录,q对所有数据库有查询、插入、修攏V删除的权限。首先用以root用户q入MySQLQ然后键入以下命令:

grant select,insert,update,

delete on *.* to test1@\"%\" Identified by \"abc\";

但例1增加的用h十分危险的,你想如某个h知道test1的密码,那么他就可以在internet上的M一台电脑上d你的MySQL数据库ƈ对你的数据可以ؓ所Ʋؓ了,解决办法见例2?/p>

?、增加一个用户test2密码为abc,让他只可以在localhost上登录,q可以对数据库mydbq行查询、插入、修攏V删除的操作Qlocalhost指本C机,即MySQL数据库所在的那台LQ,q样用户即用知道test2的密码,他也无法从internet上直接访问数据库Q只能通过MySQLL上的web|讉K?/p>

grant select,insert,update,

delete on mydb.* to test2@localhost identified by \"abc\";

如果你不想test2有密码,可以再打一个命令将密码消掉?/p>

grant select,insert,update,delete on mydb

.* to test2@localhost identified by \"\";

在上面讲了登录、增加用戗密码更改等问题。下面我们来看看MySQL中有x据库斚w的操作。注意:你必首先登录到MySQL中,以下操作都是在MySQL的提C符下进行的Q而且每个命o以分L束?/p>

一、操作技?/p>

1、如果你打命令时Q回车后发现忘记加分P你无重打一遍命令,只要打个分号回R可以了。也是说你可以把一个完整的命o分成几行来打Q完后用分号作结束标志就完成?/p>

2、你可以使用光标上下键调Z前的命o。但以前我用q的一个MySQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win?/p>

二、显C命?/p>

1、显C数据库列表Q?/p>

show databases;

刚开始时才两个数据库Qmysql和test。MySQL库很重要它里面有MYSQL的系l信息,我们改密码和新增用户Q实际上是用这个库q行操作?/p>

2、显C库中的数据表:

use mysqlQ?Q/打开库,学过FOXBASE的一定不会陌生吧

show tables;

3、显C数据表的结构:

describe 表名;

4、徏库:

create database 库名;

5、徏表:

use 库名Q?/p>

create table 表名 (字段讑֮列表)Q?/p>

6、删库和删表:

drop database 库名;

drop table 表名Q?/p>

7、将表中记录清空Q?/p>

delete from 表名;

8、显C中的记录Q?/p>

select * from 表名;

三、一个徏库和以及插入数据的实?/p>

drop database if exists school; //如果存在SCHOOL则删?/p>

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3) auto_increment not null primary key,

name char(10) not null,

address varchar(50) default ’深圳’,

year date

); //l束

//以下为插入字D?/p>

insert into teacher values(’’,’glchengang’,’深圳一?#8217;,’1976-10-10’);

insert into teacher values(’’,’jack’,’深圳一?#8217;,’1975-12-23’);

注:在徏表中Q?Q将ID设ؓ长度?的数字字D?int(3)q让它每个记录自动加一:auto_incrementq不能ؓI?not null而且让他成ؓdDprimary keyQ?Q将NAME设ؓ长度?0的字W字D(3Q将ADDRESS设ؓ长度50的字W字D,而且~省gؓ深圳。varchar和char有什么区别呢Q只有等以后的文章再说了。(4Q将YEAR设ؓ日期字段?/p>

如果你在MySQL提示W键入上面的命o也可以,但不方便调试。你可以以上命令原样写入一个文本文件中假设为school.sqlQ然后复制到c:\\下,q在DOS状态进入目录\\mysql\\binQ然后键入以下命令:

mysql -uroot -p密码 < c:\\school.sql

如果成功Q空Z行无M昄Q如有错误,会有提示。(以上命o已经调试Q你只要?/的注释去掉即可用)?/p>

四、将文本数据转到数据库中

1、文本数据应W合的格式:字段数据之间用tab键隔开Qnull值用\\n来代ѝ?/p>

例:

3 rose 深圳二中 1976-10-10

4 mike 深圳一?1975-12-23

2、数据传入命?load data local infile \"文g名\" into table 表名?/p>

注意Q你最好将文g复制到\\mysql\\bin目录下,q且要先用use命o打表所在的库?/p>

五、备份数据库Q?/p>

1、mysqldump --opt school>school.bbb

mysqldump --opt school>school.bbb

Q命令在DOS的\\mysql\\bin目录下执行)

注释:数据库school备䆾到school.bbb文gQschool.bbb是一个文本文Ӟ文g名Q取,打开看看你会有新发现?/p>

后记Q其实MySQL的对数据库的操作与其它的SQLcL据库大同异Q您最好找本将SQL的书看看。我在这里只介绍一些基本的Q其实我也就只懂q些了,呵呵。最好的MYSQL教程q是“晏子“译的“MYSQL中文参考手?#8220;不仅免费每个相关|站都有下蝲Q而且它是最权威的。可惜不是象\"PHP4中文手册\"那样是chm的格式,在查扑և数命令的时候不太方ѝ?/p>

2、修改登录密?/p>

1) mysqladmin -u用户?-p旧密?password 新密?

例:mysqladmin -u root password 21century

注:因ؓ开始时root没有密码Q所?p旧密码一就可以省略了?/p>

2)直接修改user表的root用户口oQ?/p>

mysql> user mysql;

mysql> update user set pasword=password('21century') where user='root';

mysql> flush privileges;

注:flush privileges的意思是强制h内存授权表,否则用的q是~冲中的口o?/p>

3、测试密码是否修Ҏ?

1Q不用密码登?

[root@test1 local]# mysql

ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

昄错误Q说明密码已l修攏V?/p>

2Q用修改后的密码d:

[root@test1 local]# mysql -u root -p

Enter password: (输入修改后的密码21century)

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 177 to server version: 3.23.48

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

成功Q?/p>

q是通过mysqladmin命o修改口oQ也可通过修改库来更改口o?/p>

4、启动和停止:

启动QMysql?.23.15版本开始作了改动,默认安装后服务要用MySQL用户来启动,不允许root用户启动?/p>

如果非要用root用户来启动,必须加上--user=root参数(./safe_mysqld --user=root &)停止Qmysqladmin -u root -p shutdown?/p>

5、导出meeting数据库:

mysqldump -uroot -p21century meeting > db_meeting.sql

ghdbname数据?

mysqldump -uroot -p21century dbname < xxx.sql

导入数据库还可用cM于oracle中@my_script.sql的方式一ơ执行大量sql语句Q这在用mysqldump不v作用旉常有用?/p>

例:#./mysql -uroot -p < /home/xuys/db_meeting_2003.sql

(注:create database、use databasename、create table和insert into语句都可写在上面的脚步文件中)

6、给表改?

RENAME TABLE ztemp TO zteMP4;

7、修改字D属性:

ALTER TABLE bbabase CHANGE news_id id VARCHAR(5) NOT NULL;

8、在表中的content后增加一字段Q?/p>

ALTER TABLE bbabase ADD leave_time DATETIME NOT NULL AFTER



]]>
mysql安装http://www.aygfsteel.com/lcs868/articles/343305.html李春?/dc:creator>李春?/author>Fri, 21 Jan 2011 03:16:00 GMThttp://www.aygfsteel.com/lcs868/articles/343305.htmlhttp://www.aygfsteel.com/lcs868/comments/343305.htmlhttp://www.aygfsteel.com/lcs868/articles/343305.html#Feedback0http://www.aygfsteel.com/lcs868/comments/commentRss/343305.htmlhttp://www.aygfsteel.com/lcs868/services/trackbacks/343305.html shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

]]>
linuxpȝ下jdk1.6安装http://www.aygfsteel.com/lcs868/articles/343304.html李春?/dc:creator>李春?/author>Fri, 21 Jan 2011 03:14:00 GMThttp://www.aygfsteel.com/lcs868/articles/343304.htmlhttp://www.aygfsteel.com/lcs868/comments/343304.htmlhttp://www.aygfsteel.com/lcs868/articles/343304.html#Feedback0http://www.aygfsteel.com/lcs868/comments/commentRss/343304.htmlhttp://www.aygfsteel.com/lcs868/services/trackbacks/343304.html1. 从网站上下蝲jdk1.6?jdk-6u10-linux-i586-rpm.bin ),通过leapFTP上传到linuxpȝ?var/ftp/pub目录?/p>

 

  2.在linux中切换到 /var/ftp/pub目录下,修改jdk1.6的用权限:#chmod  u+x  jdk-6u10-linux-i586-rpm.bin

 

  3.解压q安装:#./ jdk-6u10-linux-i586-rpm.bin (默认安装?usr/java?

 

  4.环境变量配置Q?/p>

    #vi  /etc/profile

    在该profile文g中添加:

    JAVA_HOME=/usr/java/jdk1.6.0_10

    JRE_HOME=/usr/java/jdk1.6.0_10/jre

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

    export JAVA_HOME JRE_HOME PATH CLASSPATH

    d完毕保存退?/p>

 

    #source /etc/profile

    #java -version

    昄 java version "1.6.0_10" (jdk1.6安装成功)

 

   卸蝲rpm版的jdkQ?/p>

   #rpm -qa|grep jdk

   昄Qjdk-1.6.0_10-fcs
   卸蝲Q?rpm -e  --nodeps  jdk-1.6.0_10-fcs



]]>
mysql slave,master配置http://www.aygfsteel.com/lcs868/articles/343303.html李春?/dc:creator>李春?/author>Fri, 21 Jan 2011 03:09:00 GMThttp://www.aygfsteel.com/lcs868/articles/343303.htmlhttp://www.aygfsteel.com/lcs868/comments/343303.htmlhttp://www.aygfsteel.com/lcs868/articles/343303.html#Feedback0http://www.aygfsteel.com/lcs868/comments/commentRss/343303.htmlhttp://www.aygfsteel.com/lcs868/services/trackbacks/343303.html一个完整的mysqld分离环境包括以下几个部分Q?/p>

应用E序client
database proxy
database集群
在本ơ实战中Q应用程序clientZc3p0q接后端的database proxy。database proxy负责理client实际讉Kdatabase的\q略,采用开源框架amoeba。database集群采用mysql的master-slave的replicationҎ。整个环境的l构囑֦下所C:

 

实战步骤与详?/p>

一.搭徏mysql的master-slave环境

1Q分别在host1Q?0.20.147.110Q和host2Q?0.20.147.111Q上安装mysqlQ?.0.45Q,具体安装Ҏ可见官方文档

2Q配|master

首先~辑/etc/my.cnfQ添加以下配|:

log-bin=mysql-bin #slave会基于此log-bin来做replication
server-id=1 #master的标C?br /> binlog-do-db = amoeba_study #用于master-slave的具体数据库

然后d专门用于replication的用P

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@10.20.147.111 IDENTIFIED BY '111111';

重启mysqlQ得配|生效:

/etc/init.d/mysqld restart

最后查看master状态:

 

3Q配|slave

首先~辑/etc/my.cnfQ添加以下配|:

server-id=2 #slave的标C?/p>

配置生效后,配置与master的连接:

mysql> CHANGE MASTER TO
    -> MASTER_HOST='10.20.147.110',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='111111',
    -> MASTER_LOG_FILE='mysql-bin.000003',
    -> MASTER_LOG_POS=161261;

其中MASTER_HOST是master机的ipQMASTER_USER和MASTER_PASSWORD是我们刚才在master上添加的用户QMASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息

最后启动slaveQ?/p>

mysql> start slave;

4Q验证master-slave搭徏生效

通过查看slave机的logQ?var/log/mysqld.logQ:

100703 10:51:42 [Note] Slave I/O thread: connected to master 'repl@10.20.147.110:3306',  replication started in log 'mysql-bin.000003' at position 161261

如看C上信息则证明搭徏成功Q如果有问题也可通过此log扑֎?/p>

?搭徏database proxy

此次实战中database proxy采用amoeba Q它的相关信息可以查阅官Ҏ档,不在此详q?/p>

1Q安装amoeba

下蝲amoebaQ?.2.0-GAQ后解压到本圎ͼD:\openSource\amoeba-mysql-1.2.0-GAQ,卛_成安?/p>

2Q配|amoeba

先配|proxyq接和与各后端mysql服务器连接信息(D:\openSource\amoeba-mysql-1.2.0-GA\conf\amoeba.xmlQ:

<server> 
    <!-- proxy serverl定的端?--> 
    <property name="port">8066</property> 
      
    <!-- proxy serverl定的IP --> 
    <!--  
    <property name="ipAddress">127.0.0.1</property> 
     --> 
    <!-- proxy server net IO Read thread size --> 
    <property name="readThreadPoolSize">20</property> 
      
    <!-- proxy server client process thread size --> 
    <property name="clientSideThreadPoolSize">30</property> 
      
    <!-- mysql server data packet process thread size --> 
    <property name="serverSideThreadPoolSize">30</property> 
      
    <!-- socket Send and receive BufferSize(unit:K)  --> 
    <property name="netBufferSize">128</property> 
      
    <!-- Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm). --> 
    <property name="tcpNoDelay">true</property> 
      
    <!-- 对外验证的用户名 --> 
    <property name="user">root</property> 
      
    <!-- 对外验证的密?--> 
    <property name="password">root</property> 
</server> 
<server>
 <!-- proxy serverl定的端?-->
 <property name="port">8066</property>
 
 <!-- proxy serverl定的IP -->
 <!--
 <property name="ipAddress">127.0.0.1</property>
  -->
 <!-- proxy server net IO Read thread size -->
 <property name="readThreadPoolSize">20</property>
 
 <!-- proxy server client process thread size -->
 <property name="clientSideThreadPoolSize">30</property>
 
 <!-- mysql server data packet process thread size -->
 <property name="serverSideThreadPoolSize">30</property>
 
 <!-- socket Send and receive BufferSize(unit:K)  -->
 <property name="netBufferSize">128</property>
 
 <!-- Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm). -->
 <property name="tcpNoDelay">true</property>
 
 <!-- 对外验证的用户名 -->
 <property name="user">root</property>
 
 <!-- 对外验证的密?-->
 <property name="password">root</property>
</server>

以上是proxy提供lclient的连接配|?/p>

<dbServerList> 
    <dbServer name="server1">           
        <!-- PoolableObjectFactory实现c?--> 
        <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"> 
            <property name="manager">defaultManager</property> 
              
            <!-- 真实mysql数据库端?--> 
            <property name="port">3306</property> 
              
            <!-- 真实mysql数据库IP --> 
            <property name="ipAddress">10.20.147.110</property> 
            <property name="schema">amoeba_study</property> 
              
            <!-- 用于登陆mysql的用户名 --> 
            <property name="user">root</property> 
              
            <!-- 用于登陆mysql的密?--> 
            <property name="password"></property> 
              
        </factoryConfig> 
          
        <!-- ObjectPool实现c?--> 
        <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"> 
            <property name="maxActive">200</property> 
            <property name="maxIdle">200</property> 
            <property name="minIdle">10</property> 
            <property name="minEvictableIdleTimeMillis">600000</property> 
            <property name="timeBetweenEvictionRunsMillis">600000</property> 
            <property name="testOnBorrow">true</property> 
            <property name="testWhileIdle">true</property> 
        </poolConfig> 
    </dbServer> 
    <dbServer name="server2"> 
          
        <!-- PoolableObjectFactory实现c?--> 
        <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"> 
            <property name="manager">defaultManager</property> 
              
            <!-- 真实mysql数据库端?--> 
            <property name="port">3306</property> 
              
            <!-- 真实mysql数据库IP --> 
            <property name="ipAddress">10.20.147.111</property> 
            <property name="schema">amoeba_study</property> 
              
            <!-- 用于登陆mysql的用户名 --> 
            <property name="user">root</property> 
              
            <!-- 用于登陆mysql的密?--> 
            <property name="password"></property> 
              
        </factoryConfig> 
          
        <!-- ObjectPool实现c?--> 
        <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"> 
            <property name="maxActive">200</property> 
            <property name="maxIdle">200</property> 
            <property name="minIdle">10</property> 
            <property name="minEvictableIdleTimeMillis">600000</property> 
            <property name="timeBetweenEvictionRunsMillis">600000</property> 
            <property name="testOnBorrow">true</property> 
            <property name="testWhileIdle">true</property> 
        </poolConfig> 
    </dbServer>         
</dbServerList> 
<dbServerList>
 <dbServer name="server1">   
  <!-- PoolableObjectFactory实现c?-->
  <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
   <property name="manager">defaultManager</property>
   
   <!-- 真实mysql数据库端?-->
   <property name="port">3306</property>
   
   <!-- 真实mysql数据库IP -->
   <property name="ipAddress">10.20.147.110</property>
   <property name="schema">amoeba_study</property>
   
   <!-- 用于登陆mysql的用户名 -->
   <property name="user">root</property>
   
   <!-- 用于登陆mysql的密?-->
   <property name="password"></property>
   
  </factoryConfig>
  
  <!-- ObjectPool实现c?-->
  <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
   <property name="maxActive">200</property>
   <property name="maxIdle">200</property>
   <property name="minIdle">10</property>
   <property name="minEvictableIdleTimeMillis">600000</property>
   <property name="timeBetweenEvictionRunsMillis">600000</property>
   <property name="testOnBorrow">true</property>
   <property name="testWhileIdle">true</property>
  </poolConfig>
 </dbServer>
 <dbServer name="server2">
  
  <!-- PoolableObjectFactory实现c?-->
  <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
   <property name="manager">defaultManager</property>
   
   <!-- 真实mysql数据库端?-->
   <property name="port">3306</property>
   
   <!-- 真实mysql数据库IP -->
   <property name="ipAddress">10.20.147.111</property>
   <property name="schema">amoeba_study</property>
   
   <!-- 用于登陆mysql的用户名 -->
   <property name="user">root</property>
   
   <!-- 用于登陆mysql的密?-->
   <property name="password"></property>
   
  </factoryConfig>
  
  <!-- ObjectPool实现c?-->
  <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
   <property name="maxActive">200</property>
   <property name="maxIdle">200</property>
   <property name="minIdle">10</property>
   <property name="minEvictableIdleTimeMillis">600000</property>
   <property name="timeBetweenEvictionRunsMillis">600000</property>
   <property name="testOnBorrow">true</property>
   <property name="testWhileIdle">true</property>
  </poolConfig>
 </dbServer>  
</dbServerList>

以上是proxy与后端各mysql数据库服务器配置信息Q具体配|见注释很明白了

最后配|读写分ȝ略:

<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"> 
    <property name="LRUMapSize">1500</property> 
    <property name="defaultPool">server1</property> 
    <property name="writePool">server1</property> 
    <property name="readPool">server2</property> 
    <property name="needParse">true</property> 
</queryRouter> 
<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
 <property name="LRUMapSize">1500</property>
 <property name="defaultPool">server1</property>
 <property name="writePool">server1</property>
 <property name="readPool">server2</property>
 <property name="needParse">true</property>
</queryRouter>

从以上配|不然发玎ͼ写操作\由到server1QmasterQ,L作\由到server2QslaveQ?/p>

3Q启动amoeba

在命令行里运行D:\openSource\amoeba-mysql-1.2.0-GA\amoeba.bat卛_Q?/p>

log4j:WARN log4j config load completed from file:D:\openSource\amoeba-mysql-1.2.0-GA\conf\log4j.xml
log4j:WARN ip access config load completed from file:D:\openSource\amoeba-mysql-1.2.0-GA/conf/access_list.conf
2010-07-03 09:55:33,821 INFO  net.ServerableConnectionManager - Server listening on 0.0.0.0/0.0.0.0:8066.
?client端调用与试

1Q编写client调用E序

具体E序l节׃详述了,只是一个最普通的Zmysql driver的jdbc的数据库操作E序

2Q配|数据库q接

本clientZc3p0Q具体数据源配置如下Q?/p>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
    destroy-method="close"> 
    <property name="driverClass" value="com.mysql.jdbc.Driver" /> 
    <property name="jdbcUrl" value="jdbc:mysql://localhost:8066/amoeba_study" /> 
    <property name="user" value="root" /> 
    <property name="password" value="root" /> 
    <property name="minPoolSize" value="1" /> 
    <property name="maxPoolSize" value="1" /> 
    <property name="maxIdleTime" value="1800" /> 
    <property name="acquireIncrement" value="1" /> 
    <property name="maxStatements" value="0" /> 
    <property name="initialPoolSize" value="1" /> 
    <property name="idleConnectionTestPeriod" value="1800" /> 
    <property name="acquireRetryAttempts" value="6" /> 
    <property name="acquireRetryDelay" value="1000" /> 
    <property name="breakAfterAcquireFailure" value="false" /> 
    <property name="testConnectionOnCheckout" value="true" /> 
    <property name="testConnectionOnCheckin" value="false" /> 
</bean> 
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
 destroy-method="close">
 <property name="driverClass" value="com.mysql.jdbc.Driver" />
 <property name="jdbcUrl" value="jdbc:mysql://localhost:8066/amoeba_study" />
 <property name="user" value="root" />
 <property name="password" value="root" />
 <property name="minPoolSize" value="1" />
 <property name="maxPoolSize" value="1" />
 <property name="maxIdleTime" value="1800" />
 <property name="acquireIncrement" value="1" />
 <property name="maxStatements" value="0" />
 <property name="initialPoolSize" value="1" />
 <property name="idleConnectionTestPeriod" value="1800" />
 <property name="acquireRetryAttempts" value="6" />
 <property name="acquireRetryDelay" value="1000" />
 <property name="breakAfterAcquireFailure" value="false" />
 <property name="testConnectionOnCheckout" value="true" />
 <property name="testConnectionOnCheckin" value="false" />
</bean>

值得注意是,client端只需q到proxyQ与实际的数据库没有M关系Q因此jdbcUrl、user、password配置都对应于amoeba暴露出来的配|信?/p>

3Q调用与试

首先插入一条数据:insert into zone_by_id(id,name) values(20003,'name_20003')

通过查看masterZ的日?var/lib/mysql/mysql_log.logQ?/p>

100703 11:58:42       1 Query       set names latin1
                      1 Query       SET NAMES latin1
                      1 Query       SET character_set_results = NULL
                      1 Query       SHOW VARIABLES
                      1 Query       SHOW COLLATION
                      1 Query       SET autocommit=1
                      1 Query       SET sql_mode='STRICT_TRANS_TABLES'
                      1 Query       SHOW VARIABLES LIKE 'tx_isolation'
                      1 Query       SHOW FULL TABLES FROM `amoeba_study` LIKE 'PROBABLYNOT'
                      1 Prepare     [1] insert into zone_by_id(id,name) values(?,?)
                      1 Prepare     [2] insert into zone_by_id(id,name) values(?,?)          
                      1 Execute     [2] insert into zone_by_id(id,name) values(20003,'name_20003')

得知写操作发生在masterZ

通过查看slaveZ的日?var/lib/mysql/mysql_log.logQ?/p>

100703 11:58:42       2 Query       insert into zone_by_id(id,name) values(20003,'name_20003')

得知slave同步执行了这条语?/p>

然后查一条数据:select t.name from zone_by_id t where t.id = 20003

通过查看slaveZ的日?var/lib/mysql/mysql_log.logQ?/p>

100703 12:02:00      33 Query       set names latin1
                     33 Prepare     [1] select t.name from zone_by_id t where t.id = ?
                     33 Prepare     [2] select t.name from zone_by_id t where t.id = ?   
                     33 Execute     [2] select t.name from zone_by_id t where t.id = 20003 

得知L作发生在slaveZ

q且通过查看slaveZ的日?var/lib/mysql/mysql_log.log发现q条语句没在master上执?/p>

通过以上验证得知单的master-slave搭徏和实战得以生?/p>

 

本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/cutesource/archive/2010/07/03/5710645.aspx



]]>
վ֩ģ壺 ɳ| ڰ| ɽ| ¤| կ| ͷ| | Ҧ| Ϻӿ| | | ˮ| | | | | Զ| ƽ| | | | | | | ɽ| | ɽ| | | | | | | Դ| | ƽ| Ϫ| ԭ| | | |