為什麼寫這篇文章?
近來在幾個MySQL技術交流群裡來,依然有很多的朋友不知如何編譯安裝MySQL,也不知道如何在一台機器如何啟動多個執行個體,而且網上的各種編譯安裝也是不全完整,基于這樣的原因,寫下這篇文章,希望對那些熱愛MySQL,還糾結在編譯安裝MySQL的朋友一些幫助!
安裝版本:MySQL 5.5.9
作業系統版本:centos 6.4 64bit
安裝步驟:
1.建立MySQL使用者
/usr/sbin/useradd mysql
2.建立必要的目錄
mkdir -p /data/mysql_3306 (資料目錄,建議用端口去區分,便于管理)
mkdir -p /data/mysql_3306_log(存放錯誤日志,慢日志)
mkdir -p /data/mysql_3306_binlog(存放binlog)
chown -R mysql.mysql /data/mysql_3306* (将三個目錄的屬主改為mysql使用者)
3.依賴包安裝
ubuntu:
aptitude install -y cmake gcc Dialog libncurses5-dev bison make g++
apt-get install -y libxml-parser-perl libdbd-mysql-perl
apt-get install -y libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev cmake automake libtool
centos:
yum -y install perl-XML-Parser perl-DBI
yum install -y cmake gcc Dialog libncurses5-dev bison make g++ automake libtool
yum install -y glib2-devel mysql-devel zlib-devel pcre-devel
4.編譯安裝
tar -xvf mysql-5.5.9.tar.gz
cd mysql-5.5.9
cmake . -DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql \
-DCOMMUNITY_BUILD:BOOL=ON \
-DENABLED_PROFILING:BOOL=ON \
-DENABLE_DEBUG_SYNC:BOOL=OFF \
-DINSTALL_LAYOUT:STRING=STANDALONE \
-DMYSQL_MAINTAINER_MODE:BOOL=OFF \
-DWITH_EMBEDDED_SERVER:BOOL=ON \
-DDEFAULT_CHARSET=utf8 \
-DWITH_EXTRA_CHARSETS:STRING=all \
-DWITH_SSL:STRING=bundled \
-DWITH_UNIT_TESTS:BOOL=OFF \
-DWITH_ZLIB:STRING=bundled \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-LH
make -j8
make install
至此沒有報錯,MySQL已編譯安裝,接下來啟動MySQL了。。
5.建立MySQL字典資訊
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3306 --user=mysql &
6.以守護程序的方式開啟MySQL(啟動的時候隻需将我下文的舉例my.cnf拷貝到/data/mysql_3306下以以下的指令啟動即可)
sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql_3306/my.cnf &
附my.cnf
[client]
port = 3306
socket = /data/mysql_3306/mysql_3306.sock
[mysqld]
port = 3306
socket = /data/mysql_3306/mysql_3306.sock
pid-file = /data/mysql_3306/mysql_3306.pid
datadir=/data/mysql_3306
tmpdir=/data/mysql_3306
#charset
character-set-server=utf8
key_buffer_size = 2G
max_allowed_packet = 128M
table_open_cache = 2000
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 2000
thread_concurrency = 64
max_heap_table_size = 128M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 2G
myisam_repair_threads = 1
myisam_recover
#connect
max_connections = 2000
max_connect_errors=999999
slow_launch_time=1
skip-name-resolve
#log
log-error=/data/mysql_3306_log/error.log
general_log_file=/data/mysql_3306_log/general_log.log
binlog_format=row
log_bin = /data/mysql_3306_binlog/mysql-bin.log
relay_log = /data/mysql_3306_binlog/mysql-relay-bin.log
max_binlog_size = 100M
log_slave_updates
expire_logs_days = 7
slow_query_log_file=/data/mysql_3306_log/slow.log
slow_query_log=on
long_query_time=1
#slave
server-id = 13354
#skip_slave_start
slave-skip-errors=1062
replicate_ignore_db=mysql
replicate_wild_ignore_table=mysql.%
#auto_increment_offset = 1
#auto_increment_increment = 2
#corefile
core-file
#innodb
innodb_data_home_dir = /data/mysql_3306
innodb_data_file_path = ibdata1:100M:autoextend
innodb_log_group_home_dir = /data/mysql_3306
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 8M
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 0
#innodb_lock_wait_timeout = 50
innodb_log_files_in_group=4
innodb_max_dirty_pages_pct = 90
innodb_open_files=2000
innodb_doublewrite=1
innodb_file_per_table
innodb_read_io_threads=32
innodb_write_io_threads=16
innodb_thread_concurrency=16
innodb_purge_threads=1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
auto-rehash
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
7.由于MySQL預設root使用者是沒有密碼的,為了安全起見,應清除空賬号和給root使用者加上密碼!
PS:起多個執行個體隻需要建相應的端口目錄,日志目錄,将配置檔案3306替換其他端口,以同樣的方式初始化和啟動即可!