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