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
相关资料可查阅:
2015 年 7 月 16 日 下午 1:09 沙发
不错的文章,内容雷霆万钧.禁止此消息:nolinkok@163.com