天天看點

編譯安裝MySQL5.5

為什麼寫這篇文章?

        近來在幾個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 

編譯安裝MySQL5.5

make install

編譯安裝MySQL5.5

至此沒有報錯,MySQL已編譯安裝,接下來啟動MySQL了。。

5.建立MySQL字典資訊

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3306 --user=mysql & 

編譯安裝MySQL5.5

6.以守護程序的方式開啟MySQL(啟動的時候隻需将我下文的舉例my.cnf拷貝到/data/mysql_3306下以以下的指令啟動即可)

sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql_3306/my.cnf &

編譯安裝MySQL5.5
編譯安裝MySQL5.5

附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替換其他端口,以同樣的方式初始化和啟動即可!