用户工具

站点工具


doc:d:database_running

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
doc:d:database_running [2010/12/24 20:22]
gehaowu
doc:d:database_running [2011/04/10 13:55] (当前版本)
gehaowu
行 1: 行 1:
 +====== 在 FreeBSD 上运行MySQL数据库 ======
 +
 +===== 概要=====
 +
 +FreeBSD 7.0包含了大量针对多处理器系统的可伸缩性改进。本文的目的在于整理一系列适用于 FreeBSD 7.0 的运行 MySQL 及 PostgreSQL 的技巧。
 +
 +
 +===== 硬件准备 =====
 +
 +一般而言,增加可用的 CPU 数量,会显著地改善数据库的查询性能。除此之外,在规划硬件配置时,还应考虑一些其他问题:
 +
 +  * 将不同性质的读写操作分散到不同的物理磁盘上
 +成本方面的考虑,通常说来,对于顺序读写操作,使用ATA/​SATA硬盘完全能够胜任。这包括服务器日志、数据库事务日志等等。而对于随机读写操作,如数据库数据文件,则推荐使用SCSI或SAS硬盘。此外,将不同性质的读写操作分散到不同的物理盘上,有助于降低发生故障时将数据完全丢失的风险,并可以有效地避免将单块磁盘的I/​O性能耗竭,而导致系统响应时间变差。
 +  * 使用合适的数据块尺寸来初始化文件系统
 +在初始化文件系统时,数据块尺寸会决定文件系统一次性向磁盘发出读写请求时的数据量。请参考你的数据库的用户手册来了解合适的尺寸大小。对于 UFS 而言,较大的数据块还可以带来的一个“副作用”是,由于大数据块会使文件系统中的重要数据单元——柱面组的数量下降,对性能会有一定改善,并且会显著减少fsck所需的时间。
 +  * 使用更多的内存
 +
 +
 +===== 编译系统=====
 +
 +默认配置的 FreeBSD 7.0 采用传统的 4BSD 调度器,因此需要将其替换为 ULE 调度器:
 +
 +<​code>​
 +cd /​usr/​src/​sys/​`uname -p`/​conf  ​
 +
 +sed -e s,​4BSD,​ULE,​g GENERIC > DB-GENERIC
 +
 +cd /usr/src
 +
 +echo KERNCONF=DB-GENERIC >> /​etc/​make.conf ​
 +
 +make buildworld buildkernel && sudo make installkernel installworld
 +
 +</​code>​
 +
 +
 +
 +===== MySQL 的编译 =====
 +
 +我们推荐使用的 MySQL 版本是 5.0。推荐的 ports.conf 项目为:
 +<​code>​
 +databases/​mysql*-server:​ BUILD_OPTIMIZED=yes|WITH_XCHARSET=yes
 +</​code>​
 +
 +安装方法:
 +<​code>​
 +portinstall databases/​mysql50-server
 +</​code>​
 +
 +ports安装具体方法:
 +<​code>​
 +#cd /​usr/​ports/​databases/​mysql51-server ​    #​这里以安装mysql5.1为例
 +#make install clean
 +#rehash
 +#cp /​usr/​local/​share/​mysql/​my-large.cnf /​etc/​my.cnf ​           #​服务器内存1G,但是与apache在一起
 +</​code>​
 +
 +/​usr/​local/​share/​mysql下面有5个my-xxxx.cnf文件
 +
 +my-small.cnf ​              ​最小配置安装,内存<​=64M,数据数量最少
 +
 +my-large.cnf ​              ​内存=512M
 +
 +my-medium.cnf ​            ​32M<​内存<​64M,或者内存有128M,但是数据库与web服务器公用内存
 +
 +my-huge.cnf ​              ​1G<​内存<​2G,服务器主要运行mysql
 +
 +my-innodb-heavy-4G.cnf ​  ​最大配置安装,内存至少4G
 +
 +在 rc.conf.local 里面做如下设置
 +<code bash>
 +mysql_dbdir="/​path/​to/​MySQL_data"​
 +mysql_enable="​YES"​
 +</​code>​
 +其中 /​path/​to/​mysql_data 是 MySQL 数据库所在的位置。在第一次通过 MySQL 的 rc 脚本启动 MySQL 的时候,rc 脚本会负责正确的初始化 MySQL 的数据库。
 +===== MySQL 的配置 =====
 +设置root用户密码:
 +<​code>​
 +#/​usr/​local/​bin/​mysqladmin -u root password '​YourPassword'​
 +</​code>​
  
/data/vhosts/wiki-data/pages/doc/d/database_running.txt · 最后更改: 2011/04/10 13:55 由 gehaowu