Linux下安装 Mysql

1、通过官网下载mysql源码包。

访问http://dev.mysql.com/downloads/ 点击MySQL Community Server,选择Source Code, 点击 Generic Linux (Architecture Independent), Compressed TAR Archive后的Download

# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.20.tar.gz
# tar zxvf mysql-5.6.20.tar.gz 
# cd mysql-5.6.20

2、 安装cmake

mysql5.5以后源码安装都得通过cmake编译,并安装了ncurses ncurses-devel

# yum -y install cmake ncurses ncurses-devel
# groupadd mysql
# useradd -g mysql mysql

3、编译并安装

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql -DMYSQL_DATADIR=/usr/local/webserver/mysql -DSYSCONFDIR=/usr/local/webserver/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1
# make && make install

参数说明:

编译出错需删掉CMakeCache.txt

# rm CMakeCache.txt

4、配置my.cnf

拷贝mysql配置文件,并进行相应配置,这里是服务器是阿里云的最低配置,单核 512M内存。

# cd /usr/local/webserver/mysql
# chown -R mysql:mysql data/
# cp support-files/my-default.cnf  my.cnf
# vi my.cnf 

编辑my.cnf

[mysqld]
 
innodb_buffer_pool_size = 100M
 
basedir = /usr/local/webserver/mysql
datadir = /usr/local/webserver/mysql/data
port = 3306
server_id = 1
socket = /tmp/mysql.sock
 
join_buffer_size = 10M
sort_buffer_size = 10M
read_rnd_buffer_size = 12M 
 
query_cache_size = 32M
tmp_table_size = 32M
key_buffer_size = 32M
 
performance_schema_max_table_instances=1000
table_definition_cache=800
table_open_cache=512
 
long_query_time=1
slow_query_log=1
slow_query_log_file=/usr/loca/webserver/mysql/data/slow-queries.log
log_queries_not_using_indexes=1
 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

5、初始化Mysql数据库

/usr/loca/webserver/mysql/scripts/mysql_install_db --user=mysql

6、启动Mysql

# ./support-files/mysql.server start

报错

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/webserver/mysql/data/AY121218115148c506503.pid).
 
2014-08-14 11:29:38 1678 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2014-08-14 11:29:38 1678 [Note] InnoDB: The InnoDB memory heap is disabled
2014-08-14 11:29:38 1678 [Note] InnoDB: Mutexes and rw_locks use InnoDB's own implementation
2014-08-14 11:29:38 1678 [Note] InnoDB: Memory barrier is not used
2014-08-14 11:29:38 1678 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-08-14 11:29:38 1678 [Note] InnoDB: Not using CPU crc32 instructions
2014-08-14 11:29:38 1678 [Note] InnoDB: Initializing buffer pool, size = 100.0M
InnoDB: mmap(106840064 bytes) failed; errno 12
2014-08-14 11:29:38 1678 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2014-08-14 11:29:38 1678 [ERROR] Plugin 'InnoDB' init function returned error.
2014-08-14 11:29:38 1678 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2014-08-14 11:29:38 1678 [ERROR] Unknown/unsupported storage engine: InnoDB
2014-08-14 11:29:38 1678 [ERROR] Aborting

无法给innodb_buffer_pool_size分配100M内存,但启动Mysql之前实际上是有内存的。 Mysql5.6有几个默认值,按照这些值启动需要消耗几百兆内存,然后再分配给innodb_buffer_pool_size就不足了,服务器上可怜的512M内存。。。

performance_schema_max_table_instances = 12500
table_definition_cache = 1400
table_open_cache = 2000

调整一下

performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256

就只使用40—60M左右的内存了,重新启动mysql

# ./support-files/mysql.server start
Starting MySQL. SUCCESS! 
 
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod 755 /etc/init.d/mysqld 
# chkconfig mysqld on
-- EOF --
发表于: 2014-08-14 23:55
标签: Linux Mysql