知识库

在线备份的 HA Proxy 配置

我们试图实现什么?

应定期安排在线备份在生产集群上运行。您只需在一个实例上运行它,因为每个实例都有自己的数据库完整副本。由于完整备份还会运行一致性检查,并且副本本身会使用一些系统资源,因此建议在从属实例(在 HA 模式下)或跟随者或只读副本(在 CC 模式下)上运行此操作。

对于 增量备份 才能正常工作,您需要每次从同一个实例进行备份,并拥有上次备份的交易日志。如果您没有从同一个实例运行,存储将不匹配,并且将回退到进行完整备份。如果您想控制从哪个实例进行备份,您需要修改此示例,或者直接在不使用代理的情况下将备份直接到该实例。如果您愿意回退到完整备份,这种方法可能对您有效。

因果集群:将在线备份定向到跟随者或只读副本

下面的示例配置定义了一个前端,备份实用程序将连接到正在运行的数据库,以及一组实例来检查它们当前是否为从属实例。我们假设在 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 http://localhost: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

要从只读副本进行备份,请将 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 http://localhost: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