MySQL5.5-编译安装和多实例配置

作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!

MySQL有多种安装方式:编译安装、二进制发布包安装。我想大家的第一反应是使用二进制安装,选择针对当前系统发布的二进制直接安装就行,比编译安装简单得多。但编译安装有它的好处:

  • 可针对当前系统进行优化;
  • 定制需要的引擎;
  • 定制安装目录,可多版本并存;
  • 定制各种默认参数。

那多实例有什么用途呢?在业务早期,系统的访问量较小,许多模块的读写操作不频繁,从节约成本的角度和系统以后的扩展性考虑,会在一台物理机中部署多个MySQL实例,不同的模块使用不同的实例,如果其中某个模块的读写量不断上升,到达一定程度后再将它使用的实例迁移至另外的服务器。
另外,在研发的开发环境和测试的测试环境中,部署的环境要模拟生产环境的架构,也往往采用在同一台物理服务器中部署多个MySQL实例的情况,进行主从同步、主主同步的配置。

一、环境

  • RedHat 5.x / CentOS 5.x
  • GCC 4.1.2

二、安装MySQL

解压

1
tar -C build -zxvf mysql-5.5.43.tar.gz

编译安装

1、配置。

1
cmake -DCMAKE_INSTALL_PREFIX=/home/nieyong/local/mysql-5543 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DMYSQL_UNIX_ADDR=/home/nieyong/local/mysql-5543/mysql-5543.sock -DMYSQL_TCP_PORT=3306 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_CSV_STORAGE_ENGINE=1 -DWITH_HEAP_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MYISAMMRG_STORAGE_ENGINE=1 -DWITH_NDB_STORAGE_ENGINE=1 -DWITH_NDB_TEST=ON -DWITH_READLINE=1

2、生成可执行文件。

1
make

3、安装到指定目录。

1
make install

三、多实例配置

说明:创建两个实例,实例1使用端口19826,实例2使用端口19836。

结构说明

多实例结构

说明:

  • data - 存放数据文件:数据,索引,二进制日志(bin log),重放日志(replay log)。
  • log - 存放日志文件:慢查询日志,错误日志。
  • tmp - 存放临时文件:进程ID文件。
  • my.cnf - 实例配置文件。

配置实例19826

1、新建目录。

1
2
3
4
cd $MySQL_DATA_DIR
mkdir data19826
cd data19826
mkdir data log tmp

2、创建系统配置文件。
进入目录$MySQL_DATA_DIR/data19826,新建文件my.cnf。内容类似如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[client]
default-character-set = utf8
port = 19826
socket = /home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.sock
[mysqld]
server-id = 1
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
port = 19826
socket = /home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.sock
datadir = /home/nieyong/local/mysql-5543/data/data19826/data/
log-error = /home/nieyong/local/mysql-5543/data/data19826/log/mysql.err
pid-file = /home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.pid
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin = /home/nieyong/local/mysql-5543/data/data19826/data/mysql-bin
relay_log = /home/nieyong/local/mysql-5543/data/data19826/data/relay-bin
binlog_format = mixed
slow_query_log = 1
slow_query_log_file = /home/nieyong/local/mysql-5543/data/data19826/log/slowquery.log
long_query_time = 1
general_log = off
general_log_file = /home/nieyong/local/mysql-5543/data/data19826/log/general.log
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

3、初始化实例,生成MySQL系统数据库信息。
进入MySQL安装目录,执行命令:

1
./scripts/mysql_install_db --basedir=/home/nieyong/local/mysql-5543 --defaults-file=/home/nieyong/local/mysql-5543/data/data19826/my.cnf --user=nieyong

MySQL在终端输出如下提示信息:

Installing MySQL system tables...
150512 16:41:35 [Note] /home/nieyong/local/mysql-5543/bin/mysqld (mysqld 5.5.43-log) starting as process 27522 ...
OK
Filling help tables...
150512 16:41:36 [Note] /home/nieyong/local/mysql-5543/bin/mysqld (mysqld 5.5.43-log) starting as process 27528 ...
OK
。。。 。。。

配置实例19836

1、新建目录。

1
2
3
4
cd $MySQL_DATA_DIR
mkdir data19836
cd data19836
mkdir data log tmp

2、创建系统配置文件。
将\$MySQL_DATA_DIR/data19826/my.cnf复制到目录\$MySQL_DATA_DIR/data19836下,将内容中所有的19826都改成19836

3、初始化实例,生成MySQL系统数据库信息。
进入MySQL安装目录,执行命令:

1
./scripts/mysql_install_db --basedir=/home/nieyong/local/mysql-5543 --defaults-file=/home/nieyong/local/mysql-5543/data/data19836/my.cnf --user=nieyong

四、启动实例

1、启动实例19826。
进入MySQL安装目录,执行命令:

1
./bin/mysqld_safe --defaults-file=/home/nieyong/local/mysql-5543/data/data19826/my.cnf &

2、启动实例19836。
进入MySQL安装目录,执行命令:

1
./bin/mysqld_safe --defaults-file=/home/nieyong/local/mysql-5543/data/data19836/my.cnf &

3、查看MySQL各实例进程信息。
在终端执行命令:

1
ps -ef | grep mysqld | grep -v grep

系统显示如下进程信息:

nieyong  28452 26805  0 17:34 pts/2    00:00:00 /bin/sh ./bin/mysqld_safe --defaults-file=/home/nieyong/local/mysql-5543/data/data19826/my.cnf
nieyong  28857 28452  0 17:34 pts/2    00:00:00 /home/nieyong/local/mysql-5543/bin/mysqld --defaults-file=/home/nieyong/local/mysql-5543/data/data19826/my.cnf --basedir=/home/nieyong/local/mysql-5543 --datadir=/home/nieyong/local/mysql-5543/data/data19826/data/ --plugin-dir=/home/nieyong/local/mysql-5543/lib/plugin --log-error=/home/nieyong/local/mysql-5543/data/data19826/log/mysql.err --pid-file=/home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.pid --socket=/home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.sock --port=19826
nieyong  28886 26805  0 17:36 pts/2    00:00:00 /bin/sh ./bin/mysqld_safe --defaults-file=/home/nieyong/local/mysql-5543/data/data19836/my.cnf
nieyong  29291 28886  0 17:36 pts/2    00:00:00 /home/nieyong/local/mysql-5543/bin/mysqld --defaults-file=/home/nieyong/local/mysql-5543/data/data19836/my.cnf --basedir=/home/nieyong/local/mysql-5543 --datadir=/home/nieyong/local/mysql-5543/data/data19836/data/ --plugin-dir=/home/nieyong/local/mysql-5543/lib/plugin --log-error=/home/nieyong/local/mysql-5543/data/data19836/log/mysql.err --pid-file=/home/nieyong/local/mysql-5543/data/data19836/tmp/mysql.pid --socket=/home/nieyong/local/mysql-5543/data/data19836/tmp/mysql.sock --port=19836

五、配置权限

实例19826

1、修改的root用户的密码并且限制只能本机登陆。
进入MySQL安装目录,执行如下命令:

1
./bin/mysqladmin -S /home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.sock -u root -h 'localhost' password 'new-password'

注:将new-password替代成实际的密码

2、使用root用户登陆。

1
./bin/mysql -S /home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.sock -u root -p

3、查看数据库信息。
在mysql提示符后输入命令:

1
show databases;

查看数据库信息

实例19836

1、修改root用户的密码并且限制只能本机登陆。

1
./bin/mysqladmin -S /home/nieyong/local/mysql-5543/data/data19836/tmp/mysql.sock -u root -h 'localhost' password 'new-password'

注:将new-password替代成实际的密码

六、停止实例

实例19826

进入MySQL安装目录,执行如下命令:

1
./bin/mysqladmin -S /home/nieyong/local/mysql-5543/data/data19826/tmp/mysql.sock -u root -p shutdown

实例19836

进入MySQL安装目录,执行如下命令:

1
./bin/mysqladmin -S /home/nieyong/local/mysql-5543/data/data19836/tmp/mysql.sock -u root -p shutdown