知识库

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
© . All rights reserved.