【安装】
-----------------------------如下安装的用户为wiki,请根据需要修改为你自己的用户名------------------------------------
1. 从如下地址下载二进制包,注意机器是32位还是64位的:http://downloads.mysql.com/archives/community/
注意选择平台和版本
注意选如下包:
2. 解压二进制包到个人目录,例如/home/wiki/local/mysql-5.1.55;
3. 拷贝本文的my.cnf样例到/home/wiki/local/mysql-5.1.55/目录下,然后按照如下方式修改:
3.1 将其中所有目录相关的配置全部改为个人目录,且要用绝对路径,不能用$HOME.
注意:二进制包解压后缺省并没有log、tmp目录,需要自己手工创建
3.2 修改[mysqld]下的port为你自己的端口;
3.3 修改[mysqld]下的user为你的用户名;
4. 将mysql的目录权限修改为你的用户,例如:
chgrp -R wiki mysql-5.1.55;
chown -R wiki mysql-5.1.55;
chmod 775 mysql-5.1.55;
4. 到mysql-5.1.55目录下的scripts目录,执行如下语句:
./mysql_install_db --defaults-file=/home/wiki/local/mysql-5.1.55/my.cnf --user=wiki --basedir=/home/wiki/local/mysql-5.1.55
5. 执行如下语句启动:
/home/wiki/local/mysql-5.1.55/bin/mysqld_safe --defaults-file=/home/wiki/local/mysql-5.1.55/my.cnf --basedir=/home/wiki/local/mysql-5.1.55 --ledir=/home/wiki/local/mysql-5.1.55/bin &
【配置】
为了提高InnoDB引擎的性能,记得一定要按照如下方式修改两个参数,否则你的MySQL insert和update慢得如蜗牛,但高性能同时也是有损失的,这样配置会降低MySQL的可靠性,某些场景下可能丢失数据,实际应用需要你自己评估是否要这样配置:
1)sync_binlog=0
1代表每次执行一条insert/update/delete都同步一下磁盘,0代表由操作系统决定何时同步磁盘,大于0代表达到多少条后再同步磁盘,如果可靠性要求较低,建议设置为0或者100以上
2)innodb_flush_log_at_trx_commit = 2
默认为1,意思是每次事务提交时都同步日志到磁盘,0代表每秒同步一次,事务提交时不同步,2代表只将事务日志写入缓存,每秒由系统同步磁盘;
【FAQ】
1. Warning: World-writable config file '/home/wiki/local/mysql-5.1.55/my.cnf' is ignored
解决方法:chmod 644 /home/wiki/local/mysql-5.1.55/my.cnf
2. 用root用户到/home/wiki/local/mysql-5.1.55目录下启动失败
解决方法:使用wiki用户登录后启动
【配置和脚本】
1. 配置样例
[client]
port = 3309
socket = /home/wiki/local/mysql-5.1.55/tmp/mysql.sock
default-character-set = utf8
[mysqld]
character-set-server = utf8
port = 3309
socket = /home/wiki/local/mysql-5.1.55/tmp/mysql.sock
user = wiki
skip-external-locking
datadir = /home/wiki/local/mysql-5.1.55/data/
log-error = /home/wiki/local/mysql-5.1.55/log/mysqld.err
pid-file = /home/wiki/local/mysql-5.1.55/bin/mysql.pid
key_buffer_size = 64M
myisam_sort_buffer_size = 30M
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 = 0
query_cache_limit=1M
query_cache_min_res_unit = 2k
tmp_table_size=64M
max_heap_table_size = 128M
open_files_limit=1024
thread_concurrency = 16
max_connections=3000
max_connect_errors=3000
back_log = 600
table_cache = 4096
thread_cache_size = 100
thread_stack = 192K
skip-name-resolve
####log variables
server-id = 1
binlog_format=mixed
#log-slave-updates
log-bin=/home/wiki/local/mysql-5.1.55/log/mysql-bin
relay-log=/home/wiki/local/mysql-5.1.55/log/relay-bin
max_binlog_size = 100M
binlog_cache_size = 8M
max_binlog_cache_size = 640M
#binlog-ignore-db = mysql
replicate-ignore-db = mysql
expire-logs-days = 10
sync_binlog=100
##############slave config####################
#report-host=192.168.3.172
#report-port=19817
#report-user=rep
#report-password=rep
##############slave config####################
slow_query_log=1
slow_query_log_file=/home/wiki/local/mysql-5.1.55/log/slowquery.log
long_query_time=1
general_log=0
general_log_file=/home/wiki/local/mysql-5.1.55/log/general.log
#relay_log_purge=OFF
# Point the following paths to different dedicated disks
tmpdir = /home/wiki/local/mysql-5.1.55/tmp/
#log-update = /path-to-dedicated-directory/hostname
#auto_increment_increment=1s
#auto_increment_offset=asdafs
####innodb variables
#skip-innodb
innodb_data_home_dir = /home/wiki/local/mysql-5.1.55/data
innodb_data_file_path = ibdata:1000M:autoextend
innodb_log_group_home_dir = /home/wiki/local/mysql-5.1.55/log
#innodb_log_arch_dir = /home/wiki/local/mysql-5.1.55/data/
innodb_buffer_pool_size = 2048M
innodb_additional_mem_pool_size = 64M
innodb_log_file_size = 100M
innodb_log_buffer_size = 128M
#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 = 40
default-storage-engine=innodb
#innodb_max_dirty_pages_pct = 50
#innodb_lock_wait_timeout = 60
innodb_file_per_table = 1
interactive_timeout = 60
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 16M
[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
#!/bin/sh
MYSQL_HOME=/home/wiki/local/mysql-5.1.55
cd $MYSQL_HOME
$MYSQL_HOME/bin/mysqld_safe --defaults-file=$MYSQL_HOME/my.cnf --basedir=$MYSQL_HOME &
3. 关闭mysql的脚本
#!/bin/sh
/home/wiki/local/mysql-5.1.55/bin/mysqladmin -S /home/wiki/local/mysql-5.1.55/tmp/mysql.sock -u root -p你的密码 shutdown