Mysql单机多实例

mysql默认端口为3306,因此默认一个机器上只能启动一个mysql实例,如果想要在一台机器上启动多个mysql实例,则需配置单机多实例。本文承接mysql安装教程。

mysql主从规划

主/从库 IP地址 端口
primary(主库) 10.10.10.1 3306
replica(从库) 10.10.10.2 3306

创建mysql目录

1
2
3
4
5
6
7
8
9
10
11
#创建mysql多实例数据库目录
$mkdir -vp /data/mysql_data{1..2}

#创建mysql sock的文件夹
$mkdir /data/mysqlsock

#修改mysqlsock文件夹的权限
$chmod 777 /data/mysqlsock/

#修改文件夹所有者为mysql
$chown mysql.mysql -R /var/lib/mysql/mysql-files /data/mysql_data{1..2} /data/mysqlsock

修改配置文件

1
2
3
4
5
#备份配置文件
$mv /etc/my.cnf /etc/my.cnf.bak

#创建新的配置文件,并添加如下配置
$cat > /etc/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[mysqld_multi]
mysqld=/usr/sbin/mysqld
mysqladmin=/usr/bin/mysqladmin
log=/var/log/mysql/mysql_multi.log

[mysqld1]
datadir=/data/mysql_data1
socket=/data/mysqlsock/mysql.sock1
port=3306
user=mysql
performance_schema=off
bind_address=0.0.0.0
skip-name-resolve=0

[mysqld2]
datadir=/data/mysql_data2
socket=/data/mysqlsock/mysql.sock2
port=3307
user=mysql
performance_schema=off
bind_address=0.0.0.0
skip-name-resolve=0

初始化mysql多实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#初始化mysql多实例,搜索root@localhost: xxx,找到初始密码
$/usr/sbin/mysqld --initialize --user=mysql --datadir=/data/mysql_data1

#初始化mysq2多实例,搜索root@localhost: xxx,找到初始密码
$/usr/sbin/mysqld --initialize --user=mysql --datadir=/data/mysql_data2

#查看已经存在的mysql,并杀死已经存在的mysql教程
$ps aux|grep mysql
$kill -9 xxx

#查看mysql运行情况
$mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running

#启动mysql多实例
$mysqld_multi start
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running

#查看服务进程,可以看到前面设置的端口号均已启动
ps aux | grep mysql

登录mysql实例

1
2
3
4
5
6
7
8
# 登录mysql实例1,实例2
$/usr/bin/mysql -S /data/mysqlsock/mysql.sock1 -p'xxx'

# 设置实例1的密码,xxx为初始密码
mysql> SET PASSWORD=PASSWORD('xxx');

# 退出mysql
mysql> exit;

mysql实例2同样进行初始化,并设置初始密码,这样mysql单机多实例则初始化完成了