一般情况下,MySQL数据库会部署在一台mysql服务器上,开启3306或3307端口对外提供服务,如果有同网段的客户端需要连接MySQL数据库,只需要在MySQL数据库内部对相应IP地址进行授权,然后在客户端配置需要连接MySQL服务器IP、端口等信息,即可正常连通,这种mysql访问方法还是比较清晰的。
一、业务环境
但如果一个服务器上安装了多套mysql数据库,每个服务使用不同IP地址,一个不同网段的客户端访问mysql,情况就比较复杂了。
在生产环境又这样一个场景:
原来有三个业务系统,分别使用不同的网段,业务A 使用 10.0.10.* 地址;业务B 使用 10.0.20.* 地址;业务C 使用 10.0.30.* 地址;这三个业务本来是在不同的物理主机,运行不同的业务,有各自不同的MySQL数据库服务器,分别为 10.0.10.160 ,10.0.20.160 ,10.0.30.160;
后来由于业务发展需求,原有MySQL服务器的硬件不能满足业务要求,新采购了一个由四块网卡的配置高CPU、高内存、SSD硬盘的服务器作为新的数据库服务器,安装了系统和mysql软件后,准备将原来的三个数据库迁移到这台服务器上。
原来三个不同网段IP的mysql服务,迁移到同一台服务器上,有两个问题:
1.区分不同IP;这个可以通过服务器上每个网卡配置不同网段的IP地址,每个mysql服务器在各自的 my.cnf 中 配置“bind-address = 10.0.10.160 ”参数,使每个MySQL服务启动时启动到对应网卡地址,这样只要其他mysql客户端的IP可以与该网卡上同网段的IP地址网络畅通,便可通过网卡绑定地址进行访问;
2.网关问题:在同一台服务器上,就算是有多块网卡可以配置多个IP地址,但只能配置一个网关,选择某一块网卡配置IP地址,子网掩码和网关,其他网卡只能配置IP地址和子网掩码;
二、整合方案
于是为了应对上面两个问题,迁移之后的环境为:
新服务中除了一个网卡配置内网IP,其余三块网卡分别配置三个业务的MySQL服务地址
第一块网卡:eth0 配置 10.0.10.160 255.255.255.0 10.0.10.1 ,业务A的MySQL配置bind-address=10.0.10.160 port=3307;
第二块网卡:eth1 配置 10.0.20.160 255.255.255.0 ,业务B的MySQL配置 bind-address=10.0.20.160 port=3307;