- 论坛徽章:
- 0
|
mysql完全定制.
一般是用手动编译,但是看了mysql文档后觉得手动编译即麻烦又浪费时间,基本上我都是参考官方的编译参数
手动编译参数:
- CHOST="i686-pc-linux-gnu" \
- CFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer" \
- CXX=gcc \
- CXXFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" \
- ./configure \
- --prefix=/usr/local/mysql4.0.16 \
- --enable-assembler \
- --without-debug \
- --with-extra-charsets=complex \
- --with-mysqld-ldflags=-all-static
复制代码
官方编译参数:http://www.mysql.com/doc/en/MySQL_binaries.html
- CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors" \
- ./configure --prefix=/usr/local/mysql \
- --with-extra-charsets=complex \
- --enable-thread-safe-client \
- --enable-local-infile \
- --enable-assembler \
- --disable-shared \
- --with-client-ldflags=-all-static \
- --with-mysqld-ldflags=-all-static
复制代码
自己编译的参数和mysql官方的差不多.而且在大量的商业生产应用上,用bin版本不仅方便而且省时间.
ok.我们先来看看我们解压bin版本后应该如何定制我们的mysql
我比较习惯把mysql按版本号安装到/usr/local下,
所以比较新的mysql4.0.16的解压目录就是
/usr/local/mysql4.0.16
因为我的内存比较大2G,而且多个cpu所以,我用my-large.cnf,你们可以根据自己的情况选择不同的配置文件.
在mysql的support-files中.
我们来看看配置文件都要加什么定制的东西.
- [mysqld]
- log-error
- #启用错误日值,如果没有定义路径,默认在mysql的db目录中.
- max_connections = 1500
- #最大连接数,根据官方文档,bin版本完全可以开到1500以上
- max_connect_errors = 200
- #最大连接错误数.
- skip-bdb
- #取消bdb的支持(省一些内存,如果你不用bdb的话)
- skip-innodb
- #取消innodb支持(省一些内存,如果你不用bdb的话)
- user = mysql
- #定义mysqld的启动用户
- basedir = /usr/local/mysql4.0.16
- #定义mysql的目录位置/usr/local/mysql4.0.16
- pid-file = /usr/local/mysql4.0.16/data/mysql.pid
- #定义pid文件
- datadir = /wwwroot/mysql_data
- #定义数据库文件的位置.
复制代码
一般我都习惯把数据文件同mysql的目录分开.这样比较利于mysql的升级和管理.
bin版本的启动..我们需要自己写一个脚本来启动bin版本.
mysql提供了一个mysqld_safe的脚本来启动mysql,但是在bin版本中不怎么好用.因为默认编译的路径是/usr/local/mysql
所以当你把mysql解压到其他地方的时候就不能启动mysql的.实际上mysqld_safe所做的只是带参数启动mysql而已,我们可以绕过
直接写启动脚本.
实际上所有mysqld的参数都可以在my.cnf的[mysqld]字段添加就像上面的例子一样.
具体参数在:http://www.mysql.com/doc/en/Command-line_options.html
同时一些变量也一样,(max_connections 等)具体在:http://www.mysql.com/doc/en/SHOW_VARIABLES.html
在把变量在[msyqld]字段的时候注意一下.
mysql4.x
max_connections = 1000
max_connect_errors = 500
mysql3.x版本用(4.0也能认识)
set-variable = max_connections = 1000
set-variable = max_connect_errors = 500
最后来看看启动脚本.
- #!/bin/sh
- mysqldir=/usr/local/mysql4.0.16
- #设置mysql的具体目录位置
- start() {
- if [ ! -f ${mysqldir}/data/mysql.pid ]; then
- echo "start mysql4.0.16"
- /usr/local/mysql4.0.16/bin/mysqld & 1>;/dev/null
- else
- echo "mysql4.0.16 is already run"
- fi
- }
- stop() {
- if [ -f ${mysqldir}/data/mysql.pid ]; then
- echo "stop mysql4.0.16"
- kill `cat ${mysqldir}/data/mysql.pid`
- sleep 5
- echo "done"
- else
- echo "mysql4.0.16 is no run"
- fi
- }
- case $1 in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
- start
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
- ;;
- esac
复制代码
把这个脚本复制为/etc/rc.d/rc3.d/S90mysqld
就能让mysql自动启动了... |
|