1. 解壓源碼到個人目錄;
2. 執行如下指令進行configure,注意源碼預設情況下不支援innodb,必須使用--with-plugins手工指定(二進制包預設已經支援):
./configure --prefix=$home/local/mysql-5154 --with-extra-charsets=latin1,gbk,utf8 --with-plugins=partition,heap,innobase,myisam,myisammrg,csv
3. 執行如下指令編譯和安裝
make
make install
4. 如果mysql伺服器運作的使用者不是你的登入使用者,則需要建立使用者,并修改目錄權限
4.1 增加使用者組和使用者
groupadd yourgroup
useradd -g yourgroup yourname
4.2 修改安裝目錄的權限
chown -r yourname yourdir
chgrp -r yourname yourdir
5. 制定配置檔案,拷貝後面的配置樣例,然後按照如下方式修改:
5.1 将其中所有目錄相關的配置全部改為個人目錄,且要用絕對路徑,不能用$home. 例如data, log(注意二進制包解壓後預設并沒有log、tmp目錄,需要自己手工建立),為了提高性能,建議資料目錄和日志目錄分開到不同的盤不同的目錄,例如:
datadir = /home1/liyh/mysql/data/
log-error = /home/liyh/local/mysql/log/mysqld.err
log-bin=/home/liyh/local/mysql/log/mysql-bin
innodb_data_home_dir = /home1/liyh/mysql/data
5.2 修改[mysqld]下的port為你自己的端口;
5.3 修改[mysqld]下的user為你的使用者名,即第4步建立的使用者;
6. 按照如下方式進行初始化
進入安裝目錄下的bin目錄,執行如下語句,其中--defaults-file是你在第5步配置的的配置檔案,--user是你的使用者名,--basedir是你的安裝目錄,即第2步指令中的--prefix參數指定的目錄
./mysql_install_db --defaults-file=/home/liyh/local/mysql-5154/my.cnf --user=liyh --basedir=/home/liyh/local/mysql-5154
7. 按照如下方式啟動
/home/liyh/local/mysql-5154/bin/mysqld_safe --defaults-file=/home/liyh/local/mysql-5154/my.cnf --basedir=/home/liyh/local/mysql-5154
&
【特别注意】為了提高innodb引擎的性能,記得一定要按照如下方式修改兩個參數,否則你的mysql insert和update慢得如蝸牛,但高性能同時也是有損失的,這樣配置會降低mysql的可靠性,某些場景下可能丢失資料,實際應用需要你自己評估是否要這樣配置:
sync_binlog=0 1代表每次執行一條insert/update/delete都同步一下磁盤,0代表由作業系統決定何時同步磁盤,大于0代表達到多少條後再同步磁盤,如果可靠性要求較低,建議設定為0或者100以上,預設為0
innodb_flush_log_at_trx_commit = 2 預設為1,意思是每次事務送出時都同步日志到磁盤,0代表每秒同步一次,事務送出時不同步,2代表隻将事務日志寫入緩存,每秒由系統同步磁盤;
==================配置樣例如下====================================
[client]
port = 19816
socket = /home/liyh/local/mysql/tmp/mysql.sock
default-character-set = utf8
[mysqld]
character-set-server = utf8
user = liyh
skip-external-locking
datadir = /home1/liyh/mysql/data/
log-error = /home/liyh/local/mysql/log/mysqld.err
pid-file = /home/liyh/local/mysql/tmp/mysql.pid
#autocommit = off
#read-only
key_buffer_size = 64m
myisam_sort_buffer_size = 300m
max_allowed_packet = 16m
table_open_cache = 4096
sort_buffer_size = 5m
join_buffer_size = 5m
read_buffer_size = 5m
read_rnd_buffer_size = 8m
bulk_insert_buffer_size = 64m
query_cache_size = 8m
query_cache_limit=8m
query_cache_min_res_unit = 2k
tmp_table_size=64m
max_heap_table_size = 128m
open_files_limit=102400
thread_concurrency = 16
max_connections=3000
max_connect_errors=3000
back_log = 600
table_cache = 4096
thread_cache_size = 100
thread_stack = 192k
#transaction_isolation = read-committed
skip-name-resolve
####log variables
server-id = 1
binlog_format=mixed
#log-slave-updates
log-bin=/home/liyh/local/mysql/log/mysql-bin
relay_log=/home/liyh/local/mysql/log/relay-bin
max_binlog_size = 500m
binlog_cache_size = 1m
max_binlog_cache_size = 64m
#binlog-ignore-db = mysql
replicate-ignore-db = mysql
expire-logs-days = 10
sync_binlog=100
slow_query_log=1
slow_query_log_file=/home/liyh/local/mysql/log/slowquery.log
long_query_time=1
general_log=off
general_log_file=/home/liyh/local/mysql/log/general.log
#relay_log_purge=off
# point the following paths to different dedicated disks
#tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname
#auto_increment_increment=1
#auto_increment_offset=1
####innodb variables
#skip-innodb
innodb_data_home_dir = /home1/liyh/mysql/data
innodb_data_file_path = ibdata1:2000m;ibdata2:100m:autoextend
innodb_log_group_home_dir = /home1/liyh/mysql/data
#innodb_log_arch_dir = /home/liyh/local/mysql/data/
innodb_buffer_pool_size = 2048m
innodb_additional_mem_pool_size = 64m
innodb_log_file_size = 200m
innodb_log_buffer_size = 8m
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 2
#innodb_file_io_threads = 4
innodb_thread_concurrency = 16
default-storage-engine=innodb
#innodb_max_dirty_pages_pct = 90
#innodb_lock_wait_timeout = 60
#innodb_file_per_table = 0
#interactive_timeout = 600
#wait_timeout = 900
[mysqldump]
quick
[mysql]
no-auto-rehash
# remove the next comment character if you are not familiar with sql
#safe-updates
[myisamchk]
key_buffer_size = 512m
sort_buffer_size = 512m
read_buffer = 5m
write_buffer = 5m
[mysqlhotcopy]
interactive-timeout