文档

Paxos多副本

更新时间:

本文介绍标准版形态下Paxos多副本的相关概念和运维操作。

多副本产品形态

PolarDB-X支持单可用区、三可用区、两地三中心等多种副本和容灾架构。image.png

工作原理和技术特点

工作原理

image.png

  • 在同一时刻,整个集群中至多会有一个Leader节点来承担数据写入的任务,其余节点作为Follower参与多数派投票和数据同步。

  • Paxos的协议日志Consensus Log,全面融合了MySQL原有的binlog内容。在Leader主节点上会在binlog协议中新增Consensus相关的binlog event,同时在Follower备节点上替换传统的Relay Log,备库会通过SQL Thread进行Replay日志内容到数据文件,可以简单理解Paxos Consensus Log ≈ MySQL Binlog。

  • 基于Paxos多数派自动选主机制,通过heartbeat/election timeout机制会监听Leader节点的变化,在Leader节点不可用时Follower节点会自动完成切主,新的Leader节点提供服务之前需等待SQL Thread完成存量日志的Replay,确保新Leader有最新的数据。

技术特点

基于Paxos的多副本架构有如下特点:

  • 高性能,采用单Leader模式,可以提供类似MySQL semi-sync模式的性能。

  • RPO=0,Paxos协议日志全面融合MySQL原有的binlog内容,基于多数派同步机制确保数据不丢。

  • 自动HA,基于Paxos的选举心跳机制,节点自动完成节点探活和HA切换,可以替换传统MySQL的外部主备HA探活机制。

Paxos多副本的元数据

查询Paxos多副本的所有节点信息

通过如下语句查询Paxos多副本的所有节点信息(只有Leader节点会返回数据,非Leader节点会返回空结果):

SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL

返回结果:

+-----------+------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
| SERVER_ID | IP_PORT          | MATCH_INDEX | NEXT_INDEX | ROLE     | HAS_VOTED | FORCE_SYNC | ELECTION_WEIGHT | LEARNER_SOURCE | APPLIED_INDEX | PIPELINING | SEND_APPLIED |
+-----------+------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
|         1 | 10.0.3.244:14886 |           1 |          0 | Leader   | Yes       | No         |               5 |              0 |             0 | No         | No           |
|         2 | 10.0.3.245:14886 |           1 |          2 | Follower | Yes       | No         |               5 |              0 |             1 | Yes        | No           |
|         3 | 10.0.3.246:14886 |           1 |          2 | Follower | No        | No         |               5 |              0 |             1 | Yes        | No           |
+-----------+------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
3 rows in set (0.00 sec)

名词解释:

  • IP_PORT:多副本的节点IP和端口。

  • ROLE:Paxos多副本的角色,Leader/Follower/Learner等。

  • ELECTION_WEIGHT:选举权重,一般用于跨机房容灾时,优先让同机房的副本具有较高的权重,可以提供同机房优先。

  • MATCH_INDEX/NEXT_INDEX/APPLIED_INDEX:代表Consensus日志的位点信息。

查询本机Local的Paxos状态

通过如下语句查询本机Local的Paxos状态:

SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL

返回结果:

MySQL [(none)]> SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL \G
*************************** 1. row ***************************
          SERVER_ID: 1
       CURRENT_TERM: 6
     CURRENT_LEADER: 10.0.3.244:14886
       COMMIT_INDEX: 1
      LAST_LOG_TERM: 6
     LAST_LOG_INDEX: 1
               ROLE: Leader
          VOTED_FOR: 1
   LAST_APPLY_INDEX: 0
SERVER_READY_FOR_RW: Yes
      INSTANCE_TYPE: Normal

名词解释:

  • CURRENT_LEADER:返回的是当前Leader节点的IP和Port。

  • ROLE:Paxos多副本的角色,Leader/Follower/Learner等。

  • INSTANCE_TYPE::副本的类型,Normal/Log。

查询Paxos多副本的数据同步情况

通过如下语句查询Paxos多副本的数据同步情况(只有Leader节点会返回数据,非Leader节点会返回空结果):

SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_HEALTH

返回结果:

+-----------+------------------+----------+-----------+---------------+-----------------+
| SERVER_ID | IP_PORT          | ROLE     | CONNECTED | LOG_DELAY_NUM | APPLY_DELAY_NUM |
+-----------+------------------+----------+-----------+---------------+-----------------+
|         1 | 10.0.3.244:14886 | Follower | YES       |             0 |              22 |
|         2 | 10.0.3.245:14886 | Leader   | YES       |             0 |               0 |
|         3 | 10.0.3.246:14886 | Follower | YES       |             0 |              11 |
+-----------+------------------+----------+-----------+---------------+-----------------+

名词解释:

  • CONNECTED:代表节点是否正常。

  • LOG_DELAY_NUM:代表Paxos的Consensus Log的同步延迟,类似于MySQL的Relaylog的同步延迟。

  • APPLY_DELAY_NUM:代表Paxos的Consensus Log在Follower节点的回放延迟,类似于MySQL的SQL回放线程的回放延迟。

  • 本页导读 (0)