Skip to content

Database hot standby #4436

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 15, 2024
Merged

Database hot standby #4436

merged 3 commits into from
Aug 15, 2024

Conversation

andreyaksenov
Copy link
Contributor

@andreyaksenov andreyaksenov commented Aug 14, 2024

@andreyaksenov andreyaksenov linked an issue Aug 14, 2024 that may be closed by this pull request
@andreyaksenov andreyaksenov marked this pull request as ready for review August 14, 2024 12:43
Copy link
Member

@Totktonada Totktonada left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@andreyaksenov andreyaksenov requested a review from p7nov August 14, 2024 13:14
Copy link
Contributor

@p7nov p7nov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

This mode can be used to provide failover without :ref:`replication <replication>`.

Suppose there are two cluster applications.
Each cluster has one instance with the same configuration:
Copy link
Contributor

@p7nov p7nov Aug 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't guess from this example the correct way to use this mode in multi-instance apps. Set it for all instances of two identical apps? Or maybe select a subset of instances to run in standby?
Not sure though if the deeper explanation is needed in the reference. Perhaps somewhere in a task-oriented page in the admin's guide (out of this PR's scope).

Copy link
Contributor Author

@andreyaksenov andreyaksenov Aug 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't guess from this example the correct way to use this mode in multi-instance apps.

The correct way is using two cluster applications with each cluster having one instance. And the GitHub examples at the end should help a reader. I agree that we can document this feature better. But, honestly, I don't think it is a very popular use case for Tarantool (maybe, I'm wrong).

Set it for all instances of two identical apps? Or maybe select a subset of instances to run in standby?

This sounds like a feature request for a new configuration approach. For example, we can allow a user to add two instances, set replication.failover to smth like hot_standby, and provide the same path to WALs/snapshots for both instances. But still not sure that this scenario might be popular. cc @Totktonada


* If :ref:`wal.mode <configuration_reference_wal_mode>` is set to ``none``.
* If :ref:`wal.dir_rescan_delay <configuration_reference_wal_dir_rescan_delay>` is set to a large value on macOS or FreeBSD. On these platforms, the hot standby mode is designed so that the loop repeats every ``wal.dir_rescan_delay`` seconds.
* If spaces are created with :ref:`engine <space_opts_engine>` set to ``vinyl``.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old wording was clearer:
for spaces created with engine = ‘vinyl’

Now it's ambiguous:

  • if there are vinyl spaces?
  • if all spaces are vinyl?
  • has no effect only on vinyl spaces?

@andreyaksenov andreyaksenov merged commit 56a20bf into latest Aug 15, 2024
1 check failed
@andreyaksenov andreyaksenov deleted the database-hot-standby branch August 15, 2024 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Config] Document the 'database.hot_standby' option
3 participants