MySQL 从5.5 后改用cmake 来编译,所以需要先安装cmake,还需要安装rpmbuild
1.安装cmake,下载:http://www.cmake.org/cmake/resources/software.html
# tar xvf cmake-2.8.10.2.tar.gz
# cd cmake-2.8.10.2
# ./configure
# make
# make install
2.安装rpmbuild
# yum install rpm-build
3.编译安装mysql
{mysql安装目录} ——替换为你自己的mysql 安装目录
{mysql数据目录} ——替换为你自己的mysql 数据目录
{mysql数据目录}/data ——为你的mysq数据库表文件存放地址
下载:http://cdn.mysql.com/Downloads/MySQL-5.5/MySQL-5.5.30-1.linux2.6.src.rpm
执行如下命令:
# rpm -ivh MySQL-5.5.30-1.linux2.6.src.rpm
# cd /usr/src/redhat/SOURCES
# tar xvf mysql-5.5.30.tar.gz
# cd mysql-5.5.30
# cmake . \
-DCMAKE_INSTALL_PREFIX={mysql安装目录} \
-DMYSQL_DATADIR={默认数据库文件目录} \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_EMBEDDED_SERVER=0 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=yes
# make
# make install
# groupadd mysql
# useradd -g mysql mysql
# chmod +w {mysql安装目录}
# chown -R mysql:mysql {mysql安装目录}
6. 初始化
# {mysql安装目录}/scripts/mysql_install_db --basedir={mysql安装目录} --datadir={mysql数据目录}/data --user=mysql
7. 配置文件
在{mysql数据目录} 下新建my.cnf 配置文件
# vi my.cnf
[client]
character-set-server = utf8
port = 3306
socket = /tmp/mysql.sock
[mysqld]
character-set-server = utf8
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = {mysql安装目录}
datadir = {mysql数据目录}/data/
log-error = {mysql数据目录}/mysql_error.log
pid-file = {mysql数据目录}/mysql.pid
open_files_limit = 10240
back_log = 600
max_connections = 5000
max_connect_errors = 6000
table_cache = 614
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 300
#thread_concurrency = 8
query_cache_size = 512M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 246M
max_heap_table_size = 246M
long_query_time = 3
log-slave-updates
log-bin = {mysql数据目录}/binlog/binlog
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 1G
relay-log-index = {mysql数据目录}/relaylog/relaylog
relay-log-info-file = {mysql数据目录}/relaylog/relaylog
relay-log = {mysql数据目录}/relaylog/relaylog
expire_logs_days = 30
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
interactive_timeout = 120
wait_timeout = 120
skip-name-resolve
#master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
#master-host = 192.168.1.2
#master-user = username
#master-password = password
#master-port = 3306
server-id = 1
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 512M
innodb_data_file_path = ibdata1:256M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
#log-slow-queries = {mysql数据目录}/slow.log
#long_query_time = 10
[mysqldump]
quick
max_allowed_packet = 32M
8. 启动
在{mysql数据目录下} 编写启动脚本mysql
# vi mysql
#!/bin/sh
mysql_port=3306
mysql_username="root"
mysql_password=""
function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh {mysql安装目录}/bin/mysqld_safe --defaults-file={mysql数据目录}/my.cnf 2>&1 > /dev/null &
}
function_stop_mysql()
{
printf "Stoping MySQL...\n"
{mysql安装目录}/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown
}
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 5
function_start_mysql
}
function_kill_mysql()
{
kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
}
if [ "$1" = "start" ]; then
function_start_mysql
elif [ "$1" = "stop" ]; then
function_stop_mysql
elif [ "$1" = "restart" ]; then
function_restart_mysql
elif [ "$1" = "kill" ]; then
function_kill_mysql
else
printf "Usage: {mysql数据目录}/mysql {start|stop|restart|kill}\n"
fi
启动脚本 可执行
# chmod +x mysql
# mysql start