本文转自徐老师,正文如下:
在同一个物理主机上启动多台MySQL服务器,通常也称为单机多实例。部署单机多实例可以用于测试新版本的功能、测试复制功能、高可用性等目的。用户可以通过启动mysqld或者mydqld_safe并指定不同的配置文件来启动,例如,
mysqld --socket=/mysql/socket1 --port=3306 --datadir=/mysql/data1
mysqld --socket=/mysql/socket2 --port=3307 --datadir=/mysql/data2
例如,创建一个配置文件my.cnf1,内容如下:
[mysqld]
socket=/mysql/socket1
port=3306
datadir=/mysql/data1
通过mysqld_safe启动MySQL实例,
mysqld_safe --defaults-file=/mysql/my.cnf1
用户也可以使用mysqld_multi管理多个相似的服务器。通过mysqld_muiti管理同一主机上的多个MySQL服务器时,每个mysqld进程通过主机的不同socket文件或TCP/IP端口等监听连接,在配置文件中通过[mysqldN]对每个MySQL服务器进行配置,例如,[mysqld1],[mysqld2]。
配置文件的示例如下:
[mysqld1]
user=mysql
datadir=/mysql/data1
port=3306
socket=/mysql/socket1
[mysqld2]
user=mysql
datadir=/mysql/data2
port=3307
socket=/mysql/socket2
启动时使用如下命令,
mysqld_multi --defaults-file=multi.cnf start 1,2
此外用户通过systemd服务管理器可以管理多个服务实例。服务管理器通过mysqld@.service配置文件管理多个MySQL服务器实例。配置文件的示例如下:
[mysqld@replica01]
datadir=/var/lib/mysql-replica01
socket=/var/lib/mysql-replicaa01/mysql.sock
port=3306
log-error=/var/log/mysqld-replica01.log
[mysqld@replica02]
datadir=/var/lib/mysql-replica02
socket=/var/lib/mysql-replicaa02/mysql.sock
port=3307
log-error=/var/log/mysqld-replica02.log
启动时,使用如下命令:
systemctl start mysqld@replica01
查看全部实例状态时,可以使用如下命令:
systemctl status mysqld@replica*
注意,配置多个实例时需要注意如下选项必须唯一:
-
数据路径--datadir必须为不同的实例指定不同的位置。
-
连接层--port、 --socket等选项的值必须唯一。
-
日志文件和PID文件,默认情况下这类文件保存在数据路径下,如果用户使用其他值则需要为--log-error等日志文件选项和--pid-file指定唯一值。
需要注意,每个TCP/IP端口(IP地址+端口)只能监听一个MySQL实例,如果用户在同一主机上使用相同端口运行两个MySQL实例,需要为其绑定不同的IP地址,例如,两个实例端口同样为3306,其中一个使用bind-address 127.0.0.1,另外一个bind-address 192.168.1.16。
以上内容是关于MySQL如何配置单机多实例的介绍。
文章至此。