知识库

用于在线备份的 HA Proxy 配置

我们想要实现什么?

在线备份应定期在生产集群上运行。只需要在一台实例上执行即可,因为每台实例都拥有数据库的完整副本。由于全量备份还会执行一致性检查,并且副本本身会占用一定的系统资源,建议在从节点(HA 模式)或 follower/read‑replica(CC 模式)上运行此操作。

要使增量备份工作,您需要每次都从同一实例进行备份,并保留自上一次备份后的事务日志。如果不从同一实例运行,存储将不匹配,系统将回退为全量备份。如果您想控制从哪台实例进行备份,需要修改此示例或直接对该实例进行备份而不通过代理。如果您可以接受回退为全量备份,此方法可能适合您。

因果集群:将在线备份指向 follower 或 read‑replica

下面的示例配置定义了一个前端,备份工具将通过该前端连接运行中的数据库,并检查一组实例当前是否为从节点。我们假设已在 conf/neo4j.conf 文件中启用了在线备份,如下所示:

online_backup_enabled=true
online_backup_server=0.0.0.0:6362

针对因果集群中从节点进行备份的 haproxy.cfg 文件示例如下:

defaults
  mode http
  timeout connect 5000ms
  timeout client 30000ms
  timeout server 30000ms

# Available at https://:8080/haproxy?stats
listen admin
  balance
  mode http
  bind *:8080
  stats enable

frontend neo4j-backup
  mode tcp
  bind *:6362
  default_backend cores-backup

backend cores-backup
  balance roundrobin
  option httpchk GET /db/server/core/read-only HTTP/1.0
  mode tcp

  server neo4j-1 neo4j-1:6362
  server neo4j-2 neo4j-2:6362
  server neo4j-3 neo4j-3:6362

要从 read‑replica 进行备份,请将 option httpchk 行替换为:

option httpchk GET /db/manage/server/read-replica/available HTTP/1.0

HA:将在线备份指向从节点

HA 模式下的 haproxy.cfg 文件示例如下:

defaults
  mode http
  timeout connect 5000ms
  timeout client 30000ms
  timeout server 30000ms

# Available at https://:8080/haproxy?stats
listen admin
  balance
  mode http
  bind *:8080
  stats enable

frontend neo4j-backup
  mode tcp
  bind *:6362
  default_backend slaves-backup

backend slaves-backup
  balance roundrobin
  option httpchk GET /db/manage/server/ha/slave HTTP/1.0
  mode tcp

  server neo4j-1 neo4j-1:6362
  server neo4j-2 neo4j-2:6362
  server neo4j-3 neo4j-3:6362

假设 haproxy 的 DNS 名称类似于 neo4j-backup-slaves,则备份命令大致如下:

$ ./bin/neo4j-admin backup --name=backup.db --backup-dir /tmp/backups --from=neo4j-backup-slaves:6362

或者已废弃的 neo4j-backup 工具

$ ./bin/neo4j-backup -to /tmp/backups -host neo4j-backup-slaves -port 6362
© . This site is unofficial and not affiliated with Neo4j, Inc.