在同一个物理主机上启动多台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如何配置单机多实例的介绍,感谢关注“MySQL解决方案工程师”!
声明:来自MySQL解决方案工程师,仅代表创作者观点。链接:https://eyangzhen.com/2084.html