MySQL之Linux单机启动多个MySQL实例(mysqld_multi)

本文主要介绍Centos6.x安装MySQL5.7。

1.安装MySQL5.7

1
2
# rpm -ivh https://repo.mysql.com//mysql57-community-release-el6-11.noarch.rpm
# yum install mysql-community-client mysql-community-server

2.创建data目录

1
# mkdir /usr/local/mysql/data{3306,3307,3308} -p

3.修改权限

1
# chown -R mysql:mysql /usr/local/mysql

4.初始化实例的数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
生成 3306 的数据目录
# mysqld --no-defaults --initialize-insecure --basedir=/usr --datadir=/usr/local/mysql/data3306 --user=mysql --explicit_defaults_for_timestamp

生成 3307 的数据目录
# mysqld --no-defaults --initialize-insecure --basedir=/usr --datadir=/usr/local/mysql/data3307 --user=mysql --explicit_defaults_for_timestamp

生成 3307 的数据目录
# mysqld --no-defaults --initialize-insecure --basedir=/usr --datadir=/usr/local/mysql/data3308 --user=mysql --explicit_defaults_for_timestamp

--no-defaults 不读取默认的 /etc/my.cnf 全局配置文件 否则可能存在一些冲突问题
--initialize-insecure 初始化且不需要生成密码
--basedir mysql 的安装目录
--datadir 本实例的数据目录
--user 这样生成的文件用户为 mysql
--explicit_defaults_for_timestamp timestamp 已经 deprecated 了

5.修改/etc/my.cnf

···bash
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user=root
log=/usr/local/mysql/mysql_multi.log

[mysqld3306]
basedir=/usr
datadir=/usr/local/mysql/data3306
port=3306
user=mysql
socket=/tmp/mysql.sock3306
server_id=1
log_bin=mysql-bin

[mysqld3307]
basedir=/usr
datadir=/usr/local/mysql/data3307
port=3307
user=mysql
socket=/tmp/mysql.sock3307
server_id=2

[mysqld3308]
basedir=/usr
datadir=/usr/local/mysql/data3308
port=3308
user=mysql
socket=/tmp/mysql.sock3308
server_id=3
···

6.启动多实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# mysqld_multi start
# /usr/local/mysql/bin/mysqld_multi start 3306
# /usr/local/mysql/bin/mysqld_multi start 3307
# /usr/local/mysql/bin/mysqld_multi start 3308
# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running
MySQL server from group: mysqld3308 is running

# netstat -tln|grep 330*
tcp 0 0 :::3307 :::* LISTEN
tcp 0 0 :::3308 :::* LISTEN
tcp 0 0 :::3306 :::* LISTEN

7.初始化密码

1
2
3
# mysqladmin -u root password '123456' -S /tmp/mysql.sock3306
# mysqladmin -u root password '123456' -S /tmp/mysql.sock3307
# mysqladmin -u root password '123456' -S /tmp/mysql.sock3308

8.登录

1
2
3
# mysql -uroot -p123456 -S  /tmp/mysql.sock3306
# mysql -uroot -p123456 -S /tmp/mysql.sock3307
# mysql -uroot -p123456 -S /tmp/mysql.sock3308
---------------- The End ----------------