作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!
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、生成可执行文件。
3、安装到指定目录。
三、多实例配置 说明:创建两个实例,实例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提示符后输入命令:
实例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