A-A+

MySQL 5.5.30 编译安装、配置优化

2013年10月18日 数据库 评论 1 条 阅读 15,439 views 次

MySQL 5.5.30版本编译安装

PDF文档下载地址:http://www.linuxyw.com/download/mysql5.5.pdf

 

版本信息

 

日期

版本

修改人

备注

2013-10-18

V1.0

戴儒锋

创建文档,初稿,不完善,仅作测试使用
 无
 无

 

一稿作者信息:

网名:江江    交流邮箱:63780668@qq.com    个人博客:http://www.linuxyw.com

 

 

环境:

Cent6.2 64位系统,最小化安装(只安装开发包)

 

MySQL下载地址:

http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/

 

 

安装依赖包

yum install gcc gcc-c++ cmake ncurses-devel bison

 

安装TCMalloc

简单介绍 TCMalloc 的全称是Rhread-Caching Malloc , 是谷歌开发的开源工具google-perftools 中的一个程序。与标准的glibc 库的Malloca,TCMalloc 库在内存分配效率和速度上要高很多,可以提高服务器在高并发情况下的性能,降低系统负载。要安装TCMalloc 库需要libunwind(32 位不需要)和google-perftools 两个包。64 位系统需要安装libunwind 库为64 位CPU 和操作系统的程序提供基本函数调用练和函数调用寄存器功能

安装libunwind库

下载地址:http://ftp.twaren.net/Unix/NonGNU//libunwind/

http://ftp.twaren.net/Unix/NonGNU//libunwind/libunwind-0.99.tar.gz

 

安装:

tar xf libunwind-0.99.tar.gz

cd libunwind-0.99

CFLAGS=-fpic ./configure

make CFLAGS=-fpic

make CFLAGS=-fPIC install

 

为什么不选择最新版本呢?google perftools 的INSTALL

文件中给了说明。版本低于0.99-beta 的libunwind 与preftools 一起工作可能不正常,但

是高于0.99-beta 的版本中可能包含一些与perftools 不兼容的代码(因为libunwind 会调

用malloc,可能会导致死锁)。libunwind 在X86_64 平台上和perftools 有不少问题,不过

不会影响核心的tcmalloc 库,但是会影响perftools 中的工具,例如cpu-profiler,

heap-checker,heap-profiler。

 

安装google-perftools

下载地址:https://code.google.com/p/gperftools/?redir=1

 

安装:

安装前要更新当前时间,如果时间不对,可能会安装出错

tar xf gperftools-2.1.tar.gz

cd gperftools-2.1

./configure

make

make install

echo "/usr/local/lib" >> /etc/ld.so.conf.d/usr_local_lib.conf

ldconfig

 

 

安装cmake(如果yum装了cmake,以下编译安装可不执行)

http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz

tar xvf cmake-2.8.12.tar.gz

cd cmake-2.8.12/

./bootstrap

make &&  make install

 

mysql 5.5.30安装

添加用户:

useradd -s /sbin/nologin mysql

 

建立所需目录
mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql

 

wget  http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/mysql-5.5.30.tar.gz

tar xvf mysql-5.5.30.tar.gz

cd mysql-5.5.30/

cmake  -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql/data  -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306

make && make install

 

cp /etc/my.cnf /etc/my.cnf.bak

\cp -f support-files/my-innodb-heavy-4G.cnf /etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld

chmod a+x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysql on

ln -sf /data/mysql/bin/* /usr/bin/

这里mysql安装参数,请查看文章下面的参数说明

 

初始化mysql

/data/mysql/scripts/mysql_install_db --basedir=/data/mysql --datadir=/data/mysql/data  --user=mysql

--basedir:该参数指定了安装 MySQL 的安装路径,填写全路径可以解决相对路径所造成的问题。

--datadir:该参数指定了 MySQL 的数据库文件放在什么路径下。数据库文件即我们常说的 MySQL data 文件

 

启动数据库:

service mysqld start

 

给MYSQL添加root密码

mysqladmin -u root password 'www.linuxyw.com'

www.linuxyw.com 是root的密码,这个你可以设置自己的密码

 

整合mysql和tcmalloc

 

vim  /data/mysql/bin/mysqld_safe

修改mysql服务的启动脚本mysqld_safe,在"# executing mysqld_safe"行后添加(大概在第12行):

 

export LD_PRELOAD="/usr/local/lib/libtcmalloc.so"

 

重启mysql

service mysqld restart

 

验证运行状态:

lsof -n |grep tcmalloc

 

你的CPU是几核的,就会显示多少个线程,每个线程文件后面的数字值就是启动的mysqld的 pid值。如:

[root@drfdai-17 bin]# lsof -n |grep tcmalloc

mysqld      905       mysql  mem       REG                8,3   2174112     166837 /usr/local/lib/libtcmalloc.so.4.1.2

 

 

 

 

 

 

MySQL 5.5 编译参数说明

 

从mysql5.5起,mysql源码安装开始使用cmake。下面是 mysql 5.5 与以前的参数对照:

configure               Command CMake Command
./configure             cmake .
./configure –help      cmake . -LH or ccmake .

参数说明:

红色为推荐参数(当然也要根据你的需求来制定)

绿色为可用参数
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DMYSQL_DATADIR=/usr/local/mysql/data //数据库存放目录
-DWITH_MYISAM_STORAGE_ENGINE=1 //安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 //安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 //安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 //安装blackhole存储引擎
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
-DDEFAULT_CHARSET=utf8   //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all   //安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 //MySQL监听端口
-DMYSQL_USER=mysql //MySQL用户名
其他参数:
-DWITH-EMBEDDED_SERVER=1 //编译成embedded MySQL library (libmysqld.a)
-DSYSCONFDIR=/etc //MySQL配辑文件
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock //Unix socket 文件路径
-DWITH_READLINE=1 //快捷键功能
-DWITH_SSL=yes //SSL
-DWITH_MEMORY_STORAGE_ENGINE=1 //安装memory存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 //安装frderated存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 //安装数据库分区
-DINSTALL_PLUGINDIR=/usr/local/mysql/plugin //插件文件及配置路径

BUILD_CONFIG   采用官方发行版一致的编译参数
CMAKE_BUILD_TYPE 指定产品编译说明信息   RelWithDebInf
CMAKE_INSTALL_PREFIX 指定MySQL安装路径  /usr/local/mysql
CPACK_MONOLITHIC_INSTALL是否建立单个安装包文件 OFF
DEFAULT_CHARSET  MYSQL 默认字符集  latin1
DEFAULT_COLLATION MYSQL 默认排序字符集  latin1_swedish_ci
ENABLE_DEBUG_SYNC 是否启用同步调试功能  ON
ENABLE_DOWNLOADS 是否下载可选文件  OFF
ENABLE_DTRACE  是否包含 DTrace 支持
ENABLE_GCOV  是否包含 Gcov 支持     5.5.14
ENABLED_LOCAL_INFILE 是否启用本地 LOAD DATA INFILE OFF
ENABLED_PROFILING 是否启用代码查询分析  ON
INSTALL_BINDIR  MySQL 主执行文件目录  PREFIX/bin
INSTALL_DOCDIR  文档安装路径   PREFIX/docs
INSTALL_DOCREADMEDIR 自述文件目录   PREFIX
INSTALL_INCLUDEDIR 头文件目录   PREFIX/include
INSTALL_INFODIR  关于信息文件目录  PREFIX/docs
INSTALL_LAYOUT  选择预定义的安装  STANDALONE
INSTALL_LIBDIR  库文件目录   PREFIX/lib
INSTALL_MANDIR  手册页面目录   PREFIX/man
INSTALL_MYSQLSHAREDIR 共享数据目录   PREFIX/share
INSTALL_MYSQLTESTDIR mysql-test 目录   PREFIX/mysql-test
INSTALL_PLUGINDIR 插件目录   PREFIX/lib/plugin
INSTALL_SBINDIR  服务器超级用户执行文件目录 PREFIX/bin
INSTALL_SCRIPTDIR 脚本目录   PREFIX/scripts
INSTALL_SHAREDIR aclocal/mysql.m4 安装目录 PREFIX/share
INSTALL_SQLBENCHDIR sql-bench 性能测试工具目录 PREFIX
INSTALL_SUPPORTFILESDIR 扩展支持文件目录  PREFIX/support-files
MYSQL_DATADIR  数据库存放目录
MYSQL_MAINTAINER_MODE 是否启用MySQL的维护环境  OFF
MYSQL_TCP_PORT  TCP/IP 端口号   3306
MYSQL_UNIX_ADDR  Unix Socket 套接字文件  /tmp/mysql.sock
SYSCONFDIR  选项配置文件目录
WITH_COMMENT  编译环境发表评论
WITH_DEBUG  是否包括调试支持  OFF
WITH_EMBEDDED_SERVER 是否要建立嵌入式服务器  OFF
WITH_xxx_STORAGE_ENGINE 静态编译xxx 存储引擎到服务器
WITH_EXTRA_CHARSETS 额外的字符集,包括  all
WITH_LIBWRAP  是否包括支持libwrap(TCP包装) OFF
WITH_READLINE  使用捆绑的readline  OFF
WITH_SSL  是否支持SSL  no
WITH_ZLIB  是否支持Zlib  system
WITHOUT_xxx_

 

 

 

 

MySQL 5.5.30服务器端优化

 

/etc/my.cnf配置文件

 

[client]

port            = 3306

socket          = /tmp/mysql.sock

 

 

[mysqld]

####  mise  ####

user = mysql

port            = 3306

socket          = /tmp/mysql.sock

basedir = /data/mysql

datadir = /data/mysql/data

pid-file=/data/mysql/mysqld.pid

#default-storage-engine = MYISAM

ft_min_word_len = 4

max_allowed_packet = 32M

character-set-server = utf8

skip-name-resolve

 

 

####  performance  ####

open_files_limit = 10240

max_connections = 800

max_connect_errors = 6000

thread_stack = 192K

transaction_isolation = REPEATABLE-READ

tmp_table_size = 256M

max_heap_table_size = 256M

slow_query_log

long_query_time = 1

log_slow_queries=/data/mysql/slow-log.log

 

 

#### log ####

log-error=/data/mysql/mysqld.err

back_log = 500

log-bin=mysql-bin

max_binlog_cache_size = 8M

max_binlog_size = 512M

binlog_format=mixed

expire_logs_days = 7

 

 

####  buffer && cache  ####

read_buffer_size = 10M

read_rnd_buffer_size = 32M

sort_buffer_size = 2M

join_buffer_size = 2M

thread_cache_size = 300

thread_concurrency = 8

query_cache_size = 64M

query_cache_limit = 4M

binlog_cache_size = 4M

table_open_cache = 2048

key_buffer_size = 32M

bulk_insert_buffer_size = 64M

 

 

####  myisam  ####

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 10G

myisam_repair_threads = 1

myisam_recover

 

 

####  innodb  ####

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 4G

innodb_data_file_path = ibdata1:1024M:autoextend

innodb_write_io_threads = 8

innodb_read_io_threads = 8

innodb_thread_concurrency = 16

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 16M

innodb_log_file_size = 150M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 60

innodb_flush_method = O_DIRECT

 

####  replication  ####

replicate-ignore-db = mysql

replicate-ignore-db = test

replicate-ignore-db = information_schema

server-id = 1

 

[mysqldump]

quick

max_allowed_packet = 16M

 

[mysql]

no-auto-rehash

 

[myisamchk]

key_buffer_size = 32M

sort_buffer_size = 32M

read_buffer = 8M

write_buffer = 8M

 

[mysqlhotcopy]

interactive-timeout

 

[mysqld_safe]

open-files-limit = 8196

 

相关资料可查阅:

 

关键词:

1 条留言  访客:1 条  博主:0 条

  1. avatar 不锈钢网

    不错的文章,内容雷霆万钧.禁止此消息:nolinkok@163.com

给我留言

Copyright © linux系统运维 保留所有权利.   Theme  Ality 粤ICP备13023035号-1

用户登录

分享到: