From 9a8fed7038a1bcae2beb3650e1de78b1791432f1 Mon Sep 17 00:00:00 2001 From: Everett Pompeii Date: Fri, 18 Sep 2026 05:55:43 +0000 Subject: [PATCH] Remove the on demand database backup and database.data_store The POST /v0/server/backup endpoint, the bencher server backup CLI subcommand, and the database.data_store server config section are gone. Continuous replication under plus.disaster_recovery is the supported path, so bencher_schema no longer depends on the AWS SDK. A config that still carries database.data_store is ignored. --- .github/workflows/backup.yml | 33 --- Cargo.lock | 40 --- Cargo.toml | 2 - lib/api_server/src/backup.rs | 55 ---- lib/api_server/src/lib.rs | 3 - lib/api_server/tests/backup.rs | 82 ------ lib/bencher_api_tests/src/context.rs | 2 - lib/bencher_client/src/lib.rs | 1 - lib/bencher_config/src/config_tx.rs | 9 - lib/bencher_config/src/lib.rs | 1 - lib/bencher_json/src/lib.rs | 1 - lib/bencher_json/src/system/backup.rs | 32 --- .../src/system/config/database.rs | 55 ++-- lib/bencher_json/src/system/config/mod.rs | 3 +- lib/bencher_json/src/system/mod.rs | 1 - lib/bencher_schema/Cargo.toml | 9 +- lib/bencher_schema/src/context/database.rs | 243 +----------------- lib/bencher_schema/src/context/mod.rs | 2 +- lib/bencher_schema/src/model/server/backup.rs | 219 ---------------- lib/bencher_schema/src/model/server/mod.rs | 2 - plus/bencher_oci_storage/Cargo.toml | 1 - services/api/openapi.json | 154 ----------- .../src/bencher/sub/system/server/backup.rs | 70 ----- .../cli/src/bencher/sub/system/server/mod.rs | 4 - services/cli/src/parser/system/server.rs | 30 +-- .../bencher-self-hosted/de/backups.mdx | 17 -- .../de/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/de/cli/compress.mdx | 4 - .../bencher-self-hosted/de/cli/data-store.mdx | 12 - .../bencher-self-hosted/de/cli/host.mdx | 4 - .../bencher-self-hosted/de/cli/key.mdx | 4 - .../bencher-self-hosted/de/cli/remove.mdx | 4 - .../bencher-self-hosted/de/cli/token.mdx | 8 - .../de/disaster-recovery.mdx | 2 +- .../bencher-self-hosted/en/backups.mdx | 17 -- .../en/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/en/cli/compress.mdx | 4 - .../bencher-self-hosted/en/cli/data-store.mdx | 12 - .../bencher-self-hosted/en/cli/host.mdx | 4 - .../bencher-self-hosted/en/cli/key.mdx | 5 - .../bencher-self-hosted/en/cli/remove.mdx | 4 - .../bencher-self-hosted/en/cli/token.mdx | 9 - .../en/disaster-recovery.mdx | 3 +- .../bencher-self-hosted/es/backups.mdx | 17 -- .../es/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/es/cli/compress.mdx | 4 - .../bencher-self-hosted/es/cli/data-store.mdx | 11 - .../bencher-self-hosted/es/cli/host.mdx | 4 - .../bencher-self-hosted/es/cli/key.mdx | 3 - .../bencher-self-hosted/es/cli/remove.mdx | 3 - .../bencher-self-hosted/es/cli/token.mdx | 7 - .../es/disaster-recovery.mdx | 3 +- .../bencher-self-hosted/fr/backups.mdx | 17 -- .../fr/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/fr/cli/compress.mdx | 4 - .../bencher-self-hosted/fr/cli/data-store.mdx | 9 - .../bencher-self-hosted/fr/cli/host.mdx | 4 - .../bencher-self-hosted/fr/cli/key.mdx | 3 - .../bencher-self-hosted/fr/cli/remove.mdx | 4 - .../bencher-self-hosted/fr/cli/token.mdx | 7 - .../fr/disaster-recovery.mdx | 2 +- .../bencher-self-hosted/ja/backups.mdx | 17 -- .../ja/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/ja/cli/compress.mdx | 4 - .../bencher-self-hosted/ja/cli/data-store.mdx | 10 - .../bencher-self-hosted/ja/cli/host.mdx | 4 - .../bencher-self-hosted/ja/cli/key.mdx | 4 - .../bencher-self-hosted/ja/cli/remove.mdx | 4 - .../bencher-self-hosted/ja/cli/token.mdx | 8 - .../ja/disaster-recovery.mdx | 2 +- .../bencher-self-hosted/ko/backups.mdx | 15 -- .../ko/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/ko/cli/compress.mdx | 3 - .../bencher-self-hosted/ko/cli/data-store.mdx | 11 - .../bencher-self-hosted/ko/cli/host.mdx | 3 - .../bencher-self-hosted/ko/cli/key.mdx | 4 - .../bencher-self-hosted/ko/cli/remove.mdx | 4 - .../bencher-self-hosted/ko/cli/token.mdx | 8 - .../ko/disaster-recovery.mdx | 2 +- .../bencher-self-hosted/pt/backups.mdx | 17 -- .../pt/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/pt/cli/compress.mdx | 4 - .../bencher-self-hosted/pt/cli/data-store.mdx | 12 - .../bencher-self-hosted/pt/cli/host.mdx | 4 - .../bencher-self-hosted/pt/cli/key.mdx | 3 - .../bencher-self-hosted/pt/cli/remove.mdx | 4 - .../bencher-self-hosted/pt/cli/token.mdx | 7 - .../pt/disaster-recovery.mdx | 3 +- .../bencher-self-hosted/ru/backups.mdx | 17 -- .../ru/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/ru/cli/compress.mdx | 4 - .../bencher-self-hosted/ru/cli/data-store.mdx | 12 - .../bencher-self-hosted/ru/cli/host.mdx | 4 - .../bencher-self-hosted/ru/cli/key.mdx | 3 - .../bencher-self-hosted/ru/cli/remove.mdx | 4 - .../bencher-self-hosted/ru/cli/token.mdx | 7 - .../ru/disaster-recovery.mdx | 2 +- .../bencher-self-hosted/zh/backups.mdx | 17 -- .../zh/bencher-server-backup.mdx | 24 -- .../bencher-self-hosted/zh/cli/compress.mdx | 4 - .../bencher-self-hosted/zh/cli/data-store.mdx | 11 - .../bencher-self-hosted/zh/cli/host.mdx | 4 - .../bencher-self-hosted/zh/cli/key.mdx | 3 - .../bencher-self-hosted/zh/cli/remove.mdx | 4 - .../bencher-self-hosted/zh/cli/token.mdx | 7 - .../zh/disaster-recovery.mdx | 2 +- .../docs-reference/changelog/en/changelog.mdx | 1 + .../server-config/de/database.mdx | 4 - .../de/plus-disaster-recovery.mdx | 1 - .../server-config/en/database.mdx | 4 - .../en/plus-disaster-recovery.mdx | 1 - .../server-config/es/database.mdx | 4 - .../es/plus-disaster-recovery.mdx | 1 - .../docs-reference/server-config/example.mdx | 6 - .../server-config/fr/database.mdx | 4 - .../fr/plus-disaster-recovery.mdx | 1 - .../server-config/ja/database.mdx | 4 - .../ja/plus-disaster-recovery.mdx | 1 - .../server-config/ko/database.mdx | 4 - .../ko/plus-disaster-recovery.mdx | 1 - .../server-config/pt/database.mdx | 4 - .../pt/plus-disaster-recovery.mdx | 1 - .../server-config/ru/database.mdx | 4 - .../ru/plus-disaster-recovery.mdx | 1 - .../server-config/zh/database.mdx | 4 - .../zh/plus-disaster-recovery.mdx | 1 - .../docs/api/BodyParametersInner.astro | 14 +- .../console/src/content/api-server/server.mdx | 4 - .../de/bencher-self-hosted.mdx | 2 - .../en/bencher-self-hosted.mdx | 2 - .../es/bencher-self-hosted.mdx | 2 - .../fr/bencher-self-hosted.mdx | 2 - .../ja/bencher-self-hosted.mdx | 2 - .../ko/bencher-self-hosted.mdx | 2 - .../pt/bencher-self-hosted.mdx | 2 - .../ru/bencher-self-hosted.mdx | 2 - .../zh/bencher-self-hosted.mdx | 2 - skills/bencher/self-hosted.md | 3 +- 138 files changed, 48 insertions(+), 1790 deletions(-) delete mode 100644 .github/workflows/backup.yml delete mode 100644 lib/api_server/src/backup.rs delete mode 100644 lib/api_server/tests/backup.rs delete mode 100644 lib/bencher_json/src/system/backup.rs delete mode 100644 lib/bencher_schema/src/model/server/backup.rs delete mode 100644 services/cli/src/bencher/sub/system/server/backup.rs delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/token.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/backups.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/bencher-server-backup.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/compress.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/data-store.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/host.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/key.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/remove.mdx delete mode 100644 services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/token.mdx diff --git a/.github/workflows/backup.yml b/.github/workflows/backup.yml deleted file mode 100644 index ef56e27254..0000000000 --- a/.github/workflows/backup.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Backup - -on: - workflow_dispatch: - -env: - CARGO_TERM_COLOR: always - MOLD_VERSION: 2.34.1 - -jobs: - backup_database: - name: Backup Database - permissions: - contents: read - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - persist-credentials: false - - uses: rui314/setup-mold@10ca16bf91dc22e05ebdc935cad9c75ea248f621 # v1 - with: - mold-version: ${{ env.MOLD_VERSION }} - - name: Install `bencher` CLI - run: cargo install --debug --path services/cli --locked --force - - name: Backup API Server Database - run: | - bencher server backup \ - --host https://api.bencher.dev \ - --token ${{ secrets.BENCHER_API_TOKEN_ADMIN }} \ - --compress \ - --data-store aws_s3 \ - --remove diff --git a/Cargo.lock b/Cargo.lock index ebec9b6669..b1057cd3b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1650,10 +1650,7 @@ dependencies = [ name = "bencher_schema" version = "0.6.13" dependencies = [ - "async-compression", "async-trait", - "aws-credential-types", - "aws-sdk-s3", "bencher_adapter", "bencher_billing", "bencher_bing_index", @@ -1687,7 +1684,6 @@ dependencies = [ "pretty_assertions", "regex", "reqwest", - "rusqlite", "sentry", "serde", "serde_json", @@ -3235,18 +3231,6 @@ dependencies = [ "zune-inflate", ] -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - -[[package]] -name = "fallible-streaming-iterator" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" - [[package]] name = "faster-hex" version = "0.10.0" @@ -4418,15 +4402,6 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" -[[package]] -name = "hashlink" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" -dependencies = [ - "hashbrown 0.16.1", -] - [[package]] name = "heapless" version = "0.8.0" @@ -7215,21 +7190,6 @@ dependencies = [ "url", ] -[[package]] -name = "rusqlite" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c93dd1c9683b438c392c492109cb702b8090b2bfc8fed6f6e4eb4523f17af3" -dependencies = [ - "bitflags 2.12.1", - "fallible-iterator", - "fallible-streaming-iterator", - "hashlink", - "libsqlite3-sys", - "smallvec", - "sqlite-wasm-rs", -] - [[package]] name = "rust_decimal" version = "1.42.0" diff --git a/Cargo.toml b/Cargo.toml index 3b04ae4ada..cbaab13fbe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -78,7 +78,6 @@ bencher_output_protocol = { path = "plus/bencher_output_protocol" } anyhow = "1.0" backhand = "0.25" assert_cmd = "2.2" -async-compression = "0.4" async-stripe = { version = "1.0.0-rc.6", default-features = false } async-stripe-billing = "1.0.0-rc.6" async-stripe-checkout = "1.0.0-rc.6" @@ -155,7 +154,6 @@ regex-lite = "0.1" reqwest = { version = "0.13", default-features = false } rmcp = { version = "2.2", default-features = false } rustls = { version = "0.23", default-features = false, features = ["aws_lc_rs"] } -rusqlite = "0.38" rust_decimal = "1.40" # ECMAScript `Number::toString` formatting, which is what RFC 8785 (JCS) requires ryu-js = "1.0" diff --git a/lib/api_server/src/backup.rs b/lib/api_server/src/backup.rs deleted file mode 100644 index 392e802d6c..0000000000 --- a/lib/api_server/src/backup.rs +++ /dev/null @@ -1,55 +0,0 @@ -use bencher_endpoint::{CorsResponse, Endpoint, Post, ResponseCreated}; -use bencher_json::{JsonBackup, JsonBackupCreated}; -use bencher_schema::{ - context::ApiContext, - error::bad_request_error, - model::{ - server::ServerBackup, - user::{admin::AdminUser, auth::BearerToken}, - }, -}; -use dropshot::{HttpError, RequestContext, TypedBody, endpoint}; - -#[endpoint { - method = OPTIONS, - path = "/v0/server/backup", - tags = ["server"] -}] -pub async fn server_backup_options( - _rqctx: RequestContext, - _body: TypedBody, -) -> Result { - Ok(Endpoint::cors(&[Post.into()])) -} - -/// Backup server -/// -/// Backup the API server database. -/// The user must be an admin on the server to use this route. -#[endpoint { - method = POST, - path = "/v0/server/backup", - tags = ["server"] -}] -pub async fn server_backup_post( - rqctx: RequestContext, - bearer_token: BearerToken, - body: TypedBody, -) -> Result, HttpError> { - let _admin_user = AdminUser::from_token(rqctx.context(), bearer_token).await?; - let json = post_inner(rqctx.context(), body.into_inner()).await?; - Ok(Post::auth_response_created(json)) -} - -async fn post_inner( - context: &ApiContext, - json_backup: JsonBackup, -) -> Result { - ServerBackup::run( - context.database.path.clone(), - context.database.data_store.as_ref(), - json_backup, - ) - .await - .map_err(bad_request_error) -} diff --git a/lib/api_server/src/lib.rs b/lib/api_server/src/lib.rs index 69a512a2f5..cbe335e7d7 100644 --- a/lib/api_server/src/lib.rs +++ b/lib/api_server/src/lib.rs @@ -6,7 +6,6 @@ use http as _; #[cfg(test)] use tokio as _; -mod backup; mod config; mod root; mod spec; @@ -36,13 +35,11 @@ impl bencher_endpoint::Registrar for Api { api_description.register(spec::server_spec_options)?; api_description.register(config::server_config_options)?; api_description.register(config::server_config_console_options)?; - api_description.register(backup::server_backup_options)?; } api_description.register(version::server_version_get)?; api_description.register(spec::server_spec_get)?; api_description.register(config::server_config_get)?; api_description.register(config::server_config_console_get)?; - api_description.register(backup::server_backup_post)?; #[cfg(feature = "plus")] { diff --git a/lib/api_server/tests/backup.rs b/lib/api_server/tests/backup.rs deleted file mode 100644 index 04dba1dc53..0000000000 --- a/lib/api_server/tests/backup.rs +++ /dev/null @@ -1,82 +0,0 @@ -#![expect( - unused_crate_dependencies, - clippy::tests_outside_test_module, - reason = "integration test file" -)] -//! Integration tests for server backup endpoint. - -use bencher_api_tests::TestServer; -use http::StatusCode; - -// POST /v0/server/backup - requires admin auth -#[tokio::test] -async fn backup_requires_auth() { - let server = TestServer::new().await; - - let resp = server - .client - .post(server.api_url("/v0/server/backup")) - .send() - .await - .expect("Request failed"); - - // Should require authentication - assert_eq!(resp.status(), StatusCode::BAD_REQUEST); -} - -// POST /v0/server/backup - non-admin cannot backup -#[tokio::test] -async fn backup_forbidden_for_non_admin() { - let server = TestServer::new().await; - // First user is admin - let _admin = server.signup("Admin User", "backupadmin@example.com").await; - // Second user is NOT admin - let user = server - .signup("Regular User", "backupuser@example.com") - .await; - - let body = serde_json::json!({}); - - let resp = server - .client - .post(server.api_url("/v0/server/backup")) - .header( - bencher_json::AUTHORIZATION, - bencher_json::bearer_header(&user.token), - ) - .json(&body) - .send() - .await - .expect("Request failed"); - - // Non-admin should be forbidden - assert_eq!(resp.status(), StatusCode::FORBIDDEN); -} - -// POST /v0/server/backup - admin can trigger backup -#[tokio::test] -async fn backup_as_admin() { - let server = TestServer::new().await; - // First user is admin - let admin = server.signup("Admin User", "adminbackup@example.com").await; - - let body = serde_json::json!({ - "compress": false, - "rm": false - }); - - let resp = server - .client - .post(server.api_url("/v0/server/backup")) - .header( - bencher_json::AUTHORIZATION, - bencher_json::bearer_header(&admin.token), - ) - .json(&body) - .send() - .await - .expect("Request failed"); - - // Admin should be able to trigger backup - assert_eq!(resp.status(), StatusCode::CREATED); -} diff --git a/lib/bencher_api_tests/src/context.rs b/lib/bencher_api_tests/src/context.rs index a7550fa04b..9db2f43db2 100644 --- a/lib/bencher_api_tests/src/context.rs +++ b/lib/bencher_api_tests/src/context.rs @@ -158,7 +158,6 @@ impl TestServer { public_pool, auth_pool, connection: Arc::new(Mutex::new(conn)), - data_store: None, }; let request_body_max_bytes = max_body_size.map_or(DEFAULT_MAX_BODY_SIZE, |s| { @@ -261,7 +260,6 @@ impl TestServer { public_pool, auth_pool, connection: Arc::new(Mutex::new(conn)), - data_store: None, }; let _ = (upload_timeout, max_body_size); diff --git a/lib/bencher_client/src/lib.rs b/lib/bencher_client/src/lib.rs index 7fcd1bdd64..9652d1b842 100644 --- a/lib/bencher_client/src/lib.rs +++ b/lib/bencher_client/src/lib.rs @@ -192,7 +192,6 @@ try_from_client!( JsonAccept, JsonAuthAck, JsonAuthUser, - JsonBackupCreated, JsonConfig, JsonConsole, JsonApiVersion, diff --git a/lib/bencher_config/src/config_tx.rs b/lib/bencher_config/src/config_tx.rs index c8ebc80c84..56c90e0c02 100644 --- a/lib/bencher_config/src/config_tx.rs +++ b/lib/bencher_config/src/config_tx.rs @@ -71,8 +71,6 @@ pub enum ConfigTxError { DatabaseConnection(String, diesel::ConnectionError), #[error("Failed to create database connection pool ({0}): {1}")] DatabaseConnectionPool(String, diesel::r2d2::PoolError), - #[error("Failed to parse data store: {0}")] - DataStore(bencher_schema::context::DataStoreError), #[error("Failed to register endpoint: {0}")] Register(dropshot::ApiDescriptionRegisterError), #[error("Failed to create server: {0}")] @@ -257,19 +255,12 @@ async fn into_context( let public_pool = connection_pool(log, &database_path, busy_timeout)?; let auth_pool = connection_pool(log, &database_path, busy_timeout)?; - let data_store = if let Some(data_store) = json_database.data_store { - Some(data_store.try_into().map_err(ConfigTxError::DataStore)?) - } else { - None - }; - let database = Database { path: json_database.file, busy_timeout, public_pool, auth_pool, connection: Arc::new(tokio::sync::Mutex::new(database_connection)), - data_store, }; info!(log, "Loading secret key"); diff --git a/lib/bencher_config/src/lib.rs b/lib/bencher_config/src/lib.rs index c0c83c33f9..e04e119ced 100644 --- a/lib/bencher_config/src/lib.rs +++ b/lib/bencher_config/src/lib.rs @@ -229,7 +229,6 @@ impl Default for Config { }, database: JsonDatabase { file: DEFAULT_DB_PATH.into(), - data_store: None, busy_timeout: None, cache_size: None, }, diff --git a/lib/bencher_json/src/lib.rs b/lib/bencher_json/src/lib.rs index 376c1b71d0..a2767ccbbb 100644 --- a/lib/bencher_json/src/lib.rs +++ b/lib/bencher_json/src/lib.rs @@ -116,7 +116,6 @@ pub use spec::{ }; pub use system::{ auth::{JsonAccept, JsonAuthAck, JsonAuthUser, JsonConfirm, JsonLogin, JsonSignup}, - backup::{JsonBackup, JsonBackupCreated}, config::{JsonConfig, JsonConsole}, spec::JsonOpenApiSpec, version::JsonApiVersion, diff --git a/lib/bencher_json/src/system/backup.rs b/lib/bencher_json/src/system/backup.rs deleted file mode 100644 index eb41911d88..0000000000 --- a/lib/bencher_json/src/system/backup.rs +++ /dev/null @@ -1,32 +0,0 @@ -use bencher_valid::DateTime; -#[cfg(feature = "schema")] -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "schema", derive(JsonSchema))] -pub struct JsonBackup { - /// Compress the database backup with gzip. - /// This operation runs first. - pub compress: Option, - /// Save the database backup to this data store. - /// This operation runs second. - pub data_store: Option, - /// Remove the local copy of the database backup. - /// This operation runs third. - #[serde(alias = "rm")] - pub remove: Option, -} - -#[derive(Debug, Clone, Deserialize, Serialize)] -#[cfg_attr(feature = "schema", derive(JsonSchema))] -#[serde(rename_all = "snake_case")] -pub enum JsonDataStore { - AwsS3, -} - -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -#[cfg_attr(feature = "schema", derive(JsonSchema))] -pub struct JsonBackupCreated { - pub created: DateTime, -} diff --git a/lib/bencher_json/src/system/config/database.rs b/lib/bencher_json/src/system/config/database.rs index bd76ca664a..03a0d5de08 100644 --- a/lib/bencher_json/src/system/config/database.rs +++ b/lib/bencher_json/src/system/config/database.rs @@ -1,6 +1,5 @@ use std::{num::NonZeroU32, path::PathBuf}; -use bencher_valid::{Sanitize, Secret}; #[cfg(feature = "schema")] use schemars::JsonSchema; use serde::{Deserialize, Serialize}; @@ -9,8 +8,6 @@ use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "schema", derive(JsonSchema))] pub struct JsonDatabase { pub file: PathBuf, - #[serde(skip_serializing_if = "Option::is_none")] - pub data_store: Option, /// The database busy timeout in milliseconds #[serde(skip_serializing_if = "Option::is_none")] pub busy_timeout: Option, @@ -19,31 +16,35 @@ pub struct JsonDatabase { pub cache_size: Option, } -impl Sanitize for JsonDatabase { - fn sanitize(&mut self) { - self.data_store.sanitize(); - } -} +#[cfg(test)] +mod tests { + use std::path::PathBuf; -#[derive(Debug, Clone, Serialize, Deserialize)] -#[cfg_attr(feature = "schema", derive(JsonSchema))] -#[serde(tag = "service", rename_all = "snake_case")] -pub enum DataStore { - AwsS3 { - access_key_id: String, - secret_access_key: Secret, - // arn:aws:s3:::accesspoint/[/backup-dir-path] - // https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html - access_point: String, - }, -} + use super::JsonDatabase; -impl Sanitize for DataStore { - fn sanitize(&mut self) { - match self { - Self::AwsS3 { - secret_access_key, .. - } => secret_access_key.sanitize(), - } + #[test] + fn data_store_is_ignored() { + let database: JsonDatabase = serde_json::from_str( + r#"{ + "file": "/var/lib/bencher/data/bencher.db", + "data_store": { + "service": "aws_s3", + "access_key_id": "access_key_id", + "secret_access_key": "secret_access_key", + "access_point": "arn:aws:s3:us-east-1:000000000000:accesspoint/backup" + }, + "busy_timeout": 5000, + "cache_size": 1000 + }"#, + ) + .unwrap(); + let JsonDatabase { + file, + busy_timeout, + cache_size, + } = database; + assert_eq!(file, PathBuf::from("/var/lib/bencher/data/bencher.db")); + assert_eq!(busy_timeout, Some(5000)); + assert_eq!(cache_size.map(u32::from), Some(1000)); } } diff --git a/lib/bencher_json/src/system/config/mod.rs b/lib/bencher_json/src/system/config/mod.rs index 8444bd9fa8..cb8d2320ef 100644 --- a/lib/bencher_json/src/system/config/mod.rs +++ b/lib/bencher_json/src/system/config/mod.rs @@ -12,7 +12,7 @@ mod server; mod smtp; pub use console::JsonConsole; -pub use database::{DataStore, JsonDatabase}; +pub use database::JsonDatabase; pub use logging::{IfExists, JsonLogging, LogLevel, ServerLog}; #[cfg(feature = "plus")] pub use plus::{ @@ -58,7 +58,6 @@ pub struct JsonConfig { impl Sanitize for JsonConfig { fn sanitize(&mut self) { self.security.sanitize(); - self.database.sanitize(); self.smtp.sanitize(); #[cfg(feature = "plus")] self.plus.sanitize(); diff --git a/lib/bencher_json/src/system/mod.rs b/lib/bencher_json/src/system/mod.rs index 1acfc0478f..7b0d71f287 100644 --- a/lib/bencher_json/src/system/mod.rs +++ b/lib/bencher_json/src/system/mod.rs @@ -1,5 +1,4 @@ pub mod auth; -pub mod backup; pub mod config; pub mod payment; pub mod server; diff --git a/lib/bencher_schema/Cargo.toml b/lib/bencher_schema/Cargo.toml index c64112c1af..59dc9e6f28 100644 --- a/lib/bencher_schema/Cargo.toml +++ b/lib/bencher_schema/Cargo.toml @@ -15,6 +15,7 @@ plus = [ "dep:bencher_google_index", "dep:bencher_oci_storage", "dep:bencher_rate_limiter", + "dep:camino", "dep:http", "dep:reqwest", "dep:serde", @@ -34,10 +35,7 @@ sentry = ["dep:sentry"] otel = ["dep:bencher_otel", "bencher_recaptcha?/otel"] [dependencies] -async-compression = { workspace = true, features = ["tokio", "gzip"] } async-trait.workspace = true -aws-credential-types.workspace = true -aws-sdk-s3.workspace = true bencher_adapter.workspace = true bencher_billing = { workspace = true, optional = true } bencher_bing_index = { workspace = true, optional = true } @@ -55,7 +53,7 @@ bencher_rank.workspace = true bencher_rbac.workspace = true bencher_recaptcha = { workspace = true, optional = true } bencher_token.workspace = true -camino.workspace = true +camino = { workspace = true, optional = true } chrono.workspace = true css-inline.workspace = true dashmap.workspace = true @@ -70,7 +68,6 @@ http = { workspace = true, optional = true } libsqlite3-sys.workspace = true mail-send.workspace = true regex.workspace = true -rusqlite = { workspace = true, features = ["backup"] } serde = { workspace = true, optional = true } serde_json = { workspace = true, optional = true } serde_urlencoded.workspace = true @@ -79,7 +76,7 @@ reqwest = { workspace = true, optional = true, features = ["query", "rustls-no-p sentry = { workspace = true, optional = true } slog.workspace = true thiserror.workspace = true -tokio = { workspace = true, features = ["fs", "rt-multi-thread", "time"] } +tokio = { workspace = true, features = ["rt-multi-thread", "time"] } tokio-rustls.workspace = true tokio-util = { workspace = true, optional = true } url.workspace = true diff --git a/lib/bencher_schema/src/context/database.rs b/lib/bencher_schema/src/context/database.rs index 351af9c36c..b94a85a4dd 100644 --- a/lib/bencher_schema/src/context/database.rs +++ b/lib/bencher_schema/src/context/database.rs @@ -1,11 +1,5 @@ -use std::{ - path::{Path, PathBuf}, - str::FromStr, - sync::Arc, -}; +use std::{path::PathBuf, sync::Arc}; -use bencher_json::{Secret, system::config::DataStore as DataStoreConfig}; -use camino::Utf8PathBuf; use diesel::r2d2::{ConnectionManager, Pool, PooledConnection}; use dropshot::HttpError; @@ -24,7 +18,6 @@ pub struct Database { pub auth_pool: Pool>, /// The database connection for write operations. pub connection: Arc>, - pub data_store: Option, } impl Database { @@ -72,237 +65,3 @@ impl Database { })? } } - -pub enum DataStore { - AwsS3(AwsS3), -} - -pub struct AwsS3 { - client: aws_sdk_s3::Client, - s3_arn: S3Arn, -} - -#[derive(Debug, thiserror::Error)] -pub enum DataStoreError { - #[error("Failed to configure data store: {0}")] - DataStore(String), - #[error("Failed to use AWS S3: {0}")] - AwsS3(String), - #[error("Failed to parse S3 ARN ({access_point}): {error}")] - S3Arn { - access_point: String, - error: S3ArnError, - }, -} - -impl TryFrom for DataStore { - type Error = DataStoreError; - - fn try_from(data_store: DataStoreConfig) -> Result { - match data_store { - DataStoreConfig::AwsS3 { - access_key_id, - secret_access_key, - access_point, - } => AwsS3::new(access_key_id, secret_access_key, &access_point).map(Self::AwsS3), - } - } -} - -impl DataStore { - pub async fn backup(&self, source_path: &Path, file_name: &str) -> Result<(), DataStoreError> { - match self { - Self::AwsS3(aws_s3) => aws_s3.backup(source_path, file_name).await, - } - } -} - -impl AwsS3 { - fn new( - access_key_id: String, - secret_access_key: Secret, - access_point: &str, - ) -> Result { - let credentials = aws_credential_types::Credentials::new( - access_key_id, - secret_access_key, - None, - None, - "bencher", - ); - let credentials_provider = - aws_credential_types::provider::SharedCredentialsProvider::new(credentials); - let s3_arn: S3Arn = access_point - .parse() - .map_err(|error| DataStoreError::S3Arn { - access_point: access_point.to_owned(), - error, - })?; - - let config = aws_sdk_s3::Config::builder() - .credentials_provider(credentials_provider) - .region(aws_sdk_s3::config::Region::new(s3_arn.region.clone())) - .build(); - let client = aws_sdk_s3::Client::from_conf(config); - - Ok(Self { client, s3_arn }) - } - - async fn backup(&self, source_path: &Path, file_name: &str) -> Result<(), DataStoreError> { - let key = if let Some(bucket_path) = &self.s3_arn.bucket_path { - Utf8PathBuf::from(bucket_path).join(file_name).to_string() - } else { - file_name.to_owned() - }; - - let body = aws_sdk_s3::primitives::ByteStream::from_path(source_path) - .await - .map_err(|e| DataStoreError::AwsS3(e.to_string()))?; - - self.client - .put_object() - .bucket(self.s3_arn.bucket_arn()) - .key(key) - .body(body) - .send() - .await - .map_err(|e| DataStoreError::AwsS3(e.to_string()))?; - - Ok(()) - } -} - -// https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html -struct S3Arn { - partition: String, - region: String, - account_id: String, - bucket_name: String, - bucket_path: Option, -} - -#[derive(Debug, thiserror::Error)] -pub enum S3ArnError { - #[error("Missing S3 ARN prefix")] - NoPrefix, - #[error("Invalid S3 ARN prefix: {0}")] - BadPrefix(String), - #[error("Missing S3 ARN partition")] - NoPartition, - #[error("Missing S3 ARN service")] - NoService, - #[error("Invalid S3 ARN service: {0}")] - BadService(String), - #[error("Missing S3 ARN region")] - NoRegion, - #[error("Missing S3 ARN account ID")] - NoAccountId, - #[error("Missing S3 ARN resource")] - NoResource, - #[error("Unexpected extra data in S3 ARN: {0:?}")] - Remainder(Vec), - #[error("Missing S3 ARN access point")] - NoAccessPoint, - #[error("Invalid S3 ARN access point: {0}")] - BadAccessPoint(String), - #[error("Missing S3 ARN bucket name")] - NoBucketName, - #[error("Invalid S3 ARN bucket name: {0}")] - BadBucketName(String), -} - -const ARN_PREFIX: &str = "arn"; -const S3_SERVICE: &str = "s3"; -const ACCESSPOINT: &str = "accesspoint"; - -impl FromStr for S3Arn { - type Err = S3ArnError; - - fn from_str(arn: &str) -> Result { - let mut parts = arn.splitn(6, ':'); - let arn_part = parts.next().ok_or(S3ArnError::NoPrefix)?; - if arn_part != ARN_PREFIX { - return Err(S3ArnError::BadPrefix(arn_part.to_owned())); - } - let partition = parts.next().ok_or(S3ArnError::NoPartition)?.to_owned(); - let service = parts.next().ok_or(S3ArnError::NoService)?.to_owned(); - if service != S3_SERVICE { - return Err(S3ArnError::BadService(service)); - } - let region = parts.next().ok_or(S3ArnError::NoRegion)?.to_owned(); - let account_id = parts.next().ok_or(S3ArnError::NoAccountId)?.to_owned(); - let resource = parts.next().ok_or(S3ArnError::NoResource)?.to_owned(); - - let remainder = parts.map(ToOwned::to_owned).collect::>(); - if !remainder.is_empty() { - return Err(S3ArnError::Remainder(remainder)); - } - - let (accesspoint, resource_path) = - resource.split_once('/').ok_or(S3ArnError::NoAccessPoint)?; - if accesspoint != ACCESSPOINT { - return Err(S3ArnError::BadAccessPoint(accesspoint.to_owned())); - } - - let (bucket_name, bucket_path) = - if let Some((bucket_name, bucket_path)) = resource_path.split_once('/') { - (bucket_name.to_owned(), Some(bucket_path.to_owned())) - } else { - (resource_path.to_owned(), None) - }; - - if bucket_name.is_empty() { - return Err(S3ArnError::BadBucketName(bucket_name)); - } - - Ok(Self { - partition, - region, - account_id, - bucket_name, - bucket_path, - }) - } -} - -impl S3Arn { - fn bucket_arn(&self) -> String { - format!( - "{ARN_PREFIX}:{partition}:{S3_SERVICE}:{region}:{account_id}:{ACCESSPOINT}/{bucket_name}", - partition = self.partition, - region = self.region, - account_id = self.account_id, - bucket_name = self.bucket_name - ) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - const TEST_BUCKET: &str = "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket"; - - #[test] - fn s3_arn_from_str_no_path() { - let arn = S3Arn::from_str(TEST_BUCKET).unwrap(); - assert_eq!(arn.partition, "aws"); - assert_eq!(arn.region, "some-region-1"); - assert_eq!(arn.account_id, "123456789"); - assert_eq!(arn.bucket_name, "my-bucket"); - assert!(arn.bucket_path.is_none()); - assert_eq!(arn.bucket_arn(), TEST_BUCKET); - } - - #[test] - fn s3_arn_from_str_with_path() { - let arn_str = format!("{TEST_BUCKET}/path/to/backup/dir"); - let arn = S3Arn::from_str(&arn_str).unwrap(); - assert_eq!(arn.partition, "aws"); - assert_eq!(arn.region, "some-region-1"); - assert_eq!(arn.account_id, "123456789"); - assert_eq!(arn.bucket_name, "my-bucket"); - assert_eq!(arn.bucket_path, Some("path/to/backup/dir".into())); - assert_eq!(arn.bucket_arn(), TEST_BUCKET); - } -} diff --git a/lib/bencher_schema/src/context/mod.rs b/lib/bencher_schema/src/context/mod.rs index 7877616f32..ed9f38ec24 100644 --- a/lib/bencher_schema/src/context/mod.rs +++ b/lib/bencher_schema/src/context/mod.rs @@ -40,7 +40,7 @@ mod stats; use bencher_recaptcha::RecaptchaClient; #[cfg(feature = "plus")] pub use callbacks::Callbacks; -pub use database::{DataStore, DataStoreError, Database, DbConnection}; +pub use database::{Database, DbConnection}; #[cfg(feature = "plus")] pub use heartbeat_tasks::HeartbeatTasks; #[cfg(feature = "plus")] diff --git a/lib/bencher_schema/src/model/server/backup.rs b/lib/bencher_schema/src/model/server/backup.rs deleted file mode 100644 index d90ac02801..0000000000 --- a/lib/bencher_schema/src/model/server/backup.rs +++ /dev/null @@ -1,219 +0,0 @@ -use std::{ffi::OsStr, path::PathBuf}; - -use async_compression::tokio::write::GzipEncoder; -use bencher_json::{DateTime, JsonBackup, JsonBackupCreated, system::backup::JsonDataStore}; -use chrono::Utc; -use tokio::{ - fs::remove_file, - io::{AsyncReadExt as _, AsyncWriteExt as _, BufReader, BufWriter}, -}; - -use crate::context::DataStore; - -// https://www.sqlite.org/pgszchng2016.html -const SQLITE_PAGE_SIZE: usize = 4096; -const PAUSE_BETWEEN_PAGES: std::time::Duration = std::time::Duration::from_millis(100); -// We want the backup to be done in a reasonable time, ~10 minutes. -// Sqlite page size * 10 minutes * 60 seconds * 10 iterations of 100 milliseconds pauses per second -const PAGES_PER_STEP_COEFFICIENT: usize = SQLITE_PAGE_SIZE * 10 * 60 * 10; - -pub struct ServerBackup { - pub file_path: PathBuf, - pub file_name: String, - pub created: DateTime, -} - -#[derive(Debug, thiserror::Error)] -pub enum ServerBackupError { - #[error("Failed to get source database size ({path}): {error}")] - GetSourceDatabaseSize { - path: PathBuf, - error: std::io::Error, - }, - #[error("Failed to open source database ({path}): {error}")] - OpenSourceDatabase { - path: PathBuf, - error: rusqlite::Error, - }, - #[error("Failed to open destination database ({path}): {error}")] - OpenDestinationDatabase { - path: PathBuf, - error: rusqlite::Error, - }, - #[error("Failed to create online backup: {0}")] - CreateBackup(rusqlite::Error), - #[error("Failed to run online backup: {0}")] - RunBackup(rusqlite::Error), - #[error("Failed to join backup task: {0}")] - JoinBackup(tokio::task::JoinError), - #[error("Failed to open backup file: {0}")] - OpenBackupFile(std::io::Error), - #[error("Failed to create compressed file: {0}")] - CreateZipFile(std::io::Error), - #[error("Failed to write to compressed file: {0}")] - WriteZipFile(std::io::Error), - #[error("Failed to close compressed file: {0}")] - CloseZipFile(std::io::Error), - #[error("Failed to remove backup file: {0}")] - RmBackupFile(std::io::Error), - #[error("Failed to remove compressed file: {0}")] - RmZipFile(std::io::Error), - #[error("{0}")] - DataStore(crate::context::DataStoreError), - #[error("No data store")] - NoDataStore, -} - -impl ServerBackup { - pub async fn run( - file_path: PathBuf, - data_store: Option<&DataStore>, - json_backup: JsonBackup, - ) -> Result { - // Create a database backup - let Self { - file_path: backup_file_path, - file_name: backup_file_name, - created, - } = tokio::task::spawn_blocking(move || Self::backup_database(&file_path)) - .await - .map_err(ServerBackupError::JoinBackup)??; - - // Compress the database backup - let compress = json_backup.compress.unwrap_or_default(); - let (source_path, file_name) = if compress { - compress_database(backup_file_path, &backup_file_name).await? - } else { - (backup_file_path, backup_file_name) - }; - - // Store the database backup in AWS S3 - if let Some(JsonDataStore::AwsS3) = json_backup.data_store { - if let Some(data_store) = data_store { - data_store - .backup(&source_path, &file_name) - .await - .map_err(ServerBackupError::DataStore)?; - } else { - return Err(ServerBackupError::NoDataStore); - } - } - - // Remove the remaining database backup - if json_backup.remove.unwrap_or_default() { - remove_file(source_path).await.map_err(|e| { - if compress { - ServerBackupError::RmZipFile(e) - } else { - ServerBackupError::RmBackupFile(e) - } - })?; - } - - Ok(JsonBackupCreated { created }) - } - - pub fn backup_database(file_path: &PathBuf) -> Result { - let file_stem = file_path - .file_stem() - .unwrap_or_else(|| OsStr::new("bencher")) - .to_string_lossy(); - let file_extension = file_path - .extension() - .unwrap_or_else(|| OsStr::new("db")) - .to_string_lossy(); - let date_time = Utc::now(); - let file_name = format!( - "backup-{file_stem}-{}.{file_extension}", - date_time.format("%Y-%m-%d-%H-%M-%S") - ); - let mut backup_file_path = file_path.clone(); - backup_file_path.set_file_name(&file_name); - - run_online_backup(file_path, &backup_file_path)?; - - Ok(Self { - file_path: backup_file_path, - file_name, - created: date_time.into(), - }) - } -} - -fn run_online_backup(src: &PathBuf, dest: &PathBuf) -> Result<(), ServerBackupError> { - // Get the total size of the source database - let src_size = src - .metadata() - .map_err(|error| ServerBackupError::GetSourceDatabaseSize { - path: src.clone(), - error, - })? - .len(); - // Calculate the number of pages per step in order to complete the backup in a reasonable time. - // Ensure that the pages per step is a positive integer. - #[expect( - clippy::cast_possible_truncation, - clippy::integer_division, - reason = "precision is not needed" - )] - let pages_per_step = std::cmp::max((src_size / PAGES_PER_STEP_COEFFICIENT as u64) as i32, 1); - - let src_connection = - rusqlite::Connection::open(src).map_err(|error| ServerBackupError::OpenSourceDatabase { - path: src.clone(), - error, - })?; - let mut dest_connection = rusqlite::Connection::open(dest).map_err(|error| { - ServerBackupError::OpenDestinationDatabase { - path: dest.clone(), - error, - } - })?; - let backup = rusqlite::backup::Backup::new(&src_connection, &mut dest_connection) - .map_err(ServerBackupError::CreateBackup)?; - // https://www.sqlite.org/backup.html#example_2_online_backup_of_a_running_database - backup - .run_to_completion(pages_per_step, PAUSE_BETWEEN_PAGES, None) - .map_err(ServerBackupError::RunBackup) -} - -async fn compress_database( - backup_file_path: PathBuf, - backup_file_name: &str, -) -> Result<(PathBuf, String), ServerBackupError> { - let backup_file = tokio::fs::File::open(&backup_file_path) - .await - .map_err(ServerBackupError::OpenBackupFile)?; - let mut backup_data = BufReader::with_capacity(SQLITE_PAGE_SIZE, backup_file); - - let compress_file_name = format!("{backup_file_name}.gz"); - let mut compress_file_path = backup_file_path.clone(); - compress_file_path.set_file_name(&compress_file_name); - let compress_file = tokio::fs::File::create(&compress_file_path) - .await - .map_err(ServerBackupError::CreateZipFile)?; - let compress_data = BufWriter::with_capacity(SQLITE_PAGE_SIZE, compress_file); - - let mut encoder = GzipEncoder::new(compress_data); - let mut data_buffer = [0; SQLITE_PAGE_SIZE]; - while let Ok(data_size) = backup_data.read(&mut data_buffer).await { - if data_size == 0 { - break; - } - - encoder - .write_all(&data_buffer) - .await - .map_err(ServerBackupError::WriteZipFile)?; - } - encoder - .shutdown() - .await - .map_err(ServerBackupError::CloseZipFile)?; - - remove_file(backup_file_path) - .await - .map_err(ServerBackupError::RmBackupFile)?; - - Ok((compress_file_path, compress_file_name)) -} diff --git a/lib/bencher_schema/src/model/server/mod.rs b/lib/bencher_schema/src/model/server/mod.rs index 5babe6a878..0a448d4b66 100644 --- a/lib/bencher_schema/src/model/server/mod.rs +++ b/lib/bencher_schema/src/model/server/mod.rs @@ -1,6 +1,4 @@ -mod backup; mod plus; -pub use backup::{ServerBackup, ServerBackupError}; #[cfg(feature = "plus")] pub use plus::{QueryServer, ServerId}; diff --git a/plus/bencher_oci_storage/Cargo.toml b/plus/bencher_oci_storage/Cargo.toml index 35ce54fb7c..714c87af71 100644 --- a/plus/bencher_oci_storage/Cargo.toml +++ b/plus/bencher_oci_storage/Cargo.toml @@ -38,7 +38,6 @@ otel = [] # Bencher internal crates bencher_json = { workspace = true, optional = true, features = ["server", "plus"] } -# AWS S3 (same as database backup) aws-credential-types = { workspace = true, optional = true } aws-sdk-s3 = { workspace = true, optional = true } diff --git a/services/api/openapi.json b/services/api/openapi.json index 777d2115cb..d93aee7a7d 100644 --- a/services/api/openapi.json +++ b/services/api/openapi.json @@ -9381,81 +9381,6 @@ } } }, - "/v0/server/backup": { - "post": { - "tags": [ - "server" - ], - "summary": "Backup server", - "description": "Backup the API server database. The user must be an admin on the server to use this route.", - "operationId": "server_backup_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonBackup" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "successful creation", - "headers": { - "access-control-allow-headers": { - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - }, - "access-control-allow-methods": { - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - }, - "access-control-allow-origin": { - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - }, - "access-control-expose-headers": { - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - }, - "x-total-count": { - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JsonBackupCreated" - } - } - } - }, - "4XX": { - "$ref": "#/components/responses/Error" - }, - "5XX": { - "$ref": "#/components/responses/Error" - } - } - } - }, "/v0/server/config": { "get": { "tags": [ @@ -12498,36 +12423,6 @@ "format": "uint32", "minimum": 0 }, - "DataStore": { - "oneOf": [ - { - "type": "object", - "properties": { - "access_key_id": { - "type": "string" - }, - "access_point": { - "type": "string" - }, - "secret_access_key": { - "$ref": "#/components/schemas/Secret" - }, - "service": { - "type": "string", - "enum": [ - "aws_s3" - ] - } - }, - "required": [ - "access_key_id", - "access_point", - "secret_access_key", - "service" - ] - } - ] - }, "DateTime": { "type": "string", "format": "date-time" @@ -12793,41 +12688,6 @@ "median" ] }, - "JsonBackup": { - "type": "object", - "properties": { - "compress": { - "nullable": true, - "description": "Compress the database backup with gzip. This operation runs first.", - "type": "boolean" - }, - "data_store": { - "nullable": true, - "description": "Save the database backup to this data store. This operation runs second.", - "allOf": [ - { - "$ref": "#/components/schemas/JsonDataStore" - } - ] - }, - "remove": { - "nullable": true, - "description": "Remove the local copy of the database backup. This operation runs third.", - "type": "boolean" - } - } - }, - "JsonBackupCreated": { - "type": "object", - "properties": { - "created": { - "$ref": "#/components/schemas/DateTime" - } - }, - "required": [ - "created" - ] - }, "JsonBenchmark": { "type": "object", "properties": { @@ -13221,12 +13081,6 @@ "uuid" ] }, - "JsonDataStore": { - "type": "string", - "enum": [ - "aws_s3" - ] - }, "JsonDatabase": { "type": "object", "properties": { @@ -13244,14 +13098,6 @@ "format": "uint32", "minimum": 1 }, - "data_store": { - "nullable": true, - "allOf": [ - { - "$ref": "#/components/schemas/DataStore" - } - ] - }, "file": { "type": "string" } diff --git a/services/cli/src/bencher/sub/system/server/backup.rs b/services/cli/src/bencher/sub/system/server/backup.rs deleted file mode 100644 index e4b1488e41..0000000000 --- a/services/cli/src/bencher/sub/system/server/backup.rs +++ /dev/null @@ -1,70 +0,0 @@ -use bencher_client::types::{JsonBackup, JsonDataStore}; - -use crate::{ - CliError, - bencher::{backend::AuthBackend, sub::SubCmd}, - parser::system::server::{CliBackup, CliBackupDataStore}, -}; - -#[derive(Debug, Clone)] -pub struct Backup { - pub compress: Option, - pub data_store: Option, - pub remove: Option, - pub backend: AuthBackend, -} - -impl TryFrom for Backup { - type Error = CliError; - - fn try_from(create: CliBackup) -> Result { - let CliBackup { - compress, - data_store, - remove, - backend, - } = create; - Ok(Self { - compress: Some(compress), - data_store: data_store.map(Into::into), - remove: Some(remove), - backend: backend.try_into()?, - }) - } -} - -impl From for JsonDataStore { - fn from(data_store: CliBackupDataStore) -> Self { - match data_store { - CliBackupDataStore::AwsS3 => Self::AwsS3, - } - } -} - -impl From for JsonBackup { - fn from(backup: Backup) -> Self { - let Backup { - compress, - data_store, - remove, - .. - } = backup; - Self { - compress, - data_store, - remove, - } - } -} - -impl SubCmd for Backup { - async fn exec(&self) -> Result<(), CliError> { - let _json = self - .backend - .send( - |client| async move { client.server_backup_post().body(self.clone()).send().await }, - ) - .await?; - Ok(()) - } -} diff --git a/services/cli/src/bencher/sub/system/server/mod.rs b/services/cli/src/bencher/sub/system/server/mod.rs index 85898c3e18..0438622d2d 100644 --- a/services/cli/src/bencher/sub/system/server/mod.rs +++ b/services/cli/src/bencher/sub/system/server/mod.rs @@ -1,6 +1,5 @@ use crate::{CliError, bencher::sub::SubCmd, parser::system::server::CliServer}; -mod backup; mod config; mod spec; mod stats; @@ -11,7 +10,6 @@ pub enum Server { Version(version::Version), Spec(spec::OpenApiSpec), Config(config::Config), - Backup(backup::Backup), #[cfg(feature = "plus")] Stats(stats::ServerStats), } @@ -24,7 +22,6 @@ impl TryFrom for Server { CliServer::Version(version) => Self::Version(version.try_into()?), CliServer::Spec(spec) => Self::Spec(spec.try_into()?), CliServer::Config(config) => Self::Config(config.try_into()?), - CliServer::Backup(backup) => Self::Backup(backup.try_into()?), #[cfg(feature = "plus")] CliServer::Stats(stats) => Self::Stats(stats.try_into()?), }) @@ -37,7 +34,6 @@ impl SubCmd for Server { Self::Version(version) => version.exec().await, Self::Spec(spec) => spec.exec().await, Self::Config(config) => config.exec().await, - Self::Backup(backup) => backup.exec().await, #[cfg(feature = "plus")] Self::Stats(stats) => stats.exec().await, } diff --git a/services/cli/src/parser/system/server.rs b/services/cli/src/parser/system/server.rs index a15011bd6d..519a74b4f7 100644 --- a/services/cli/src/parser/system/server.rs +++ b/services/cli/src/parser/system/server.rs @@ -1,4 +1,4 @@ -use clap::{Parser, Subcommand, ValueEnum}; +use clap::{Parser, Subcommand}; use crate::parser::CliBackend; @@ -11,8 +11,6 @@ pub enum CliServer { /// Manager server config #[clap(subcommand)] Config(CliConfig), - /// Backup database - Backup(CliBackup), #[cfg(feature = "plus")] /// Server usage statistics Stats(CliServerStats), @@ -50,32 +48,6 @@ pub struct CliConfigConsole { pub backend: CliBackend, } -#[derive(Parser, Debug)] -pub struct CliBackup { - /// Compress database backup with gzip - #[clap(long)] - pub compress: bool, - - /// Save database backup to data store - #[clap(long)] - pub data_store: Option, - - /// Remove local copy of database backup - #[clap(long, alias = "rm")] - pub remove: bool, - - #[clap(flatten)] - pub backend: CliBackend, -} - -/// Supported Fold Operations -#[derive(ValueEnum, Debug, Clone)] -#[clap(rename_all = "snake_case")] -pub enum CliBackupDataStore { - /// AWS S3 - AwsS3, -} - #[cfg(feature = "plus")] #[derive(Parser, Debug)] pub struct CliServerStats { diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/backups.mdx deleted file mode 100644 index 5bd660a668..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## Sicherungen - -Der einfachste Weg, Ihren Bencher Self-Hosted API-Server zu sichern, ist die Verwendung des -[`bencher server backup` CLI-Unterbefehls][bencher server backup]. -Der Benutzer muss ein Administrator auf dem Server sein, um diesen Unterbefehl zu verwenden. - -[bencher server backup]: /de/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/bencher-server-backup.mdx deleted file mode 100644 index 1031b19635..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -Sichern Sie die Datenbank des API-Servers. - -### Optionen - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/compress.mdx deleted file mode 100644 index a217e2bd85..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -Komprimieren Sie das Datenbank-Backup mit `gzip`. -Dieser Vorgang wird zuerst ausgeführt. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/data-store.mdx deleted file mode 100644 index c872159f01..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/data-store.mdx +++ /dev/null @@ -1,12 +0,0 @@ -### `--data-store ` - -Speichern Sie das Datenbank-Backup in diesem Datenspeicher. -Dieser Vorgang wird als zweites ausgeführt. - -Unterstützte Datenspeicher: -- `aws_s3`: Backup zu AWS S3 - -Verwenden Sie den Abschnitt [„database.data_store“][database data store] der API-Server-Konfiguration, -um den Datenspeicher für Ihren Bencher Self-Hosted API-Server einzurichten. - -[database data store]: /de/docs/reference/server-config/#database \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/host.mdx deleted file mode 100644 index 8191c0c7d9..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -Die URL des selbstgehosteten Bencher API-Servers. -Zum Beispiel, `https://api.bencher.example.com`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/key.mdx deleted file mode 100644 index e58971fa4c..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/key.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--key ` - -Entweder muss die Option `--key` oder die Umgebungsvariable `BENCHER_API_KEY` auf einen gültigen Benutzer-API-Schlüssel (`bencher_user_*`) gesetzt werden. -Wenn beide angegeben sind, hat die Option `--key` Vorrang vor der Umgebungsvariable `BENCHER_API_KEY`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/remove.mdx deleted file mode 100644 index e114d20382..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -Entfernen Sie die lokale Kopie der Datenbanksicherung. -Dieser Vorgang läuft als dritter. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/token.mdx deleted file mode 100644 index 224a7fdb7b..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/cli/token.mdx +++ /dev/null @@ -1,8 +0,0 @@ -### `--token ` - -> 🐰 VERALTET: API-Tokens sind zugunsten von API-Schlüsseln veraltet. -> Neue API-Tokens können nicht mehr erstellt werden; bestehende API-Tokens funktionieren weiterhin. -> Verwenden Sie stattdessen die Option `--key`. - -Entweder muss die Option `--token` oder die Umgebungsvariable `BENCHER_API_TOKEN` auf einen gültigen API-Token gesetzt werden. -Wenn beide angegeben sind, hat die Option `--token` Vorrang vor der Umgebungsvariable `BENCHER_API_TOKEN`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/disaster-recovery.mdx index 5de24c3b34..040fd3db2c 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/de/disaster-recovery.mdx @@ -1,6 +1,6 @@ ## Notfallwiederherstellung -Um Datenverlust zwischen den Backups zu verhindern, bietet Bencher eine integrierte Notfallwiederherstellungslösung. Diese Funktion erfordert eine aktive [Bencher Plus][pricing] Lizenz. +Um Datenverlust zu verhindern, bietet Bencher eine integrierte Notfallwiederherstellungslösung. Diese Funktion erfordert eine aktive [Bencher Plus][pricing] Lizenz. Unterstützte Replikationsschemata: diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/backups.mdx deleted file mode 100644 index 09319d876a..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## Backups - -The easiest way to backup your Bencher Self-Hosted API server is using -[the `bencher server backup` CLI subcommand][bencher server backup]. -The user must be an admin on the server to use this subcommand. - -[bencher server backup]: /docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/bencher-server-backup.mdx deleted file mode 100644 index 5d51b7a32f..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -Backup the API server database. - -### Options - - - - - - - - - - - - diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/compress.mdx deleted file mode 100644 index 4883115421..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -Compress the database backup with `gzip`. -This operation runs first. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/data-store.mdx deleted file mode 100644 index 0f4090ad56..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/data-store.mdx +++ /dev/null @@ -1,12 +0,0 @@ -### `--data-store ` - -Save the database backup to this data store. -This operation runs second. - -Supported data stores: -- `aws_s3`: Backup to AWS S3 - -Use [the `database.data_store` section][database data store] of the API server configuration -to setup the data store for your Bencher Self-Hosted API server. - -[database data store]: /docs/reference/server-config/#database diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/host.mdx deleted file mode 100644 index 3542cac450..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -The Bencher Self-Hosted API server URL. -For example, `https://api.bencher.example.com`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/key.mdx deleted file mode 100644 index cae2f54a67..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/key.mdx +++ /dev/null @@ -1,5 +0,0 @@ -### `--key ` - -Either the `--key` option or the `BENCHER_API_KEY` environment variable -may be set to a valid user API key (`bencher_user_*`). -If both are specified, the `--key` option takes precedence over the `BENCHER_API_KEY` environment variable. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/remove.mdx deleted file mode 100644 index 27abd4e420..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -Remove the local copy of the database backup. -This operation runs third. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/token.mdx deleted file mode 100644 index c7142bc4df..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/cli/token.mdx +++ /dev/null @@ -1,9 +0,0 @@ -### `--token ` - -> 🐰 DEPRECATED: API tokens are deprecated in favor of API keys. -> New API tokens can no longer be created; existing API tokens continue to work. -> Use the `--key` option instead. - -Either the `--token` option or the `BENCHER_API_TOKEN` environment variable -may be set to a valid API token. -If both are specified, the `--token` option takes precedence over the `BENCHER_API_TOKEN` environment variable. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/disaster-recovery.mdx index e929ac5e7f..30e2e77677 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/en/disaster-recovery.mdx @@ -1,7 +1,6 @@ ## Disaster Recovery -In order to prevent data loss in between backups, -Bencher offers a built-in disaster recovery solution. +To prevent data loss, Bencher offers a built-in disaster recovery solution. This feature requires an active [Bencher Plus][pricing] license. Supported replication schemes: diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/backups.mdx deleted file mode 100644 index d3d480f316..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## Copias de seguridad - -La manera más sencilla de hacer una copia de seguridad de tu servidor API de Bencher autoalojado es usando -[el subcomando de línea de comandos `bencher server backup`][bencher server backup]. -El usuario debe ser un administrador en el servidor para usar este subcomando. - -[bencher server backup]: /es/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/bencher-server-backup.mdx deleted file mode 100644 index 4630991ee9..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -Realiza una copia de seguridad de la base de datos del servidor API. - -### Opciones - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/compress.mdx deleted file mode 100644 index fc9b268827..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -Comprime la copia de seguridad de la base de datos con `gzip`. -Esta operación se ejecuta primero. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/data-store.mdx deleted file mode 100644 index 2678326ec1..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/data-store.mdx +++ /dev/null @@ -1,11 +0,0 @@ -### `--data-store ` - -Guarde la copia de seguridad de la base de datos en este almacén de datos. Esta operación se ejecuta en segundo lugar. - -Almacenes de datos compatibles: -- `aws_s3`: Copia de seguridad en AWS S3 - -Utilice [la sección `database.data_store`][database data store] de la configuración del servidor API -para configurar el almacén de datos para su servidor API Bencher Self-Hosted. - -[database data store]: /es/docs/reference/server-config/#database \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/host.mdx deleted file mode 100644 index b27be69b88..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -La URL del servidor API de Bencher Self-Hosted. -Por ejemplo, `https://api.bencher.example.com`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/key.mdx deleted file mode 100644 index 430ece102b..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/key.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--key ` - -O bien la opción `--key` o la variable de entorno `BENCHER_API_KEY` debe configurarse con una clave de API de usuario válida (`bencher_user_*`). Si se especifican ambos, la opción `--key` tiene prioridad sobre la variable de entorno `BENCHER_API_KEY`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/remove.mdx deleted file mode 100644 index 87a863116d..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/remove.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--remove` - -Elimina la copia local de la copia de seguridad de la base de datos. Esta operación se ejecuta en tercer lugar. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/token.mdx deleted file mode 100644 index dd3c2365ea..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/cli/token.mdx +++ /dev/null @@ -1,7 +0,0 @@ -### `--token ` - -> 🐰 OBSOLETO: Los tokens de API están obsoletos en favor de las claves de API. -> Ya no se pueden crear nuevos tokens de API; los tokens de API existentes siguen funcionando. -> Use la opción `--key` en su lugar. - -O bien la opción `--token` o la variable de entorno `BENCHER_API_TOKEN` debe configurarse con un token de API válido. Si se especifican ambos, la opción `--token` tiene prioridad sobre la variable de entorno `BENCHER_API_TOKEN`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/disaster-recovery.mdx index 123a5f47af..0b3572eac2 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/es/disaster-recovery.mdx @@ -1,7 +1,6 @@ ## Recuperación ante Desastres -Para prevenir la pérdida de datos entre copias de seguridad, -Bencher ofrece una solución de recuperación ante desastres integrada. +Para prevenir la pérdida de datos, Bencher ofrece una solución de recuperación ante desastres integrada. Esta función requiere una licencia activa de [Bencher Plus][pricing]. Esquemas de replicación soportados: diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/backups.mdx deleted file mode 100644 index 5f964315b5..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## Sauvegardes - -Le moyen le plus simple de sauvegarder votre serveur API Bencher Self-Hosted est d'utiliser -[la sous-commande CLI `bencher server backup`][bencher server backup]. -L'utilisateur doit être un administrateur sur le serveur pour utiliser cette sous-commande. - -[bencher server backup]: /fr/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/bencher-server-backup.mdx deleted file mode 100644 index cc8983fb1b..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -Sauvegarder la base de données du serveur API. - -### Options - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/compress.mdx deleted file mode 100644 index b62e59b1be..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -Comprimez la sauvegarde de la base de données avec `gzip`. -Cette opération s'exécute en premier. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/data-store.mdx deleted file mode 100644 index 8dad482124..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/data-store.mdx +++ /dev/null @@ -1,9 +0,0 @@ -### `--data-store ` - -Enregistrez la sauvegarde de la base de données dans ce stockage de données. -Cette opération s'exécute en second. - -Stockages de données pris en charge: -- `aws_s3`: Sauvegarde sur AWS S3 - -Utilisez [la section `database.data_store`](/fr/docs/reference/server-config/#database) de la configuration du serveur API pour configurer le stockage de données pour votre serveur API Bencher auto-hébergé. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/host.mdx deleted file mode 100644 index beba46e6cc..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -L'URL du serveur API auto-hébergé de Bencher. -Par exemple, `https://api.bencher.example.com`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/key.mdx deleted file mode 100644 index b22d8521f8..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/key.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--key ` - -Soit l'option `--key`, soit la variable d'environnement `BENCHER_API_KEY` peut être définie avec une clé API utilisateur valide (`bencher_user_*`). Si les deux sont spécifiées, l'option `--key` prévaut sur la variable d'environnement `BENCHER_API_KEY`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/remove.mdx deleted file mode 100644 index cc264a6ec9..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -Supprimez la copie locale de la sauvegarde de la base de données. -Cette opération s'exécute en troisième. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/token.mdx deleted file mode 100644 index 15e9a898c9..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/cli/token.mdx +++ /dev/null @@ -1,7 +0,0 @@ -### `--token ` - -> 🐰 OBSOLÈTE : Les jetons API sont obsolètes au profit des clés API. -> De nouveaux jetons API ne peuvent plus être créés ; les jetons API existants continuent de fonctionner. -> Utilisez plutôt l'option `--key`. - -Soit l'option `--token`, soit la variable d'environnement `BENCHER_API_TOKEN` peut être définie avec un jeton API valide. Si les deux sont spécifiés, l'option `--token` prévaut sur la variable d'environnement `BENCHER_API_TOKEN`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/disaster-recovery.mdx index 617e5f4d17..f7d6eb9625 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/fr/disaster-recovery.mdx @@ -1,6 +1,6 @@ ## Récupération après sinistre -Afin de prévenir la perte de données entre les sauvegardes, Bencher propose une solution intégrée de récupération après sinistre. Cette fonctionnalité nécessite une licence [Bencher Plus][pricing] active. +Afin de prévenir la perte de données, Bencher propose une solution intégrée de récupération après sinistre. Cette fonctionnalité nécessite une licence [Bencher Plus][pricing] active. Schémas de réplication pris en charge : diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/backups.mdx deleted file mode 100644 index 69ec48f9fc..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## バックアップ - -Bencher Self-Hosted APIサーバーをバックアップする最も簡単な方法は、 -[ `bencher server backup` CLIサブコマンド][bencher server backup]を使用することです。 -このサブコマンドを使用するには、ユーザーはサーバーの管理者である必要があります。 - -[bencher server backup]: /ja/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/bencher-server-backup.mdx deleted file mode 100644 index 758553fcfa..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -APIサーバーデータベースのバックアップ。 - -### オプション - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/compress.mdx deleted file mode 100644 index 1cd3c71069..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -データベースバックアップを `gzip` で圧縮します。 -この操作は最初に実行されます。 \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/data-store.mdx deleted file mode 100644 index 2730368800..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/data-store.mdx +++ /dev/null @@ -1,10 +0,0 @@ -### `--data-store ` - -データベースバックアップをこのデータストアに保存します。この操作は2番目に実行されます。 - -サポートされているデータストア: -- `aws_s3`: AWS S3へのバックアップ - -Bencher Self-Hosted APIサーバーのデータストアを設定するには、APIサーバーの設定ファイル内の[ `database.data_store` セクション][database data store]を使用してください。 - -[database data store]: /ja/docs/reference/server-config/#database \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/host.mdx deleted file mode 100644 index b712a0b266..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -Bencher Self-Hosted APIサーバーのURL。 -例えば、`https://api.bencher.example.com`。 \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/key.mdx deleted file mode 100644 index d99c944b63..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/key.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--key ` - -`--key`オプションまたは`BENCHER_API_KEY`環境変数のいずれかを、有効なユーザーAPIキー(`bencher_user_*`)として設定できます。 -両方が指定されている場合、`--key`オプションが`BENCHER_API_KEY`環境変数よりも優先されます。 diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/remove.mdx deleted file mode 100644 index beac59ccff..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -ローカルコピーのデータベースバックアップを削除します。 -この操作は3番目に実行されます。 \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/token.mdx deleted file mode 100644 index 05dc627326..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/cli/token.mdx +++ /dev/null @@ -1,8 +0,0 @@ -### `--token ` - -> 🐰 非推奨: APIトークンは非推奨となり、APIキーに置き換えられました。 -> 新しいAPIトークンは作成できなくなりましたが、既存のAPIトークンは引き続き使用できます。 -> 代わりに`--key`オプションを使用してください。 - -`--token`オプションまたは`BENCHER_API_TOKEN`環境変数のいずれかを、有効なAPIトークンとして設定する必要があります。 -両方が指定されている場合、`--token`オプションが`BENCHER_API_TOKEN`環境変数よりも優先されます。 diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/disaster-recovery.mdx index 55bf1c29ad..378ed2c722 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ja/disaster-recovery.mdx @@ -1,6 +1,6 @@ ## ディザスタリカバリ -バックアップ間でのデータ損失を防ぐために、Bencherは組み込みのディザスタリカバリソリューションを提供します。 +データ損失を防ぐために、Bencherは組み込みのディザスタリカバリソリューションを提供します。 この機能にはアクティブな[Bencher Plus][pricing]ライセンスが必要です。 サポートされているレプリケーションスキーム: diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/backups.mdx deleted file mode 100644 index d323162375..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/backups.mdx +++ /dev/null @@ -1,15 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## 백업 - -Bencher 자체 호스팅 API 서버를 백업하는 가장 쉬운 방법은 [`bencher server backup` CLI 하위 명령어][bencher server backup]를 사용하는 것입니다. 이 하위 명령어를 사용하려면 사용자가 서버의 관리자인지 확인해야 합니다. - -[bencher server backup]: /ko/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/bencher-server-backup.mdx deleted file mode 100644 index 955c8956f6..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -API 서버 데이터베이스를 백업합니다. - -### 옵션 - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/compress.mdx deleted file mode 100644 index d35222440d..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/compress.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--compress` - -데이터베이스 백업을 `gzip`으로 압축합니다. 이 작업은 가장 먼저 수행됩니다. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/data-store.mdx deleted file mode 100644 index 0206ae14c3..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/data-store.mdx +++ /dev/null @@ -1,11 +0,0 @@ -### `--data-store ` - -데이터베이스 백업을 이 데이터 스토어에 저장합니다. -이 작업은 두 번째로 실행됩니다. - -지원되는 데이터 스토어: -- `aws_s3`: AWS S3로 백업 - -Bencher 자체 호스팅 API 서버의 데이터 스토어를 설정하려면 API 서버 구성의 [`database.data_store` 섹션][database data store]을 사용하세요. - -[database data store]: /ko/docs/reference/server-config/#database diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/host.mdx deleted file mode 100644 index 81123a4d08..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/host.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--host ` - -Bencher 자체 호스팅 API 서버 URL입니다. 예를 들면, `https://api.bencher.example.com`입니다. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/key.mdx deleted file mode 100644 index 5fcfd7a889..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/key.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--key ` - -`--key` 옵션이나 `BENCHER_API_KEY` 환경 변수를 유효한 사용자 API 키(`bencher_user_*`)로 설정할 수 있습니다. -둘 다 지정된 경우, `--key` 옵션이 `BENCHER_API_KEY` 환경 변수보다 우선합니다. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/remove.mdx deleted file mode 100644 index 7df7c62382..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -로컬 데이터베이스 백업 복사본을 제거합니다. -이 작업은 세 번째로 실행됩니다. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/token.mdx deleted file mode 100644 index 4c898ee225..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/cli/token.mdx +++ /dev/null @@ -1,8 +0,0 @@ -### `--token ` - -> 🐰 사용 중단: API 토큰은 API 키로 대체되어 더 이상 사용되지 않습니다. -> 새 API 토큰은 더 이상 생성할 수 없지만, 기존 API 토큰은 계속 작동합니다. -> 대신 `--key` 옵션을 사용하세요. - -`--token` 옵션이나 `BENCHER_API_TOKEN` 환경 변수를 유효한 API 토큰으로 설정할 수 있습니다. -둘 다 지정된 경우, `--token` 옵션이 `BENCHER_API_TOKEN` 환경 변수보다 우선합니다. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/disaster-recovery.mdx index 91806b7f03..d9dd32ff53 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ko/disaster-recovery.mdx @@ -1,6 +1,6 @@ ## 재해 복구 -백업 사이의 데이터 손실을 방지하기 위해 Bencher는 내장된 재해 복구 솔루션을 제공합니다. 이 기능은 활성화된 [Bencher Plus][pricing] 라이선스가 필요합니다. +데이터 손실을 방지하기 위해 Bencher는 내장된 재해 복구 솔루션을 제공합니다. 이 기능은 활성화된 [Bencher Plus][pricing] 라이선스가 필요합니다. 지원되는 복제 스키마: diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/backups.mdx deleted file mode 100644 index bf4400f97b..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## Backups - -A forma mais fácil de fazer backup do seu servidor de API auto-hospedado do Bencher é usando -[o subcomando CLI `bencher server backup`][bencher server backup]. -O usuário deve ser um administrador no servidor para usar esse subcomando. - -[bencher server backup]: /pt/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/bencher-server-backup.mdx deleted file mode 100644 index 07dcb7955b..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -Backup do banco de dados do servidor da API. - -### Opções - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/compress.mdx deleted file mode 100644 index ef042cf5b3..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -Comprime o backup do banco de dados com `gzip`. -Esta operação é executada primeiro. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/data-store.mdx deleted file mode 100644 index e5a99c0393..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/data-store.mdx +++ /dev/null @@ -1,12 +0,0 @@ -### `--data-store ` - -Salve o backup do banco de dados neste data store. -Esta operação é executada em segundo lugar. - -Data stores suportados: -- `aws_s3`: Backup para AWS S3 - -Use a [seção `database.data_store`][database data store] da configuração do servidor API -para configurar o data store para o seu servidor API auto-hospedado do Bencher. - -[database data store]: /pt/docs/reference/server-config/#database \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/host.mdx deleted file mode 100644 index 35699c4a61..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -A URL do servidor de API auto-hospedado do Bencher. -Por exemplo, `https://api.bencher.exemplo.com`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/key.mdx deleted file mode 100644 index 30ccbb5350..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/key.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--key ` - -Ou a opção `--key` ou a variável de ambiente `BENCHER_API_KEY` deve ser configurada com uma chave de API de usuário válida (`bencher_user_*`). Se ambas forem especificadas, a opção `--key` tem precedência sobre a variável de ambiente `BENCHER_API_KEY`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/remove.mdx deleted file mode 100644 index 2fea95c201..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -Remova a cópia local do backup do banco de dados. -Esta operação é executada em terceiro lugar. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/token.mdx deleted file mode 100644 index 1013e76570..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/cli/token.mdx +++ /dev/null @@ -1,7 +0,0 @@ -### `--token ` - -> 🐰 OBSOLETO: Os tokens de API estão obsoletos em favor das chaves de API. -> Novos tokens de API não podem mais ser criados; os tokens de API existentes continuam funcionando. -> Use a opção `--key` em vez disso. - -Ou a opção `--token` ou a variável de ambiente `BENCHER_API_TOKEN` deve ser configurada com um token de API válido. Se ambos forem especificados, a opção `--token` tem precedência sobre a variável de ambiente `BENCHER_API_TOKEN`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/disaster-recovery.mdx index 2315cd61c2..029614e9d6 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/pt/disaster-recovery.mdx @@ -1,7 +1,6 @@ ## Recuperação de Desastres -Para evitar a perda de dados entre os backups, -o Bencher oferece uma solução de recuperação de desastres integrada. +Para evitar a perda de dados, o Bencher oferece uma solução de recuperação de desastres integrada. Esta funcionalidade requer uma licença ativa do [Bencher Plus][pricing]. Esquemas de replicação suportados: diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/backups.mdx deleted file mode 100644 index 7b3a484342..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## Резервные копии - -Самый простой способ создать резервную копию вашего локального API-сервера Bencher - использовать -[подкоманду CLI `bencher server backup`][bencher server backup]. -Пользователь должен быть администратором на сервере, чтобы использовать эту подкоманду. - -[bencher server backup]: /ru/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/bencher-server-backup.mdx deleted file mode 100644 index 972ce6bd31..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -Резервное копирование базы данных сервера API. - -### Опции - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/compress.mdx deleted file mode 100644 index ef3ffde399..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -Сожмите резервную копию базы данных с помощью `gzip`. -Эта операция выполняется первой. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/data-store.mdx deleted file mode 100644 index 15eb9dbb36..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/data-store.mdx +++ /dev/null @@ -1,12 +0,0 @@ -### `--data-store ` - -Сохраните резервную копию базы данных в этом хранилище данных. -Эта операция выполняется второй. - -Поддерживаемые хранилища данных: -- `aws_s3`: Резервное копирование в AWS S3 - -Используйте [раздел `database.data_store`][database data store] конфигурации серверного API, -чтобы настроить хранилище данных для вашего самоустановочного API-сервера Bencher. - -[database data store]: /ru/docs/reference/server-config/#database \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/host.mdx deleted file mode 100644 index 65f4078052..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -URL API-сервера Bencher Self-Hosted. -Например, `https://api.bencher.example.com`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/key.mdx deleted file mode 100644 index 0d062e1cb8..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/key.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--key ` - -Либо параметр `--key`, либо переменная окружения `BENCHER_API_KEY` должны быть установлены на действительный ключ API пользователя (`bencher_user_*`). Если оба параметра указаны, опция `--key` имеет приоритет над переменной окружения `BENCHER_API_KEY`. diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/remove.mdx deleted file mode 100644 index e3d5823aca..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -Удалить локальную копию резервной копии базы данных. -Эта операция выполняется третьей. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/token.mdx deleted file mode 100644 index 12796c5668..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/cli/token.mdx +++ /dev/null @@ -1,7 +0,0 @@ -### `--token ` - -> 🐰 УСТАРЕЛО: API токены устарели в пользу API ключей. -> Новые API токены больше нельзя создавать; существующие API токены продолжают работать. -> Используйте вместо этого опцию `--key`. - -Либо параметр `--token`, либо переменная окружения `BENCHER_API_TOKEN` должны быть установлены на действительный API токен. Если оба параметра указаны, опция `--token` имеет приоритет над переменной окружения `BENCHER_API_TOKEN`. \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/disaster-recovery.mdx index bd858698b0..2382d0a0d9 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/ru/disaster-recovery.mdx @@ -1,6 +1,6 @@ ## Восстановление после сбоя -Чтобы предотвратить потерю данных между резервными копиями, Bencher предлагает встроенное решение для восстановления после сбоя. Эта функция требует активной лицензии [Bencher Plus][pricing]. +Чтобы предотвратить потерю данных, Bencher предлагает встроенное решение для восстановления после сбоя. Эта функция требует активной лицензии [Bencher Plus][pricing]. Поддерживаемые схемы репликации: diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/backups.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/backups.mdx deleted file mode 100644 index 06724804b1..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/backups.mdx +++ /dev/null @@ -1,17 +0,0 @@ -import BencherServerBackup from "./bencher-server-backup.mdx"; - -## 备份 - -备份您的 Bencher 自托管 API 服务器的最简单方法是使用 -[`bencher server backup` CLI 子命令][bencher server backup]。 -用户必须是服务器上的管理员才能使用此子命令。 - -[bencher server backup]: /zh/docs/api/server/server/#post-v0serverbackup - -
- bencher server backup -
-
- -
-
diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/bencher-server-backup.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/bencher-server-backup.mdx deleted file mode 100644 index a318abefd1..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/bencher-server-backup.mdx +++ /dev/null @@ -1,24 +0,0 @@ -import Host from "./cli/host.mdx"; -import Key from "./cli/key.mdx"; -import Token from "./cli/token.mdx"; -import Compress from "./cli/compress.mdx"; -import DataStore from "./cli/data-store.mdx"; -import Remove from "./cli/remove.mdx"; - -## `bencher server backup` - -备份API服务器数据库。 - -### 选项 - - - - - - - - - - - - \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/compress.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/compress.mdx deleted file mode 100644 index bafa3a0e0b..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/compress.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--compress` - -使用 `gzip` 压缩数据库备份。 -此操作优先执行。 \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/data-store.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/data-store.mdx deleted file mode 100644 index 96560af341..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/data-store.mdx +++ /dev/null @@ -1,11 +0,0 @@ -### `--data-store ` - -将数据库备份保存到该数据存储。 -此操作第二步执行。 - -支持的数据存储: -- `aws_s3`: 备份到 AWS S3 - -使用 API 服务器配置的[`database.data_store`部分][database data store]来设置您的 Bencher 自托管 API 服务器的数据存储。 - -[database data store]: /zh/docs/reference/server-config/#database \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/host.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/host.mdx deleted file mode 100644 index d7c3e4a282..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/host.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--host ` - -Bencher 自托管 API 服务器的 URL。 -例如,`https://api.bencher.example.com`。 \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/key.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/key.mdx deleted file mode 100644 index 56f217eebb..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/key.mdx +++ /dev/null @@ -1,3 +0,0 @@ -### `--key ` - -可以将`--key`选项或`BENCHER_API_KEY`环境变量设置为一个有效的用户API密钥(`bencher_user_*`)。如果两者都已指定,则`--key`选项优先于`BENCHER_API_KEY`环境变量。 diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/remove.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/remove.mdx deleted file mode 100644 index 1a8d5cd6ee..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/remove.mdx +++ /dev/null @@ -1,4 +0,0 @@ -### `--remove` - -删除数据库备份的本地副本。 -此操作位于第三步运行。 \ No newline at end of file diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/token.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/token.mdx deleted file mode 100644 index d636b36ffc..0000000000 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/cli/token.mdx +++ /dev/null @@ -1,7 +0,0 @@ -### `--token ` - -> 🐰 已弃用:API 令牌已被弃用,请改用 API 密钥。 -> 无法再创建新的 API 令牌;现有的 API 令牌仍可继续使用。 -> 请改用`--key`选项。 - -可以将`--token`选项或`BENCHER_API_TOKEN`环境变量设置为一个有效的API令牌。如果两者都已指定,则`--token`选项优先于`BENCHER_API_TOKEN`环境变量。 diff --git a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/disaster-recovery.mdx b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/disaster-recovery.mdx index 1959d3630f..901c8aef38 100644 --- a/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/disaster-recovery.mdx +++ b/services/console/src/chunks/docs-explanation/bencher-self-hosted/zh/disaster-recovery.mdx @@ -1,6 +1,6 @@ ## 灾难恢复 -为了防止备份之间的数据丢失,Bencher 提供了内置的灾难恢复解决方案。此功能需要有效的 [Bencher Plus][pricing] 许可证。 +为了防止数据丢失,Bencher 提供了内置的灾难恢复解决方案。此功能需要有效的 [Bencher Plus][pricing] 许可证。 支持的复制方案: diff --git a/services/console/src/chunks/docs-reference/changelog/en/changelog.mdx b/services/console/src/chunks/docs-reference/changelog/en/changelog.mdx index 6d6726f7e3..2d8002b1f9 100644 --- a/services/console/src/chunks/docs-reference/changelog/en/changelog.mdx +++ b/services/console/src/chunks/docs-reference/changelog/en/changelog.mdx @@ -2,6 +2,7 @@ - Fix a very large `page` query parameter returning the wrong page - **BREAKING CHANGE** The `plus.litestream` server config key is removed; use `plus.disaster_recovery`. A config that still uses `plus.litestream` is ignored and disaster recovery does not run at all: no restore at startup and no replication - **BREAKING CHANGE** The `sftp` disaster recovery replica scheme is removed; `file` and `s3` remain +- **BREAKING CHANGE** The on demand database backup is removed: `POST /v0/server/backup`, `bencher server backup`, and the `database.data_store` server config section ## `v0.6.13` - Fix slow alert lists and perf queries on large projects diff --git a/services/console/src/chunks/docs-reference/server-config/de/database.mdx b/services/console/src/chunks/docs-reference/server-config/de/database.mdx index 8c8c27849f..ffaee13c2f 100644 --- a/services/console/src/chunks/docs-reference/server-config/de/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/de/database.mdx @@ -3,9 +3,5 @@ | Name | Beispiel | Standard | Erforderlich | Beschreibung | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "pfad/zu/database.db" | "/var/lib/bencher/data/bencher.db" | Ja | Legt fest, wo die Serverdatenbank hingehen soll. | -| data_store.service | "aws_s3" | --- | Nein | Gibt den entfernten Datenspeicherdienst an. Gültige Werte sind "aws_s3". | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | Nur wenn data_store.service = "aws_s3" | Wenn data_store.service "aws_s3" ist, gibt diese Eigenschaft die AWS-Zugangsschlüssel-ID an. Siehe auch data_store.service. | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | Nur wenn data_store.service = "aws_s3" | Wenn data_store.service "aws_s3" ist, gibt diese Eigenschaft den AWS geheimen Zugangsschlüssel an. Siehe auch data_store.service. Im Protokoll erscheint es als `************`. | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/pfad/zu/backup/dir" | --- | Nur wenn data_store.service = "aws_s3" | Wenn data_store.service "aws_s3" ist, gibt diese Eigenschaft den [Zugangspunkt von AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) an. Siehe auch data_store.service. | | busy_timeout | 5000 | 5000 | Nein | Gibt den Busy-Timeout für die Datenbank in Millisekunden an. Verhindert sofortige SQLITE_BUSY-Fehler bei Sperrkonflikten. | | cache_size | 65536 | 65536 | Nein | Gibt die Seiten-Cache-Größe in KiB für die Schreibverbindung der Datenbank an. Ein größerer Cache vermeidet das erneute Lesen verdrängter Seiten bei großen Report-Importen und -Löschungen. Muss größer als 0 sein. | diff --git a/services/console/src/chunks/docs-reference/server-config/de/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/de/plus-disaster-recovery.mdx index 98117b68e8..c80526e81b 100644 --- a/services/console/src/chunks/docs-reference/server-config/de/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/de/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ Dieser Abschnitt spezifiziert die Konfiguration der Notfallwiederherstellung. Bencher unterstützt das kontinuierliche Replizieren aller Datenbankänderungen. -Für die Durchführung von bedarfs- oder zeitgesteuerten Backups siehe den Abschnitt `database.data_store` der Konfiguration. Es gibt zwei Replikations-`scheme`s: - `file`: Replikation zu einem lokalen Dateipfad diff --git a/services/console/src/chunks/docs-reference/server-config/en/database.mdx b/services/console/src/chunks/docs-reference/server-config/en/database.mdx index c4f43fd71f..7b43b0c37f 100644 --- a/services/console/src/chunks/docs-reference/server-config/en/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/en/database.mdx @@ -3,9 +3,5 @@ | Name | Example | Default | Required | Description | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :-----------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "path/to/database.db" | "/var/lib/bencher/data/bencher.db" | Yes | Controls where server database will go. | -| data_store.service | "aws_s3" | --- | No | Specifies the remote data store service. Valid values are "aws_s3". | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | Only if data_store.service = "aws_s3" | If data_store.service = "aws_s3", this property specifies the AWS access key ID. See also data_store.service. | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | Only if data_store.service = "aws_s3" | If data_store.service = "aws_s3", this property specifies the AWS secret access key. See also data_store.service. Whenever logged, it will appear obfuscated as `************`. | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" | --- | Only if data_store.service = "aws_s3" | If data_store.service = "aws_s3", this property specifies the [AWS S3 accesspoint](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html). See also data_store.service. | | busy_timeout | 5000 | 5000 | No | Specifies the busy timeout for the database in milliseconds. Prevents immediate SQLITE_BUSY errors under lock contention. | | cache_size | 65536 | 65536 | No | Specifies the page cache size in KiB for the writer database connection. A larger cache avoids re-reading evicted pages during large report ingests and deletions. Must be greater than 0. | diff --git a/services/console/src/chunks/docs-reference/server-config/en/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/en/plus-disaster-recovery.mdx index 4f793967e1..71f58e9fff 100644 --- a/services/console/src/chunks/docs-reference/server-config/en/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/en/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ This section specifies the disaster recovery configuration. Bencher supports continuously replicating all database changes. -For running on demand or scheduled backups, see the `database.data_store` section of the configuration. There are two replication `scheme`s: - `file`: Replicate to a local file path diff --git a/services/console/src/chunks/docs-reference/server-config/es/database.mdx b/services/console/src/chunks/docs-reference/server-config/es/database.mdx index c61ded1c87..d531748ef1 100644 --- a/services/console/src/chunks/docs-reference/server-config/es/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/es/database.mdx @@ -3,9 +3,5 @@ | Nombre | Ejemplo | Default | Requerido | Descripción | | :--------------------------: | :--------------------------------------------------------------------------------------------: | :--------------------------------: | :-----------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "ruta/hacia/database.db" | "/var/lib/bencher/data/bencher.db" | Sí | Controla hacia donde irá la base de datos del servidor. | -| data_store.service | "aws_s3" | --- | No | Especifica el servicio de almacenamiento de datos remoto. Los valores válidos son "aws_s3". | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | Solo si data_store.service = "aws_s3" | Si data_store.service = "aws_s3", esta propiedad especifica el ID de clave de acceso de AWS. Ver también data_store.service. | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | Solo si data_store.service = "aws_s3" | Si data_store.service = "aws_s3", esta propiedad especifica la clave de acceso secreta de AWS. Ver también data_store.service. Cuando se registra, aparecerá ofuscado como `************`. | -| data_store.access_point | "arn:aws:s3:alguna-region-1:123456789:accesspoint/mi-bucket/ruta/hacia/directorio/de/respaldo" | --- | Solo si data_store.service = "aws_s3" | Si data_store.service = "aws_s3", esta propiedad especifica el [punto de acceso S3 de AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html). Ver también data_store.service. | | busy_timeout | 5000 | 5000 | No | Especifica el tiempo de espera ocupado para la base de datos en milisegundos. Previene errores SQLITE_BUSY inmediatos bajo contención de bloqueo. | | cache_size | 65536 | 65536 | No | Especifica el tamaño de la caché de páginas en KiB para la conexión de escritura de la base de datos. Una caché más grande evita releer páginas expulsadas durante ingestas y eliminaciones de informes grandes. Debe ser mayor que 0. | diff --git a/services/console/src/chunks/docs-reference/server-config/es/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/es/plus-disaster-recovery.mdx index 79f44418e3..acfb616534 100644 --- a/services/console/src/chunks/docs-reference/server-config/es/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/es/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ Esta sección especifica la configuración de recuperación ante desastres. Bencher admite la replicación continua de todos los cambios en la base de datos. -Para ejecutar copias de seguridad bajo demanda o programadas, consulte la sección `database.data_store` de la configuración. Hay dos esquemas de replicación: - `file`: Replicar a una ruta de archivo local diff --git a/services/console/src/chunks/docs-reference/server-config/example.mdx b/services/console/src/chunks/docs-reference/server-config/example.mdx index 5effa3608c..b2e92b552c 100644 --- a/services/console/src/chunks/docs-reference/server-config/example.mdx +++ b/services/console/src/chunks/docs-reference/server-config/example.mdx @@ -26,12 +26,6 @@ }, "database": { "file": "/var/lib/bencher/data/bencher.db", - "data_store": { - "service": "aws_s3", - "access_key_id": "ABC123DoRemMiABC123", - "secret_access_key": "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7", - "access_point": "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" - }, "busy_timeout": 5000, "cache_size": 65536 }, diff --git a/services/console/src/chunks/docs-reference/server-config/fr/database.mdx b/services/console/src/chunks/docs-reference/server-config/fr/database.mdx index 87858955da..3f2a822ab2 100644 --- a/services/console/src/chunks/docs-reference/server-config/fr/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/fr/database.mdx @@ -3,9 +3,5 @@ | Nom | Exemple | Par défaut | Requis | Description | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :----------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "path/to/database.db" | "/var/lib/bencher/data/bencher.db" | Oui | Contrôle où la base de données du serveur sera envoyée. | -| data_store.service | "aws_s3" | --- | Non | Spécifie le service de stockage de données à distance. Les valeurs valides sont "aws_s3". | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | Seulement si data_store.service = "aws_s3" | Si data_store.service = "aws_s3", cette propriété spécifie l'ID de la clé d'accès AWS. Voir aussi data_store.service. | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | Seulement si data_store.service = "aws_s3" | Si data_store.service = "aws_s3", cette propriété spécifie la clé d'accès secrète AWS. Voir aussi data_store.service. Lorsqu'elle est enregistrée, elle apparaîtra sous forme obfusquée, c'est-à-dire `************`. | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" | --- | Seulement si data_store.service = "aws_s3" | Si data_store.service = "aws_s3", cette propriété spécifie le [point d'accès AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html). Voir aussi data_store.service. | | busy_timeout | 5000 | 5000 | Non | Spécifie le délai d'attente pour la base de données en millisecondes. Empêche les erreurs SQLITE_BUSY immédiates en cas de contention de verrou. | | cache_size | 65536 | 65536 | Non | Spécifie la taille du cache de pages en KiB pour la connexion d'écriture de la base de données. Un cache plus grand évite de relire les pages évincées lors des ingestions et suppressions de rapports volumineux. Doit être supérieur à 0. | diff --git a/services/console/src/chunks/docs-reference/server-config/fr/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/fr/plus-disaster-recovery.mdx index cfc9898328..c299c0e993 100644 --- a/services/console/src/chunks/docs-reference/server-config/fr/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/fr/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ Cette section spécifie la configuration de la récupération en cas de sinistre. Bencher prend en charge la réplication continue de tous les changements de base de données. -Pour exécuter des sauvegardes à la demande ou programmées, consultez la section `database.data_store` de la configuration. Il existe deux `schéma`s de réplication : - `file`: Répliquer vers un chemin de fichier local diff --git a/services/console/src/chunks/docs-reference/server-config/ja/database.mdx b/services/console/src/chunks/docs-reference/server-config/ja/database.mdx index 37cd8a976f..f3427105ed 100644 --- a/services/console/src/chunks/docs-reference/server-config/ja/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/ja/database.mdx @@ -3,9 +3,5 @@ | 名前 | 例 | デフォルト値 | 必須項目 | 説明 | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :-------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "path/to/database.db" | "/var/lib/bencher/data/bencher.db" | はい | サーバーデータベースがどこに行くかを制御します。 | -| data_store.service | "aws_s3" | --- | いいえ | 遠隔データストアサービスを指定します。有効な値は "aws_s3" です。 | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | data_store.service = "aws_s3"の場合のみ | data_store.service = "aws_s3" の場合、このプロパティは AWS アクセスキー ID を指定します。 data_store.service も参照してください。 | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | data_store.service = "aws_s3"の場合のみ | data_store.service = "aws_s3" の場合、このプロパティは AWS シークレットアクセスキーを指定します。 data_store.service も参照してください。ログ時には `************` として表示されます。 | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" | --- | data_store.service = "aws_s3"の場合のみ | data_store.service = "aws_s3" の場合、このプロパティは [AWS S3 アクセスポイント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) を指定します。 data_store.service も参照してください。 | | busy_timeout | 5000 | 5000 | いいえ | データベースのビジータイムアウトをミリ秒単位で指定します。ロック競合下での即座のSQLITE_BUSYエラーを防止します。 | | cache_size | 65536 | 65536 | いいえ | 書き込み用データベース接続のページキャッシュサイズをKiB単位で指定します。キャッシュを大きくすると、大規模なレポートの取り込みや削除の際に追い出されたページの再読み込みを回避できます。 0より大きい値でなければなりません。 | diff --git a/services/console/src/chunks/docs-reference/server-config/ja/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/ja/plus-disaster-recovery.mdx index f6283f7ffa..7ce1d4dd96 100644 --- a/services/console/src/chunks/docs-reference/server-config/ja/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/ja/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ このセクションは、災害復旧の設定を指定します。 Bencherはデータベースの全ての変更を継続的に複製することをサポートします。 -オンデマンドまたは定期バックアップを実行するには、設定の `database.data_store` セクションをご覧ください。 複製には2つのスキームがあります: - `file`: ローカルファイルパスに複製 diff --git a/services/console/src/chunks/docs-reference/server-config/ko/database.mdx b/services/console/src/chunks/docs-reference/server-config/ko/database.mdx index 937933a8cb..c80186db05 100644 --- a/services/console/src/chunks/docs-reference/server-config/ko/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/ko/database.mdx @@ -3,9 +3,5 @@ | 이름 | 예제 | 기본값 | 필수 여부 | 설명 | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "path/to/database.db" | "/var/lib/bencher/data/bencher.db" | 예 | 서버 데이터베이스가 위치할 곳을 제어합니다. | -| data_store.service | "aws_s3" | --- | 아니오 | 원격 데이터 저장소 서비스를 지정합니다. 유효한 값은 "aws_s3"입니다. | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | data_store.service = "aws_s3"인 경우만 | data_store.service = "aws_s3"인 경우, 이 속성은 AWS 액세스 키 ID를 지정합니다. data_store.service 에 대해서도 참조하십시오. | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | data_store.service = "aws_s3"인 경우만 | data_store.service = "aws_s3"인 경우, 이 속성은 AWS secret access key를 지정합니다. data_store.service에 대해서도 참조하십시오. 로그에 기록될 때 `************`로 표현됩니다. | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" | --- | data_store.service = "aws_s3"인 경우만 | data_store.service = "aws_s3"인 경우, 이 속성은 [AWS S3 accesspoint](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)를 지정합니다. data_store.service에 대해서도 참조하십시오. | | busy_timeout | 5000 | 5000 | 아니오 | 데이터베이스의 busy 타임아웃을 밀리초(ms) 단위로 지정합니다. 잠금 경합 시 즉각적인 SQLITE_BUSY 오류를 방지합니다. | | cache_size | 65536 | 65536 | 아니오 | 쓰기 데이터베이스 연결의 페이지 캐시 크기를 KiB 단위로 지정합니다. 캐시가 클수록 대규모 리포트 수집 및 삭제 시 축출된 페이지를 다시 읽는 것을 방지합니다. 0보다 커야 합니다. | diff --git a/services/console/src/chunks/docs-reference/server-config/ko/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/ko/plus-disaster-recovery.mdx index d4eba0ab95..0951a7ede1 100644 --- a/services/console/src/chunks/docs-reference/server-config/ko/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/ko/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ 이 섹션은 재해 복구 구성을 지정합니다. Bencher는 모든 데이터베이스 변경 사항을 지속적으로 복제하는 기능을 지원합니다. -요청 시 실행하거나 예약된 백업을 실행하려면 구성의 `database.data_store` 섹션을 참조하십시오. 두 가지 복제 `scheme`가 있습니다: - `file`: 로컬 파일 경로로 복제 diff --git a/services/console/src/chunks/docs-reference/server-config/pt/database.mdx b/services/console/src/chunks/docs-reference/server-config/pt/database.mdx index 130e1403d5..bc449b36f8 100644 --- a/services/console/src/chunks/docs-reference/server-config/pt/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/pt/database.mdx @@ -3,9 +3,5 @@ | Nome | Exemplo | Padrão | Obrigatório | Descrição | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :-------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "path/to/database.db" | "/var/lib/bencher/data/bencher.db" | Sim | Controla para onde vai a base de dados do servidor. | -| data_store.service | "aws_s3" | --- | Não | Especifica o serviço de armazenamento de dados remoto. Valores validos são "aws_s3". | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | Apenas se data_store.service = "aws_s3" | Se data_store.service = "aws_s3", esta propriedade especifica o ID da chave de acesso do AWS. Veja também data_store.service. | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | Apenas se data_store.service = "aws_s3" | Se data_store.service = "aws_s3", esta propriedade especifica a chave de acesso secreta do AWS. Veja também data_store.service. Quando registrada, ela aparecerá obfuscada como `************`. | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" | --- | Apenas se data_store.service = "aws_s3" | Se data_store.service = "aws_s3", esta propriedade especifica o [ponto de acesso do AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html). Veja também data_store.service. | | busy_timeout | 5000 | 5000 | Não | Especifica o tempo limite de ocupação para o banco de dados em milissegundos. Previne erros SQLITE_BUSY imediatos sob contenção de bloqueio. | | cache_size | 65536 | 65536 | Não | Especifica o tamanho do cache de páginas em KiB para a conexão de escrita do banco de dados. Um cache maior evita a releitura de páginas removidas durante ingestões e exclusões de relatórios grandes. Deve ser maior que 0. | diff --git a/services/console/src/chunks/docs-reference/server-config/pt/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/pt/plus-disaster-recovery.mdx index afca98dcdd..ef83738453 100644 --- a/services/console/src/chunks/docs-reference/server-config/pt/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/pt/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ Esta seção especifica a configuração de recuperação de desastres. O Bencher suporta a replicação contínua de todas as alterações no banco de dados. -Para backups sob demanda ou agendados, consulte a seção `database.data_store` da configuração. Existem dois `scheme`s de replicação: - `file`: Replicar para um caminho de arquivo local diff --git a/services/console/src/chunks/docs-reference/server-config/ru/database.mdx b/services/console/src/chunks/docs-reference/server-config/ru/database.mdx index 15b3983d13..100f9d7da4 100644 --- a/services/console/src/chunks/docs-reference/server-config/ru/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/ru/database.mdx @@ -3,10 +3,6 @@ | Имя | Пример | По умолчанию | Обязательно | Описание | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :---------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "path/to/database.db" | "/var/lib/bencher/data/bencher.db" | Да | Управляет расположением базы данных сервера. | -| data_store.service | "aws_s3" | --- | Нет | Задает внешний сервис для хранения данных. Допустимые значения - "aws_s3". | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | Только если data_store.service = "aws_s3" | Если data_store.service = "aws_s3", это свойство указывает идентификатор ключа доступа AWS. Смотрите также data_store.service. | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | Только если data_store.service = "aws_s3" | Если data_store.service = "aws_s3", это свойство указывает секретный ключ доступа AWS. Смотрите также data_store.service. При логировании он будет обфусцирован как `************`. | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" | --- | Только если data_store.service = "aws_s3" | Если data_store.service = "aws_s3", это свойство указывает [точку доступа AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html). Смотрите также data_store.service. | | busy_timeout | 5000 | 5000 | Нет | Указывает тайм-аут занятости для базы данных в миллисекундах. Предотвращает немедленные ошибки SQLITE_BUSY при блокировке. | | cache_size | 65536 | 65536 | Нет | Указывает размер страничного кэша в КиБ для соединения записи базы данных. Больший кэш позволяет избежать повторного чтения вытесненных страниц при больших загрузках и удалениях отчетов. Должен быть больше 0. | diff --git a/services/console/src/chunks/docs-reference/server-config/ru/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/ru/plus-disaster-recovery.mdx index 67619238f7..d49f29148d 100644 --- a/services/console/src/chunks/docs-reference/server-config/ru/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/ru/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ Этот раздел описывает конфигурацию восстановления после аварий. Bencher поддерживает непрерывное реплицирование всех изменений базы данных. -Для выполнения резервных копий по запросу или по расписанию, см. раздел конфигурации `database.data_store`. Существует две схемы репликации: - `file`: Реплицирование в локальную файловую систему diff --git a/services/console/src/chunks/docs-reference/server-config/zh/database.mdx b/services/console/src/chunks/docs-reference/server-config/zh/database.mdx index 7c48116de5..4276accddd 100644 --- a/services/console/src/chunks/docs-reference/server-config/zh/database.mdx +++ b/services/console/src/chunks/docs-reference/server-config/zh/database.mdx @@ -3,9 +3,5 @@ | 名称 | 例子 | 默认值 | 必选项 | 说明 | | :--------------------------: | :---------------------------------------------------------------------------: | :--------------------------------: | :----------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | file | "path/to/database.db" | "/var/lib/bencher/data/bencher.db" | 是 | 控制服务器数据库的位置。 | -| data_store.service | "aws_s3" | --- | 否 | 指定远程数据存储服务。有效值为 "aws_s3"。 | -| data_store.access_key_id | "ABC123DoRemMiABC123" | --- | 仅在 data_store.service = "aws_s3"时 | 如果 data_store.service = "aws_s3",此属性指定 AWS 访问密钥 ID。参见 data_store.service。 | -| data_store.secret_access_key | "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7" | --- | 仅在 data_store.service = "aws_s3"时 | 如果 data_store.service = "aws_s3",此属性指定 AWS 私密访问密钥。参见 data_store.service。当进行记录时,它将显示为 `************`。 | -| data_store.access_point | "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir" | --- | 仅在 data_store.service = "aws_s3"时 | 如果 data_store.service 是 "aws_s3",此属性指定 [AWS S3 接入点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)。参见 data_store.service。 | | busy_timeout | 5000 | 5000 | 否 | 指定数据库的忙碌超时时间,以毫秒为单位。防止在锁争用时立即出现SQLITE_BUSY错误。 | | cache_size | 65536 | 65536 | 否 | 指定写入数据库连接的页面缓存大小,以KiB为单位。更大的缓存可以避免在大型报告摄取和删除期间重新读取被逐出的页面。 必须大于0。 | diff --git a/services/console/src/chunks/docs-reference/server-config/zh/plus-disaster-recovery.mdx b/services/console/src/chunks/docs-reference/server-config/zh/plus-disaster-recovery.mdx index 99cd15af33..95325b2d80 100644 --- a/services/console/src/chunks/docs-reference/server-config/zh/plus-disaster-recovery.mdx +++ b/services/console/src/chunks/docs-reference/server-config/zh/plus-disaster-recovery.mdx @@ -2,7 +2,6 @@ 此部分指定了灾难恢复配置。 Bencher支持连续复制所有数据库更改。 -欲了解按需运行或计划备份,请参阅配置中的`database.data_store`部分。 有两种复制`scheme`: - `file`: 复制到本地文件路径 diff --git a/services/console/src/components/docs/api/BodyParametersInner.astro b/services/console/src/components/docs/api/BodyParametersInner.astro index 7684593bd5..45e5f37cf3 100644 --- a/services/console/src/components/docs/api/BodyParametersInner.astro +++ b/services/console/src/components/docs/api/BodyParametersInner.astro @@ -129,19 +129,7 @@ const getTypes = (propertyKey, propertyValue) => { <> {(() => { if (Array.isArray(extra)) { - return <> - {( - () => { - switch(propertyKey) { - case "data_store": - return

- The database.data_store section of the API server configuration must be configured for this data store. -

; - } - } - )} -

One of: {extra.map((variant, index) => { return <>{index !== 0 && ", "}{variant}})}

- ; + return

One of: {extra.map((variant, index) => { return <>{index !== 0 && ", "}{variant}})}

; } if (types !== "object") { return; diff --git a/services/console/src/content/api-server/server.mdx b/services/console/src/content/api-server/server.mdx index d272c2ae88..07fb2c3426 100644 --- a/services/console/src/content/api-server/server.mdx +++ b/services/console/src/content/api-server/server.mdx @@ -12,10 +12,6 @@ paths: method: get headers: pub cli: server spec - - path: /v0/server/backup - method: post - headers: auth - cli: server backup - path: /v0/server/stats method: get headers: auth diff --git a/services/console/src/content/docs-explanation/de/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/de/bencher-self-hosted.mdx index ec609648cd..090c757f26 100644 --- a/services/console/src/content/docs-explanation/de/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/de/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/de/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/de/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/de/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/de/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/de/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/de/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/services/console/src/content/docs-explanation/en/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/en/bencher-self-hosted.mdx index 4a7dc75777..2b6f27e998 100644 --- a/services/console/src/content/docs-explanation/en/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/en/bencher-self-hosted.mdx @@ -12,7 +12,6 @@ import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/en/ import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/en/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/en/https.mdx"; import CustomCaCertificates from "../../../chunks/docs-explanation/bencher-self-hosted/en/custom-ca-certificates.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/en/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/en/disaster-recovery.mdx"; @@ -20,5 +19,4 @@ import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-host - diff --git a/services/console/src/content/docs-explanation/es/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/es/bencher-self-hosted.mdx index d540cf1ab9..a3263d37f4 100644 --- a/services/console/src/content/docs-explanation/es/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/es/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/es/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/es/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/es/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/es/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/es/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/es/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/services/console/src/content/docs-explanation/fr/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/fr/bencher-self-hosted.mdx index e1f2e3709f..3eece5c143 100644 --- a/services/console/src/content/docs-explanation/fr/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/fr/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/fr/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/fr/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/fr/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/fr/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/fr/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/fr/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/services/console/src/content/docs-explanation/ja/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/ja/bencher-self-hosted.mdx index 4bb0958035..9f149d20c4 100644 --- a/services/console/src/content/docs-explanation/ja/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/ja/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/ja/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/ja/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/ja/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/ja/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/ja/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/ja/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/services/console/src/content/docs-explanation/ko/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/ko/bencher-self-hosted.mdx index 21a32fbb5f..f22e7a2749 100644 --- a/services/console/src/content/docs-explanation/ko/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/ko/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/ko/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/ko/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/ko/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/ko/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/ko/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/ko/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/services/console/src/content/docs-explanation/pt/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/pt/bencher-self-hosted.mdx index 127e7cc461..2ca895f11b 100644 --- a/services/console/src/content/docs-explanation/pt/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/pt/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/pt/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/pt/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/pt/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/pt/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/pt/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/pt/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/services/console/src/content/docs-explanation/ru/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/ru/bencher-self-hosted.mdx index 3595cd8342..ef0f0ad536 100644 --- a/services/console/src/content/docs-explanation/ru/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/ru/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/ru/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/ru/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/ru/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/ru/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/ru/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/ru/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/services/console/src/content/docs-explanation/zh/bencher-self-hosted.mdx b/services/console/src/content/docs-explanation/zh/bencher-self-hosted.mdx index ea1a30dc5a..da92042701 100644 --- a/services/console/src/content/docs-explanation/zh/bencher-self-hosted.mdx +++ b/services/console/src/content/docs-explanation/zh/bencher-self-hosted.mdx @@ -11,12 +11,10 @@ import Intro from "../../../chunks/docs-explanation/bencher-self-hosted/zh/intro import Deployment from "../../../chunks/docs-explanation/bencher-self-hosted/zh/deployment.mdx"; import ApiServerUrl from "../../../chunks/docs-explanation/bencher-self-hosted/zh/api-server-url.mdx"; import Https from "../../../chunks/docs-explanation/bencher-self-hosted/zh/https.mdx"; -import Backups from "../../../chunks/docs-explanation/bencher-self-hosted/zh/backups.mdx"; import DisasterRecovery from "../../../chunks/docs-explanation/bencher-self-hosted/zh/disaster-recovery.mdx"; - \ No newline at end of file diff --git a/skills/bencher/self-hosted.md b/skills/bencher/self-hosted.md index d579467dc0..d800617021 100644 --- a/skills/bencher/self-hosted.md +++ b/skills/bencher/self-hosted.md @@ -105,4 +105,5 @@ bencher auth signup --name "Admin" --i-agree admin@example.com --host http://loc ## Full Documentation See https://bencher.dev/docs/tutorial/self-hosted/ for the complete self-hosted tutorial -including production deployment, backups, and upgrades. +including production deployment and upgrades, and +https://bencher.dev/docs/explanation/bencher-self-hosted/ for disaster recovery.