使用 Dnspod 还有一个重要原因就是 Dnspod 提供了完善 API,可以很好的实现 DNS 联动,即监控主机探测到故障后,可以立即通过 API 接口将对应主机的 A 记录禁用,这样后续用户流量将会流向还在正在工作的主机;当故障主机恢复后,通过 API 接口迅速恢复之前禁用的 A 记录,从而实现主备切换,实现真正意义的热备。
具体的 API 操作将在后文相关监控部署的章节详述。
3、MySQL 主从复制
MySQL 的主从复制功能是实现读写分离的关键,其原理是主服务器将写查询以二进制日志的方式记录下来,然后从服务器会自动获取主服务器上的二进制日志中的内容,并在本地执行,从而实现数据从主服务器到从服务器的复制。MySQL 的主从复制有非常多的属性可以设置,可以实现相当复杂的功能,但这些内容已经超出了本文的讨论范围,下文仅给出实现 MySQL 主从复制的最基本配置。
3.1 MySQL 主机配置
配置文件位于 /etc/mysql/my.cnf,主要的配置项是开启 Servier-id,以及开启二进制日志功能(log_bin),最简单的做法,就是找到配置文件中对应的条目,直接去掉语句前面的注释符号'#',参考配置如下:
S1 表示 PC 服务器 1,S2 表示 PC 服务器 2;Dz 1 和 Dz 2 分别表示 Discuz!X 应用程序;DB M 表示主数据库服务器,DB S 表示从数据库服务器。正常运行状态下 Dz1 和 Dz2 读取数据时访问 DB S,写数据时访问 DB M,然后 DB S 会自动同步 DB M 的数据到本地。根据图中所示业务模型,整理 DZ1 和 DZ2 的配置文件如下: