【用户需求】
咨询一个问题,mysql实例可不可对应多个sql节点?就是我们应用连接数据库的时候连接的是一个总入口,然后总入口将请求转发到各个sql节点实现负载均衡和高可用。
举个例子:我们k8s有三个主节点,每个主节点提供给我们访问域名一样,我们通过一样的域名访问服务,然后k8s再将我们的请求转发到各个服务,每个服务也是高可用的。我们mysql的入口就好像是k8s的统一域名一样,我们的服务就好像是每个sql节点一样,连接到sql节点再继续往下走。
【解决办法】
1.创建多个mysql实例,建议分布在不同主机;
2.关联sequoiadb存储时配置coord地址可以是1个或多个,建议配置多个:
方式1:每个mysql配置当前主机上的coord,其中一个主机异常其他主机mysql可以继续使用。配置如mysql1--coord1 mysql2--coord2....;
方式2:每个mysql均配置多个coord,mysql连接时会随机选择一个,如果连接失败会自动选择下一个,这样可以尽量保证某一个coord异常时mysql连接不受影响。配置如mysql1----coord1,coord2,coord3,mysql2---coord1,coord2,coord3....;
3.使用mysqlDisseminate脚本在多个mysql实例之间做DDL和DCL同步,保证多实例之间元数据一致。这样应用连到任何一个mysql服务上看到的数据都是一样的,也可以在任意一个mysql上面做数据操作;
4.通过F5 A10或者ngnix做个ip高可用映射。
【参考资料】
mysql使用,命令行配置SequoiaDB连接地址:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1521595283-edition_id-302
SAC配置SequoiaDB连接地址,见附件“SAC-mysql关联存储.png”
【说明】
mysqlDisseminate脚本在SequoiaSQL-MySQL v3.2.2版本会集成到安装包里面,后续在SAC也可能优化。