跳到内容
标志
雷竞技下载官网Percona产品文档
测试Patroni PostgreSQL集群
初始化搜索
    雷竞技下载官网percona / postgresql-docs
    雷竞技下载官网percona / postgresql-docs
    • 首页
        • 概述
        • 安装在Debian和Ubuntu上
        • 安装RHEL和衍生产品
        • 为Postgr雷竞技下载官网eSQL扩展启用Percona Distribution
        • 仓库概述
      • 从PostgreSQL迁移到Percona发行版雷竞技下载官网
      • 将PostgreSQ雷竞技下载官网L的Percona发行版从14升级到15
      • PostgreSQL的Percon雷竞技下载官网a发行版的小升级
      • pg-stat-raybet雷竞技竞猜在线官网monitor
        • 概述
        • 在Debian或Ubuntu上部署
        • 在RHEL或CentOS上部署
        • 测试Patroni PostgreSQL集群
          • 测试复制
          • 测试故障转移
            • 场景1。有意地停止主节点上的PostgreSQL,并验证对PostgreSQL的访问。
            • 场景2。机器突然停机或断电
          • 手动切换
        • 概述
        • 在Percona Distribution for PostgreSQL中部署备份和容灾解决方案雷竞技下载官网
      • LDAP身份验证
    • 卸载
      • 发行说明索引
      • 雷竞技下载官网Percona Distribution for PostgreSQL 15.2 (2023-03-20)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 15.1 (2022-11-21)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 15.0 (2022-10-24)
    • 许可

    • 测试复制
    • 测试故障转移
      • 场景1。有意地停止主节点上的PostgreSQL,并验证对PostgreSQL的访问。
      • 场景2。机器突然停机或断电
    • 手动切换

    测试Patroni PostgreSQL集群¶

    本文档包含以下场景测试PostgreSQL集群:

    • 复制,
    • 连接,
    • 故障转移和
    • 手动切换。

    测试复制¶

    1. 连接到集群并建立psql会话从客户端机器连接到HAProxy节点。使用HAProxy-demo节点的公网IP地址:

      美元psql- upostgres- h134.209.111.138- p5000
    2. 运行如下命令创建一个表并插入几行:

      创建表格客户(名字文本,年龄整数);插入成客户值(“约翰。”,30.);插入成客户值(“道森”,35);
    3. 为了确保复制工作正常,我们可以登录到每个PostgreSQL节点,并对本地运行的实例运行一个简单的SQL语句:

      美元sudopsql- upostgres- c“select * from customer;”

      每个节点上的结果应该如下所示:

      姓名|年龄  --------+----- 约翰30道森| | 35(2行)

    测试故障转移¶

    在适当的设置中,即使一个或两个节点宕机,客户端应用程序也不会出现连接到集群的问题。我们将在以下场景中测试集群的故障转移:

    场景1。有意地停止主节点上的PostgreSQL,并验证对PostgreSQL的访问。¶

    1. 在任意节点上执行以下命令,查看当前集群状态。

      美元sudopatronictl- c/etc/patroni/patroni.yml列表

      输出:

      +集群:stampede1 (7011110722654005156 ) -----------+ | 员| TL | | | |主机角色状态滞后MB  | +--------+-------+---------+---------+----+-----------+ | node1 | node1 | |领袖运行| 1 | | | node2 | node2 | | |运行复制品1 | 0 | | node3 | node3 | | | 1 | 0运行复制品  | +--------+-------+---------+---------+----+-----------+
    2. node1是当前的领导者。阻止守护神node1要查看它如何改变集群:

      美元sudosystemctl停止patroni
    3. 一旦服务停止node1,检查登录node2和node3使用如下命令:

      美元sudojournalctl- upatroni.service- nOne hundred.- f
      输出
      Sep 23 14:18:13 node03 patroni[10042]: 2021-09-23 14:18:13 905 INFO: no action。我是一个从属节点(node3),跟随一个主节点(node1) Sep 23 14:18:20 node03 patroni[10042]: 2021-09-23 14:18:20,011 INFO: get response from node2 http://node2:8008/patroni: {"state": "running", "postprimary_start_time": "2021-09-23 12:50:29.460027+00:00", "role": "replica", "server_version": 130003, "cluster_unlocked": true, "xlog": {"received_location": 67219152, "replayed_location": 67219152, "replayed_timestamp": "2021-09-23 13:19:50.329387+00:00", "paused": false}, "timeline":1, "database_system_identifier": "7011110722654005156", "patroni": {"version": "2.1.0", "scope": "stampede1"}} Sep 23 14:18:20 node03 patroni[10042]: 2021-09-23 14:18:20,031 WARNING: Request failed to node1: GET http://node1:8008/patroni (HTTPConnectionPool(host='node1', port=8008): Max retries exceeded with url: /patroni (Caused by ProtocolError('Connection aborted. '连接中止。, ConnectionResetError(104, 'Connection reset by peer')))) Sep 23 14:18:20 node03 patroni[10042]: 2021-09-23 14:18:20, 20,038 INFO:软件看门动物激活25秒超时,计时松懈15秒Sep 23 14:18:20 node03 patroni[10042]: 2021-09-23 14:18:20 INFO:通过获取会话锁将自己提升为leader Sep 23 14:18:20 node03 patroni[13641]:服务器提升Sep 23 14:18:20 node03 patroni[10042]: 2021-09-23 14:18:20 INFO: 20,049 INFO:clear rewind state after become leader 9月23 14:18:21 node03 patroni[10042]: 2021-09-23 14:18:21,101 INFO: no action。我是(node3)有锁的领导者9月23 14:18:21 node03 patroni[10042]: 2021-09-23 14:18:21,117 INFO: no action。我是(node3)有锁的领导者9月23 14:18:31 node03 patroni[10042]: 2021-09-23 14:18:31,114 INFO: no action。我是带着锁的领导者…

      登录node3显示请求到node1都失败了,看门狗开始行动了,然后node3正在宣传自己是领导者:

    4. 验证您仍然可以通过HAProxy实例访问集群并读取数据:

      美元psql- upostgres- h10.104.0.6- p5000- c“select * from customer;”名字|年龄  --------+-----约翰|30.道森|35(2行)
    5. 中重启Patroni服务node1

      美元sudosystemctl开始patroni
    6. 查看当前集群状态:

      美元sudopatronictl- c/etc/patroni/patroni.yml列表

      输出:

      +集群:stampede1 (7011110722654005156 ) -----------+ | 员| TL | | | |主机角色状态滞后MB  | +--------+-------+---------+---------+----+-----------+ | node1 | node1 |复制运行| 2 | 0 | | | node2 | node2 |复制运行| 2 | 0 | | | node3 | node3 | | | 2运行领袖  | | +--------+-------+---------+---------+----+-----------+

    如我们所见,node3遗骸是首领,其余都是复制品。

    场景2。机器突然停机或断电¶

    为了模拟电源中断,让我们在中终止服务node3看看会发生什么node1和node2。

    1. 识别Patroni的进程ID,然后使用9开关。

      美元ps辅助|grep-我patroni postgres1004201。21。64713243948?Ssl12:500: 09年/usr/bin/python3/usr/bin/patroni/etc/patroni/patroni.yml美元sudo杀了910042
    2. 检查日志node2:

      美元sudojournalctl- upatroni.service- nOne hundred.- f
      输出
      Sep 23 14:40:41 node02 patroni[10577]: 2021-09-23 14:40:41656 INFO: no action。我是一个从节点(node2),并在一个leader (node3)之后…Sep 23 14:41:01 node02 patroni[10577]: 2021-09-23 14:41:01373 INFO: Got response from node1 http://node1:8008/patroni: {"state": "running", "postprimary_start_time": "2021-09-23 14:25:30.076762+00:00", "role": "replica", "server_version": 130003, "cluster_unlocked": true, "xlog": {"received_location": 67221352, "replayed_location": 67221352, "replayed_timestamp": null, "paused": false}, "timeline": 2, "database_system_identifier":"7011110722654005156", "patroni": {"version": "2.1.0", "scope": "stampede1"}} Sep 23 14:41:03 node02 patroni[10577]: 2021-09-23 14:41:03,364 WARNING: Request failed to node3: GET http://node3:8008/patroni (HTTPConnectionPool(host='node3', port=8008): Max retries exceeded with url: /patroni (Caused by ConnectTimeoutError(, '到node3的连接超时。(connect timeout=2)')) Sep 23 14:41:03 node02 patroni[10577]: 2021-09-23 14:41:03,373 INFO: Software Watchdog activated with 25 second timeout, timing slack 15 seconds Sep 23 14:41:03 node02 patroni[10577]: 2021-09-23 14:41:03 node02 patroni[15478]: server promoting Sep 23 14:41:03 node02 patroni[10577]:成为leader后清除倒带状态Sep 23 14:41:04 node02 patroni[10577]:2021-09-23 14:41:04,450 INFO: no action。我是(node2)有锁的领导者9月23 14:41:04 node02 patroni[10577]: 2021-09-23 14:41:04,475 INFO: no action。我是(node2)锁定... ...的领导者

      node2意识到领导者已经死了,并把自己提升为领导者。

    3. 尝试在这些操作之间的任何时间点使用HAProxy端点访问集群。集群仍在接受连接。

    手动切换¶

    通常,需要手动切换计划的停机时间,以便在领导节点上执行维护活动。Patroni提供切换命令从主节点手动切换。

    在上运行以下命令node2(当前领导节点):

    美元sudopatronictl- c/etc/patroni/patroni.yml切换

    Patroni询问当前主节点的名称,然后询问应该接管作为切换主节点的节点的名称。您还可以指定发生切换的时间。若要立即触发流程,请指定该值现在:

    primary [node2]: node2 Candidate ['node1', 'node3'] []: node1何时进行切换(例如2021-09-23T15:56) [now]:现在当前集群拓扑结构+集群:stampede1 (7011110722654005156 ) -----------+ | 员| TL | | | |主机角色状态滞后MB  | +--------+-------+---------+---------+----+-----------+ | node1 | node1 | |复制品运行| 3 | 0 | | node2 | node2 | |领袖运行| 3 | | | node3 | node3 | |复制品停止| |未知  | +--------+-------+---------+---------+----+-----------+ 你确定你想切换集群stampede1,降职目前主要node2 ?[y / N]: y 2021-09-23 14:56:40.54009成功切换到“node1”+集群:stampede1 (7011110722654005156 ) -----------+ | 员| TL | | | |主机角色状态滞后MB  | +--------+-------+---------+---------+----+-----------+ | node1 | node1 | |领袖运行| 3 | | | node2 | node2 | |复制品停止| |未知| | node3 | node3 | |复制品停止| |未知  | +--------+-------+---------+---------+----+-----------+

    中重启Patroni服务node2(经过“计划维护”)。节点以辅助节点的身份重新加入集群。

    联系我们

    如需免费技术帮助,请访问Percona雷竞技下载官网社区论坛。

    要报告错误或提交功能请求,请打开JIRA票。

    付费支持和管理或咨询服务,请联系雷竞技下载官网Percona销售。


    最后更新:2022年12月5日
    创建:2021年12月15日
    雷竞技下载官网Percona LLC,©2023
    用MkDocs材料

    饼干的同意

    我们使用cookie来识别您的重复访问和偏好,以及衡量我们文档的有效性,以及用户是否找到他们正在搜索的内容。在您的同意下,您正在帮助我们改进我们的文档。

    Baidu
    map