tarantool / tarantool/doc

recovery-point-manager role

Open Beginner friendly
#5,700 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
CSS
Stars
15
Forks
49
Avg merge
1d 13h
Merged PRs (30d)
3

Description

The built-in roles.recovery-point-manager role periodically creates
recovery points (see box.backup.recovery_point.create()) across a
cluster from the declarative configuration. Enable it via roles and
configure it under roles_cfg.

Role-level options (defaults inherited by every manager):

  • backend (string) -- the default backend type. Resolved to the
    module roles.recovery-point-manager.backends..
  • backends_cfg (map) -- per-backend-type config, keyed by the backend
    type name (for example, net-replicaset). The value is that
    backend's own configuration.
  • create.by.interval (number) -- seconds between attempts
    (default 600).
  • create.timeout (number) -- per-attempt timeout in seconds
    (default 300).
  • managers (map) -- the managers to run, keyed by a user-chosen name.
    Omitting managers runs a single manager named default; an
    explicit empty map runs none.

Per-manager options (under managers.<name>), each overriding the
role-level default:

  • backend (string) -- the backend type for this manager.
  • backend_cfg (table) -- the configuration of this manager's backend
    type (un-keyed, unlike the role-level backends_cfg). It deep-merges
    onto the role-level backends_cfg[<backend>], the manager winning.
  • create.by.interval (number) -- seconds between attempts.
  • create.timeout (number) -- per-attempt timeout in seconds.

The built-in net-replicaset backend creates a recovery point on a
remote replicaset's leader over net.replicaset. Its backend_cfg:

  • target (string, required) -- the name of the target replicaset in
    the cluster configuration.
  • login (string) -- the user the backend connects as. When omitted,
    the identity is taken from iproto.advertise.sharding, then
    iproto.advertise.peer.
  • password (string) -- the password for login. When omitted, it is
    resolved from the credentials of that user. Cannot be set without
    login.
  • params (table, Enterprise Edition) -- the connection transport:
    transport, ssl_key_file, ssl_cert_file, ssl_ca_file, ssl_ciphers,
    ssl_password, ssl_password_file.

The login user needs only the minimum privilege to create recovery
points on the target: execute on the box.backup.recovery_point.create
lua_call. A dedicated user with nothing else is the recommended setup:

credentials:
  users:
    backup_user:
      password: secret_backup
      privileges:
        - permissions: [execute]
          lua_call: ['box.backup.recovery_point.create']

Example:

roles: [roles.recovery-point-manager]
roles_cfg:
  roles.recovery-point-manager:
    backend: net-replicaset
    create:
      by:
        interval: 300
    backends_cfg:
      net-replicaset:
        login: backup_user
    managers:
      rs_001:
        backend_cfg:
          target: replicaset-001

Requested by @Serpentian in https://github.com/tarantool/tarantool/commit/9398bba1d7284cccba00a7518feee16d0073d57a.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start from the recovery-point-manager role and the box.backup.recovery_point.create entry point described in the issue. Document the role-level and per-manager options, net-replicaset backend settings, required privilege, and YAML example; done means the configuration behavior and example are covered clearly in the relevant documentation.

Written by the indexing model from the issue text.

Assessment

Domain
documentation
Issue type
Documentation
Difficulty
2/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.