配置MySQL服务器是一个丰富而复杂的工作。在本文中,我只能肤浅的说一下各种选项。可以使用的MySQL配置文件共有5个。

·/etc/my.cnf是默认的MySQL配置文件。应该对这个文件配置修改。它是为学习目的而设计的。

·my-small.cnf是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。

·my-medium.cnf是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。

·my-large.cnf是为专用于一个SQL数据库的计算机而设计的。由于它可以为该数据库使用多达512MB的内存,所以在这种类型的系统上将需要至少1GB的RAM,以便它能够同时处理操作系统与数据库应用程序。

·my-huge.cnf是为企业中的数据库而设计的。这样的数据库要求专用服务器和1GB或1GB以上的RAM。

这些选择高度依赖于内存的数量、计算机的运算速度、数据库的细节大小、访问数据库的用户数量以及在数据库中装入并访问数据的用户数量。随着数据库和用户的不断增加,数据库的性能可能会发生变化。

我将逐个的说明这些配置文件。如果用户决定使用my-*.cnf文件之一,将首先需要把这个文件复制到/etc/my.cnf文件上。

由于这些原因,用户应该仔细观察数据库系统的性能。如果发现问题,可能需要增加更多的RAM,或者把数据库迁移到一个含有附加资源(比如多个CPU)的系统上。

提示:数据库变得非常大。把一个SQL数据库目录配置在一个专用分区上可能更有道理。虽然一个不断增长的数据库可能会占满整个分区,但它至少不会吞掉RHEL运行所必需的磁盘空间。

/etc/my.cnf文件

默认是/etc/my.cnf文件。它包含6条命令,并且这6条命令被组织在3个配置段中。这些配置段与Samba配置文件中的配置段相似,并且含有功能组名称和相关的命令。本文将逐行的说明这个文件的默认版本。如果用户进行了任何修改,将需要确保MySQL启动脚本(即/etc/rc.d /init.d/mysqld)中的命令一致。

[mysqld]

在这个配置段之内,将会看到与MySQL守护进程相关的命令。

datadir=/var/lib/mysql

MySQL服务器把数据库存储在由datadir变量所定义的目录中。

Socket=/var/lib/mysql/mysql.sock

MySQL套接字把数据库程序局部的或通过网络连接到MySQL客户。

提示:MySQL被配置成使用InnoDB存储器引擎。如果用户在自己的系统上还没有一个InnoDB数据库,将需要给[mysqld]配置段添加skip-innodb语句。

[mysql.server]

在这个配置段之内,将会看到MySQL服务器守护进程有关的命令。这个配置段的较早期版本被命名为[mysql_server]。如果使用 MySQL4.X或MySQL4.X以上版本,将必须把这个配置段标题改成[mysql_server]。当启动MySQL服务时,它使用这个配置段中的选项。

user=mysql

与MySQL服务相关联的标准用户名是mysql。它应该是/etc/passwd文件的一部分;如果在这个文件中没有发现它,用户可能还没有安装Red Hat Enterprise Linux mysql-server RPM程序包。

basedir=/var/lib

这表示MySQL数据库的顶级目录。它充当MySQL系统上的一个根目录;这个数据库中的其它目录都是相对于这个目录。

[safe_mysqld]

这个配置段包含MySQL启动脚本所引用的命令。如果使用MySQL4.X或4.X以上版本,必须把这个配置段改成[mysqld_safe]。

err-log=/var/log/mysqld.log

这是MySQL所关联的错误被发送到的这个文件。如果使用MySQL4.X或4.X以上版本,必须使用log-error指令替换这条命令。

pid-file=/var/run/mysqld/mysqld.pid

最后,pid-file指令定义MySQL服务器在运作期间的进程标识符(PID)。如果MySQL服务器当前没有运行,这个文件应该不存在。

提示:用户可以配置与用户特定相关的MySQL配置文件;为此,只需给指定用户主目录中的.my.cnf隐含文件添加所选的配置命令即可。

my-samll-cnf

在本文中,将说明my-small-cnf配置文本中的所有命令。当回顾其它MySQL样本配置文件时,将参考本文所解释的各条命令和指令的含义。先从下面这个配置段开始分析该文件中的有效命令和指令:

[client]

这个配置把指令传递给与MySQL服务器相关的客户。

port=3306

MySQL所相关的标准TCP/IP端口是3306。如果需要修改这个端口号(可以增强安全),必须确保用于MySQL客户与服务器的所有相应配置文件中均修改这个号。

socket=/var/lib/mysql/mysql.sock

正像默认的/etc/my.cnf文件中所定义的那样,这是控制MySQL客户与服务器间通信的标准套接字文件。

[mysqld]

当启动MySQL服务器时,它由[mysqld]配置段中所定义的命令来控制。

port=3306

socket=/var/lib/mysql/mysql.sock

当然,与同一个MySQL数据库相关的客户与服务器需要使用相同的TCP/IP端口和套接字。

skip-locking

多个客户可能会访问同一个数据库,因此这防止外部客户锁定MySQL服务器。这个skip-locking命令是MySQL4.X或4.X以上版本中的skip-external-locking命令。

一般来说,如果正在使用MySQL4.X或4.X上以版本,这个set-variable指令没有必要带有这个列表中的这些命令。

set-variable=key_buffer=16k

这个缓冲区确实很小;如果一个数据库在一个文本文件中包含不止几百行数据,它将会超载这个缓冲区的容量。这个数据库可能不会超载一个文本文件地址簿的容量。如果这不只是一个供个人使用的数据库,这个限额很快就会被达到。假使那样的话,可能需要考虑与其它配置文件之一相关的那些限额。

set-variable=max_allowed_packet=1M

当然,与一个数据库相关的信息会增加到超出实际数据。在默认的情况下,如果该信息在一个服务器上超过1MB以上,MySQL将会产生一条错误信息。

set-variable=thread_stack=64k

这条指令限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用。

set-variable=table_cache=4

用户可以限定一个数据库中打开表的数量;越小的限额(默认值是64)适合越小规模的数据库。

set-variable=sort_buffer=64k

在处理一个数据库时,用户可能需要内存中附加的缓冲区空间。

set-variable=net_buffer_length=2k

正如net_buffer_length指令所定义的,MySQL服务器还给传入的请求保留了空间。

server-id=1

一般来说,如果有一个MySQL主服务器,应该把它的server-id设置成1;应该把MySQL从属服务器的server-id设置成2;

[mysqldump]

用户可以在不同类型的SQL数据库之间传输数据,这由[mysqldump]配置段中的命令来控制。

quick

quick选项支持较大数据库的转储。

set-variable=max_allowed_packet=16M

当然,用来传输数据库表到其它数据库的max_allowed_packet大于客户与服务器之间的简单通信所使用的信息包。

[mysql]

no-auto-rehash

这个配置段设置启动MySQL服务的条件;在这种情况下,no-auto-rehash确保这个服务启动得比较快。

[isamchk]

[myisamchk]

像SQL这样的关系数据库用所谓的Indexed Sequential Access Method(索引顺序存取方法,简称ISAM)来处理。这两个配置段中的命令是相同的;这些命令与检查并修复数据库表的同名命令有关。

set-variable=key_buffer=8M

set-variable=sort_buffer=8M

在前面谈及MySQL服务器时,用户己经见过这些变量。它们在这里都比较大,以便支持数据库的较快速检查与修复。

[mysqlhotcopy]

interactive-timeout

正如[mysqlhotcopy]配置段所指定的,在一个数据库复制操作期间,连接会挂起。在默认情况下,interactive-timeout变量把一个数据传输的最大时间量设置为28800秒(8个小时)。

my-medium.cnf文件

与中等数据库相关的MySQL配置文件含有和my-small-cnf配置文件中一样的有效配置段。在[mysqld]配置段中,下面这些命令支持较大规模的服务器数据库:

set-variable=key_buffer=16M

set-variable=table_cache=64

set-variable=sort_buffer=512K

set-variable=net_buffer_length=8K

log-bin

一般来说,这个配置段中的命令支持服务器上的较大高速缓存与缓冲区长度。应该看到两条新命令。

set-variable=myisam_sort_buffer_size=8M

log-bin

myisam_sort_buffer_size命令允许MySQL索引数据库,第二条命令支持二进制日志记录方法。

[isamchk]

[myisamchk]

当然,这两个配置段中的缓冲区比用于数据库传输的缓冲区大,这个文件包含下面这些命令;它们发送消息到服务器和接收来自服务器的消息。

set-variable=read_buffer=2M

set-variable=write_buffer=2M

my-large.cnf文件

与较大型数据库相关的MySQL配置文件含有和my-samll-cnf配置文件中一样的有效配置段。在本文中,将比较my-large-cnf与my-medium-cnf样本文件中的各条命令。在[mysqld]配置段中,下面这些命令支持较大型的服务器数据库:

set-variable=key_buffer=256M

set-variable=table_cache=256

set-variable=sort_buffer=1M

set-variable=myisam_sort_buffer_size=64M

set-variable=net_buffer_length=8K

这个配置段中有3条附加的命令。record_buffer命令保存对一个数据库中不同表的扫描结果。thread_cache命令对多请求有用;空闲线程被高速缓存起来,进而允许新的搜索操作采用己有的线程。只要这防止搜索操作启动新的服务器进程,这就能减轻系统上的负荷。

set-variable=record_buffer=1M

set-variable=thread_cache=8

set-variable=thread_concurrency=8

thread_concurrency变量限定同时运行的线程数量。my-large.cnf样本文件建议用户应该把这个数量限定于本计算机上CPU数量的两倍;这个特定设置相当于4个CPU。

my-huge.cnf文件

my-huge.cnf文件含有和my-large.cnf配置文件中一样的命令。当然,分配给大多数指令的值比较大并适合较大型的数据库。

分类: 电脑技巧 标签:, 日期:2010-12-18

安装Apache Mysql PHP
安装之前,保证你的版本是最新的。使用命令:(“#”表示你应该以root的身份来运行)。

 # aptitude update && aptitude upgrade
mysql
使用下面的命令来安装mysql:

 # aptitude install mysql-server mysql-client
安装完mysql server后,你应该修改下root的密码。*此步骤对debian Lenny版本无效,因为在安装的时候你将会被要求输入mysql root用户的密码。

# /usr/bin/mysqladmin -u root password 'enter-your-good-new-password-here'
为了安全起见,你应该不使用root账户来运行数据库,而是新建一个账户来从一个PHP脚本来连接你的mysql数据库。

apache2
 # aptitude install apache2 apache2-doc
PHP
# aptitude install php5 php5-mysql libapache2-mod-php5
配置Apache Mysql PHP
Apache2 配置文件: /etc/apache2/apache2.conf

当需要的时候,你可以编辑此配置文件。

测试PHP
为了测试php接口, 编辑文件 /var/www/apache2-default/test.php:

# nano /var/www/apache2-default/test.php
插入下面代码

<?php phpinfo(); ?>
最后,使用浏览器访问 http://SERVERIP/apache2-default/test.php 来检测下.

分类: 电脑技巧 标签:, , , 日期:2010-11-16

在本次的JavaOne 2010上,Oracle已经承诺继续对MySQL社区版的大力支持,但你也许会对Oracle瞄准的目标架构和客户感兴趣。
  Edward Screven,Oracle的首席架师,强调Oracle不但会继续对MYSQL企业版作出贡献,也会继续大力支持在GPL协议下社区版本的发展。
  Oracle最近宣布了MYSQL 5.5的一个测试版本,并表示在性能上相对于WINDOWS方面,MYSQL运行在LINUX上的性能会更好些。最终的版本会在年底发布。
  在会上,Screven说:“有不少人认为我们在收购Sun之后,会放弃MySQL,但恰好相反,我们会更努力让MySql变得更好”。
  “我们正在增强mysql社区版的各项功能,我们不仅会将企业版变得更好,也会使社区版变得一样强大”。
  而在Oracle发出这样的表态前,对于OpenSolaris项目Oracle采取的是放弃的态度,这在众人眼中,可以感觉到Oracle是对开源项目是没多大兴趣的,因为认为不能为公司赚钱。
  在发行了商业版本的Solaris后,Oracle现在只提供对OpenSolaris更新的代码的支持了。
  尽管Oracle将会继续维护MySql,但在数据库架构方面现在已经开始按Oracle的路线去走了。从现在开始,MySQL的5.5版本默认的数据库引擎是InnoDB了,不再是myisam,而InnoDB是Oracle在2005年收购回来的技术。
  InnoDB是一个相当好的数据库存储引擎,它支持完全的事务特性。正如产品开发副总裁Thomas Ulin说的,“InnoDB对数据库来说是个很好的选择”。
  Oracle的InnoDB和Mysql的团队一直保持合作,根据SysBench的benchmark记录,他们声称在最新版本的Mysql 5.5中,在备份恢复方面性能是之前的10倍,相比运行在Linux上的Mysql 5.1,在读写方面的性能是超出其360%;而相比运行在windows 2008上的mysql 5.0,则是超出1500%之多。

分类: 网络感想 标签: 日期:2010-09-30

两个方面来说,理论值和实际应用值。

如果说只是为了存储的话 那么这个理论值是可以参考的
在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度)。当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入的数据行超过8092字节时将导致Transact-SQL语句失败,并产生错误信息。SQL Server对每个表中行的数量没有直接限制,但它受数据库存储空间的限制。每个数据库的最大空间1048516TB,所以一个表可用的最大空间为1048516TB减去数据库类系统表和其它数据库对象所占用的空间。

如果说要考虑到信息的读取和查询的话,个人建议20-30W 就已经需要做特殊处理了。

分类: 网页设计 标签: 日期:2010-09-29

此次更新将是MySQL5.0.91的最后一次更新,建议大家立即更新MySQL 5.0.91。这也意味着MySQL 5.0系列不再开发。
  详细更新如下:

  安全更新:解决了服务器验证COM_FIELD_LIST失败的问题。这问题有可能被利用来绕过所有表的特权检查。

  在MySQL 5.0及以上的版本上,这样的BUG将使所有用户能通过SELECT权限验证来获得所有其他数据库中任何表中的字段定义。以及潜在的其他MySQL服务器文件系统的访问权限。

分类: 网页设计 标签: 日期:2010-06-22

当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。

utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß’等于‘ss’。

utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的校对规则相比,比较正确性较差)。

例如,使用utf8_general_ci和utf8_unicode_ci两种 校对规则下面的比较相等:

Ä = A

Ö = O

Ü = U

两种校对规则之间的区别是,对于utf8_general_ci下面的等式成立:

ß = s

但是,对于utf8_unicode_ci下面等式成立:

ß = ss

对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集 校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。

utf8_general_ci也适用与德语和法语,除了‘ß’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。

分类: 网页设计 标签:, , 日期:2010-02-27

MySQL联合创始人Monty Widenius提供了MySQL的分支MariaDB候选版本。据报道MariaDB 5.1完全兼容MySQL 5.1,这个版本早在2008年11月就发布了,增加了很多新的功能和若干个新的补丁程序。开发者称这个候选版本非常稳定,将在不久的将来发布。

  MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX 存储引擎。

  这个项目的更多的代码都改编于 MySQL 6.0,例如  “pool of threads”功能提供解决多数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译Linux版本,还包括源代码包。MariaDB基于GPL 2.0发布。

分类: 网页设计 标签:, 日期:2010-01-26

今天收到一封邮件,是mysql的拯救邮件,上次参加了他们的签名,但是看邮件似乎是效果不大,一再呼吁我们再次行动起来。其实他们可能不太了解中国的情况,你们的新闻在新浪和cnbeta我都看到过,其实并不是宣传的不到位,而是我们对开源的保护意识还没有达到这个层次,如果有时间可以看看我们的最流行的几款开源程序的License没有一款是真的开源,全部附带着商业的信息,不过我们应该意识到开源是很好东西,我们要培养这样的意识去维护它。其实我看到很多我们的开源意识的开发者已经放弃mysql并且开始去使用PostgresSQL,所以我们真正使用过mysql的人员都没有要去保护它的意思,这个是我要发这篇文章的目的,我们有一句老话叫“人不能忘本”假如有一天PostgresSQL也被收购了呢,商业化走向趋势的时候你还选择什么呢?

以下是邮件原文:

亲爱的拯救MySQL的中国签名支持者,

(更多...)

分类: 网络感想 标签: 日期:2010-01-20

如甲骨文把MySQL按照太阳微电子的一部分收购,将由数据库客户买单。
2009年4月,甲骨文宣布 其同意收购太阳微电子。由于太阳微电子已于上一年收购了MySQL,这就意味着闭源数据库市场的领先者,甲骨文,将拥有最受欢迎的开源数据库,MySQL。

如果甲骨文就此收购MySQL,它会像金钱能够买断一个开源项目一样对MySQL进行控制。事实上,对于大多数开源项目(例如Linux或Apache),一个竞争者甚至无法通过任何可与之媲美的方式购得这种影响的十分之一。但MySQL的成功一直都依赖于其背后开发、销售和推广它的公司。公司(最开始MySQL AB,然后太阳微电子)始终拥有重要的知识产权(IPRs)、最著名的商标、版权及(目前为止仅仅用于防御性目的)专利。知识产权产生收入,并将这些收入的大部分重新投入到开发中,因此随着时间推移,不仅规模越来越大,同时也发展得越来越好。

如果这些知识产权落入MySQL的主要竞争对手手中,那么MySQL将即刻不再是甲骨文的商业高价产品的替代品。到目前为止,客户可以在新项目中选择使用MySQL,而不选择甲骨文产品。某些大型公司甚至为现有的软件解决方案从甲骨文迁移(转换)到MySQL。而且,每个人都可通过使用MySQL对甲骨文销售人员施加实在的威胁,以获得大幅折扣。如甲骨文拥有MySQL,那么做这种尝试的客户只能得到被嘲笑的结果。对于甲骨文来说,铲除这一问题将为其轻松产生每年不下10亿美元的收益。

http://www.helpmysql.org/cn/theissue/customerspaythebill

分类: 网络感想 标签: 日期:2010-01-06

  wordpress数据库备份虽然是有插件的,但是对于数据库过大的wordpress来说,还一直没有好的解决办法,我的博客应该还不算危机的,一些其他博友的恐怕已经有几十兆的数据库了,这样压缩了以后恐怕也有几兆数据,在以后呢?恐怕很危险了,因为自动备份插件发送邮箱,大附件是行不通的这个是没有办法的,所以数据库大了,只能另寻方法,另外对于用虚拟主机的朋友来说只能用phpmyadmin这样的网页数据库管理软件来恢复数据,但是这样也同样存在一个问题,页面提交数据是有限的,一般都是提交不了大数据的,所以数据库大了数据的恢复也是一个大问题。

本着解决这个问题,我看了下国内主流程序都采用分卷备份的方法,比如discuz、dedecms等等几乎无一不是这样,那么wordpress似乎并没有分卷备份的功能,插件是否用我也不太清楚,但是是可以再其他程序里面提取一份备份功能的。这样就能分卷备份wordpress数据了,那么想好思路决定用dedecms提取,这个是可以自动检测到表的默认备份系统自带的数据表,但是提示额外的数据表,一样可以备份。另外还有一个就是专门针对mysql数据库备份开发的程序,帝国备份,这个是我刚测试使用的,效果还不错,能够解决mysql的问题,自然wordpress也解决了,所以就推荐使用类似备份程序。如果wordpress有类似的备份插件也可以介绍给我。

分类: 网页设计 标签:, 日期:2009-12-28