订阅本站
配置服务器的时候,问题来了,有的服务器用户是PHP4.4+MYSQL4.0,有的用户是PHP5+MYSQL5.0,因为站点数量极少,总不能弄两台服务器那么浪费哦… 
查了下资料,解决了. 

首先我安装的是MYSQL5,安装到了D盘下,这里没有什么特别.不过记得要把更改服务的名称,我这里设置的是”mysql5a”(是怕跟mysql4的服务冲突而已),安装成功之后,停掉MYSQL5的服务. 
开始安装MYSQL4.0,安装成功后,注册服务,然后到c:\windows\下找到my.ini,将#port=3307去掉前面的”#”号,然后将3306更改成3307,保存,重启mysql4的服务. 
现在在启动mysql5就可以启动起来了. 

好了,现在mysql4.0和mysql5.0就共存了. 
在安装程序的时候,想用MYSQL4.0的用户的服务器地址应为: localhost:3307 想用mysql5.0的用户默认填写localhost不用加端口号就可以了. 

PHP4.4和PHP5.0的共存更简单了,用ISAPI的方式加载就可以了,这个没特别的…. 

 
———————————-
哦哦,补充一下,怎样让phpmyadmin分出来哪个才是mysql4哪个才是mysql5呢,
我这里用的是phpmyadmin2.10.1的,
需要编辑libraries目录下的config.default.php这个文件
查找$cfg['Servers'][$i]['port'] 然后将值改成3307 就识别到了mysql4,不改就是mysql5  

问:怎样解决MySQL连接过多的错误? . _) I5 W1 d& ]4 _) @0 @$ t4 d

& p+ {+ b# {1 B0 I2 f0 u答:系统不能连接数据库,关键要看两个数据
/ T* x! m1 m- D$ w
” u6 Q’ X9 i% b5 k1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。 # F, `+ c6 p& ^& H! @
: T8 ?. N$ v’ e5 R- q’ `- b! Q
2、数据库当前的连接线程数threads_connected。这是动态变化的。 5 p0 b, u5 z- |6 N/ Y1 }

  N3 U8 T+ w! ~9 L1 D6 A, s查看max_connections、max_connections的办法见后。$ {. G  E9 \) @) G: F6 ?* {

$ d1 S  {$ o” Y. J2 x5 ^& L如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。- j: W7 k1 @0 P3 k3 I$ u
( G! G2 g’ e# h2 w- M
因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术/ K8 @1 B* c’ I0 X6 P

$ @7 J& C$ y9 u0 X’ x1 A* q% b0 a$ n但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。
0 w/ h; `1 L1 p” G7 |7 v* R1 _- B
这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。   T) }( g+ X/ T: n

/ k1 Q, C  X+ ]” X” r0 R7 z该错误的简便的检查办法是,在刷新强坛页面时,不断监视threads_connected的变化。如果max_connections足够大,而 threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术, threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。
4 y’ R2 p2 [# m* U$ Z9 r4 O  @: H3 h3 V. F9 I; p+ s
从强坛出错的情况看,更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考
/ U- i- M2 o0 ]) a7 `8 U5 w. H8 k  W. j2 y  o, I6 j
让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。- L3 N  U; J- T  M

% C: E) I& l/ l$ t5 v$ {5 [- |1 }: h查看max_connections% ?% L9 Q2 n9 y8 q! ?% n/ N. \
! V: p* z# T" }! B8 k" b
进入MySQL,用命令:9 N% X! r1 v$ L, r

, k8 k) z' G  J" k+ y9 zshow variables 1 D9 ]6 Y  h1 A+ Q( a1 j+ o

, W: M  Q+ w* m* u: a查看数据库最大可连接数的变量值:
0 ~, S8 }* @! h! Y7 d’ Q* b, N4 E+ K. t0 {, A
max_connections # T! [* }# X2 `  }3 C% e
8 L: u2 F' y5 e0 z# D" O
查看threads_connected
$ I" @8 J5 e! _; q5 o4 k. G& i4 @+ ~6 B0 S2 c" i
进入MySQL,用命令:
% }" q  i0 m  P: h
& h' {4 }: g( {$ O) zshow status查看当前活动的连接线程变量值: , V. T5 [% l9 r/ Z  f& S
( C: O0 C$ B; D3 v  k# q1 N) u
threads_connected( B7 B0 R9 ]5 `1 f
9 `  O! A- }5 d0 o! s+ P: ^
设置max_connections/ \9 S( p2 ~% E

2 ~! R( M: z+ `# Y$ Y设置办法是在my.cnf文件中,添加下面的最后红色的一行:
8 n% h  N; N1 Y; U6 H2 d, |& J” Q/ D- a8 m; Z
[mysqld] : ^. I8 i! U$ y
port=3306 & W& ?) ]1 f  X+ ~” U8 z
#socket=MySQL ” D3 q$ h* h5 F( W3 r
skip-locking 2 F$ t2 i7 [" G0 s8 I
set-variable = key_buffer=16K
5 L' w  z5 B$ x- J7 tset-variable = max_allowed_packet=1M
- U% s* d3 p( f6 ]2 vset-variable = thread_stack=64K % `3 H* Q: x% S/ \
set-variable = table_cache=4
‘ z9 r6 R/ l6 a6 W  c$ nset-variable = sort_buffer=64K : D0 j! c; v/ X5 ^. H  V8 ~
set-variable = net_buffer_length=2K
& T% `  ^. v9 l9 ~9 Nset-variable = max_connections=32000

my.ini(my.cnf)与mysql优化指南

StarSky 发表于 2011-4-8 分类 MYSQL, 未归档 | 发表评论

mysql优化了

所以先说说这个,其实这个,很复杂,对于不同的网站,其在线,访问量,帖子数量,网络情况,以及机器配置
都有关系,优化不是一次可以完成的,需要不断的观察和调试,以取得最佳效果
下面我引用 Asiwish和老高的两篇优化措施,给大家看看

这些设置,只要通过修改 win2000的c:/winnt/my.ini 或者 win2003的 c:/windows/my.ini 来实现

首先,我们打开这个文件,先将最底部的密码项改成其它的,这个对数据库本身没影响,主要是防止一些有心人获取这个密码,对我们不利

然后大家看看两个例子,其中一些设置,略懂的英文的,即明白是什么意思,
不懂得可以去查单词,我懒得一个个对照写说明了
一个是 千人在线,1G内存的

#This File was made using the WinMySQLAdmin 1.4 Tool
#2004-2-23 16:28:14

#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions

[mysqld]
basedir=D:/mysql
#bind-address=210.5.*.*
datadir=D:/mysql/data
#language=D:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
set-variable = max_connections=1500
skip-locking
#skip-networking
set-variable = key_buffer=384M
set-variable = max_allowed_packet=1M
set-variable = table_cache=512
set-variable = sort_buffer=2M
set-variable = record_buffer=2M
set-variable = thread_cache=8
# Try number of CPU’s*2 for thread_concurrency
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=64M
#set-variable = connect_timeout=5
#set-variable = wait_timeout=5
server-id = 1
[isamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M

[myisamchk]
set-variable = key_buffer=128M
set-variable = sort_buffer=128M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[WinMySQLadmin]
Server=D:/mysql/bin/mysqld-nt.exe
这个方案,整体够用了,但是在pconnect和最大连接数上,需要研究
max_connections没必要那么大,我个人认为几百就够,否则给服务器加大了不少负担,经常会当机
连接超时的设置也要根据实际情况调整,大家可以自由调整,然后观察效果如何。

下面是老高两年前的一些建议,大家参考一下

7、MYSQL 的优化(/etc/my.cnf)
1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;
2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数;
3)如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;
4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:

[mysqld]
set-variable = key_buffer=512M
set-variable = max_allowed_packet=4M
set-variable = table_cache=1024
set-variable = thread_cache=64
set-variable = join_buffer_size=32M
set-variable = sort_buffer=32M
set-variable = record_buffer=32M
set-variable = max_connections=512
set-variable = wait_timeout=120
set-variable = interactive_timeout=120
set-variable = max_connect_errors=30000
set-variable = long_query_time=1
set-variable = max_heap_table_size=256M
set-variable = tmp_table_size=128M
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=128M

你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)
Created_tmp_disk_tables
Created_tmp_tables
Created_tmp_files
Slow_queries
另外 mysql wait_timeout 那个值设置大了没用 做10左右就可了 (大C说得)

wait_timeout是使用长久连线时 空闲进程的控制 只要数据库在连接状态 他是不进行干预的 不管是否有查询或更新操作 把这个设置小一点 再使用pconnect就比较理想了 ;)

timeout的時間﹐我的經驗值是5-20﹐看你的SERVER的訪問量了~~ (梦飞说的)

访问量越大 这个值就应该越小 否则留出的空闲进程太多 会占用不必要的内存
在一个15分钟在线3000人的论坛上 设置为3比较合适 同时打开pconnect

另外,我再引用一篇文章

数据库连接过多的错误,可能的原因分析及解决办法

分析

系统不能连接数据库,关键要看两个数据:
1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。
2、数据库当前的连接线程数threads_connected。这是动态变化的。
查看max_connections、max_connections的办法见后。

如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。

因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。

但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。

这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。
该错误的简便的检查办法是,在刷新强坛页面时,不断监视threads_connected的变化。如果max_connections足够大,而threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。

从强坛出错的情况看,更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考

让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。

查看max_connections

进入MySQL,用命令:show variables
查看数据库最大可连接数的变量值:max_connections

查看threads_connected

进入MySQL,用命令:show status
查看当前活动的连接线程变量值:threads_connected

设置max_connections

设置办法是在my.cnf文件中,添加下面的最后红色的一行:

——————————————————————————–

[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=32000

——————————————————————————–

修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。

注意:
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;
3、添加了最大允许连接数,对系统消耗增加不大。
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。
可见,mysql的优化,是多样化,且根据环境不同,必须灵活调整的,大家不可生搬硬套,自己慢慢体会吧

我这次的教程,就写到这里,感谢大家对我的支持

如果有什么不足,欢迎提出来,我做补充

几个mysql常用命令

StarSky 发表于 2011-4-8 分类 MYSQL, 未归档 | 发表评论
在dos里面怎么进入mysql
进入mysql的目录
如:C:\e:\
e:\cd mysql\bin
  输入命令:mysql -uroot -p
要求密码的时候输入正确密码就OK
 
 
mysql数据库查看修改最大连接数
查看用
mysqladmin -uroot -proot variables | grep max_conn
或者
show variables like ‘%max_conn%’;

修改在
/etc/my.cnf文件
添加
max_connections=300