diff --git a/.github/workflows/deploy-develop.yml b/.github/workflows/deploy-develop.yml index ac13c41eb94..86afae54342 100644 --- a/.github/workflows/deploy-develop.yml +++ b/.github/workflows/deploy-develop.yml @@ -37,8 +37,6 @@ jobs: restore-keys: | ${{ runner.os }}-gatsby-build-develop- - - name: Pull sources - run: yarn pull-sources --force-build - name: Fix mtimes run: yarn fix-mtimes --force - name: Gatsby build diff --git a/.github/workflows/deploy-main.yml b/.github/workflows/deploy-main.yml index efb45f3c745..99b25dbf82b 100644 --- a/.github/workflows/deploy-main.yml +++ b/.github/workflows/deploy-main.yml @@ -37,8 +37,6 @@ jobs: restore-keys: | ${{ runner.os }}-gatsby-build-main- - - name: Pull sources - run: yarn pull-sources --force-build - name: Fix mtimes run: yarn fix-mtimes --force - name: Gatsby build diff --git a/.gitignore b/.gitignore index 515062272ba..87cb7a1cefe 100644 --- a/.gitignore +++ b/.gitignore @@ -75,7 +75,6 @@ __pycache__ # Project specific dev-sources.json -external_sources product_docs/content/* !product_docs/content/.keep product_docs/content_build/* diff --git a/.gitmodules b/.gitmodules index a0510f69448..3dc7cbadc26 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "static/edb-icons"] path = static/edb-icons - url = https://edb-submodule-user:nMGifi48LiyofYrYkpjx78Bj7hQUWQXER494dyfHTDEx9UiMnK7WpovFVMpBJBxG@github.com/rocketinsights/edb-icons \ No newline at end of file + url = https://edb-submodule-user:nMGifi48LiyofYrYkpjx78Bj7hQUWQXER494dyfHTDEx9UiMnK7WpovFVMpBJBxG@github.com/rocketinsights/edb-icons diff --git a/README.md b/README.md index 7275ca77573..7eb974bb1bd 100644 --- a/README.md +++ b/README.md @@ -52,36 +52,22 @@ If you are a Windows user, you can work with Docs without installing it locally - For a list of these sources, see [product_docs/docs](https://github.com/EnterpriseDB/docs/tree/develop/product_docs/docs) -- GitHub-Sourced Docs (entirety of `/external_sources` at present) - - - [Kubernetes Docs](https://github.com/EnterpriseDB/edb-k8s-doc) - - [Barman](https://github.com/2ndquadrant-it/barman) - - [pgBackRest](https://github.com/EnterpriseDB/pgbackrest-docs) - ### Configuring Which Sources are Loaded When doing local development of the site or advocacy content, you may want to load other sources to experience the full site. The more sources you load, the slower the site will build, so it's recommended to typically only load the content you'll be working with the most. #### `yarn config-sources` -Run `yarn config-sources` to setup your `dev-sources.json` file. This file tells Gatsby which sources to load, and also provides the next script `yarn pull-sources` with the data it needs. The script is interactive! +Run `yarn config-sources` to setup your `dev-sources.json` file. This file tells Gatsby which sources to load. The script is interactive! Alternatively, you can setup your `dev-sources.json` file manually by copying `dev-sources.sample` to `dev-sources.json`, and editing as desired. The sample file will source everything by default. -If you select an "external" source, you will be prompted to run the next command, `yarn pull-sources`, to download and load this content from the internet. - -#### `yarn pull-sources` - -Use this command to pull down all the sources you have specified in your `dev-sources.json` file. **This will wipe all external sources**, so make sure you do not have any local changes to these files (in the `external_sources` subdirectory) that you want to save! The `/advocacy_docs` and `/product_docs` folders will not be affected. - ### Types of Sources **Advocacy Docs** are tutorial content, getting-started material, and anything that is about a subject matter area, but not explicitly tied to a product version. **Product Docs** are versioned documentation for products. They follow a slightly stricter file structure to allow for version switching and other features. -**GitHub Docs** are a low-touch way to display markdown content from GitHub. These docs will link back to the relavent GitHub url on each page, in order to provide any missing context. - More details can be found on the [Adding New Sources](README_ADDING_NEW_SOURCES.md) page. ### Adding New Sources diff --git a/README_ADDING_NEW_SOURCES.md b/README_ADDING_NEW_SOURCES.md index 4429252d503..7265d5113d9 100644 --- a/README_ADDING_NEW_SOURCES.md +++ b/README_ADDING_NEW_SOURCES.md @@ -10,23 +10,15 @@ Advocacy Docs are tutorial content, getting-started material, and anything that ### Product Docs Product Docs are versioned documentation for products. They follow a slightly stricter file structure to allow for version switching and other features. -### GitHub Docs -GitHub Docs are a relatively low-touch way to display markdown content from GitHub. These docs are intended to link back to the relevant GitHub url on each page, in order to provide any missing context. - ### Summary Table -| Source Type | Sourcing | Versioned | External ** | Location -|---------------|-----------------|-----------|-------------|------------- -| Advocacy Docs | always loaded * | no | no | `advocacy_docs` -| Product Docs | configurable | yes | no | `product_docs/docs` -| GitHub Docs | configurable | no | yes | `external_sources` *** +| Source Type | Sourcing | Versioned | Location +|---------------|-----------------|-----------|------------- +| Advocacy Docs | always loaded * | no | `advocacy_docs` +| Product Docs | configurable | yes | `product_docs/docs` \* While Advocacy Docs are currently always loaded, this could be changed in the future as needed -\** While currently only GitHub Docs are external, this is because no external docs currently conform to a structure that could be easily used as a Product Doc. As needed, we will add support for external Product Docs. - -\*** This will likely change, as it is intended that Product Docs could be optionally external in the future as well. - ## 2. Structure the Markdown Files In general, the best way to get a sense of the required file/folder structure will be to look at existing examples. However, here is a brief overview of what is required for each source type. @@ -53,21 +45,15 @@ Product Docs must confirm to a specific folder structing to enable version switc Once you're within the versioned directory, things should be structured like other source types. -### External Sources - -If a doc is being sourced externally, it may not necessarilly be in the correct format that Gatsby expects. If you're adding an external source, see ***External Sources*** in the next section. - ## 3. Update Sourcing Process -If your new doc is a Product Doc or a GitHub Doc, you will need to update the sourcing process, as these source types are configurable. You can skip this section if you're adding a standard internal Advocacy Doc. +If your new doc is a Product Doc, you will need to update the sourcing process, as this source type is configurable. You can skip this section if you're adding a standard Advocacy Doc. ### `config_sources.py` This is the script that is run when a user runs `yarn config-sources`. It will need to be edited to present your new option to the user, and to write the source name to `dev-sources.json`. **This source name should match the top level folder name for your doc!** -If you're adding a Product Doc, you'll want to add your source name to `PRODUCT_DOCS`. If you're adding a GitHub Doc, you'll add your source name to `BASE_OUTPUT` directly. - -Next, you'll need to add your source to `OPTIONS`. New Product Docs should be inserted at the end of the current product doc listings, and new GitHub Docs should be added at the end of `OPTIONS`. If your doc is sourced externally, be sure to set the `external: True` option. +If you're adding a Product Doc, you'll want to add your source name to `PRODUCT_DOCS`. Next, you'll need to add your source to `OPTIONS`. New Product Docs should be inserted at the end of the current product doc listings. Once you've made your changes, run `yarn config-sources` and confirm that the output in `dev-sources.json` is as expected. @@ -89,15 +75,7 @@ This sample file should also be updated with your new source key, for those who If the source requires something different than previous sources have, or if there is something different about your source that we have not previously supported, it is likely some changes will need to be made in `gatsby-node.js`. -### External Sources - -If you are bringing in an external source, you will need to write scripts that download your source, and convert it to the necessary format for your chosen source type. This will require creating `source_[SOURCE_NAME].py` script in `scripts/source`, and connecting it to `pull_sources.py`. Your sourcing script needs to accomplish everything necessary for Gatsby to load the files successfully, including format translation and any other necessary changes. - -## 4. Update the Index Navigation - -The navigation links on the side of the index page will need to be updated to link to your new source. Within `src/constants/index-navigation.js`, you'll need to edit the `rawIndexNavigation` json to add your source. The structure should be fairly apparent. If your source is configurable (IE it's not an Advocacy Doc), you should set the `source` key equal to whatever your source name is. This will tell Gatsby to only should this link if your source is loaded. - -## 5. You're Hopefully Done! +### 4. You're Hopefully Done! At this point, you should have your new source integrated in the site! diff --git a/advocacy_docs/kubernetes/cloud_native_operator/api_reference.mdx b/advocacy_docs/kubernetes/cloud_native_operator/api_reference.mdx index a183992f5fd..88c8b29293f 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/api_reference.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/api_reference.mdx @@ -1,9 +1,9 @@ --- title: 'API Reference' originalFilePath: 'src/api_reference.md' +product: 'Cloud Native Operator' --- - Cloud Native PostgreSQL extends the Kubernetes API defining the following custom resources: diff --git a/advocacy_docs/kubernetes/cloud_native_operator/architecture.mdx b/advocacy_docs/kubernetes/cloud_native_operator/architecture.mdx index 1b70a7378f4..26bf91d2dae 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/architecture.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/architecture.mdx @@ -1,9 +1,9 @@ --- title: 'Architecture' originalFilePath: 'src/architecture.md' +product: 'Cloud Native Operator' --- - For High Availability goals, the PostgreSQL database management system provides administrators with built-in **physical replication** capabilities based on **Write Ahead Log (WAL) shipping**. PostgreSQL supports both asynchronous and synchronous streaming replication, as well as asynchronous file-based log shipping (normally used as a fallback option, for example, to store WAL files in an object store). Replicas are usually called *standby servers* and can also be used for read-only workloads, thanks to the *Hot Standby* feature. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/backup_recovery.mdx b/advocacy_docs/kubernetes/cloud_native_operator/backup_recovery.mdx index 5c45a5872fd..2af304bda15 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/backup_recovery.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/backup_recovery.mdx @@ -1,9 +1,9 @@ --- title: 'Backup and Recovery' originalFilePath: 'src/backup_recovery.md' +product: 'Cloud Native Operator' --- - The operator can orchestrate a continuous backup infrastructure that is based on the [Barman](https://pgbarman.org) tool. Instead of using the classical architecture with a Barman server, which diff --git a/advocacy_docs/kubernetes/cloud_native_operator/before_you_start.mdx b/advocacy_docs/kubernetes/cloud_native_operator/before_you_start.mdx index 50ff115047f..1d78a46bef2 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/before_you_start.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/before_you_start.mdx @@ -1,9 +1,9 @@ --- title: 'Before You Start' originalFilePath: 'src/before_you_start.md' +product: 'Cloud Native Operator' --- - Before we get started, it is essential to go over some terminology that is specific to Kubernetes and PostgreSQL. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/bootstrap.mdx b/advocacy_docs/kubernetes/cloud_native_operator/bootstrap.mdx index 7a99a1fffb5..a6288dce3c4 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/bootstrap.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/bootstrap.mdx @@ -1,9 +1,9 @@ --- title: 'Bootstrap' originalFilePath: 'src/bootstrap.md' +product: 'Cloud Native Operator' --- - This section describes the options you have to create a new PostgreSQL cluster and the design rationale behind them. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/cloud_setup.mdx b/advocacy_docs/kubernetes/cloud_native_operator/cloud_setup.mdx index 655bdb7bde6..55699d23447 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/cloud_setup.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/cloud_setup.mdx @@ -1,9 +1,9 @@ --- title: 'Cloud Setup' originalFilePath: 'src/cloud_setup.md' +product: 'Cloud Native Operator' --- - This section describes how to orchestrate the deployment and management of a PostgreSQL High Availability cluster in a [Kubernetes](https://www.kubernetes.io/) cluster in the public cloud using [CustomResourceDefinitions](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) diff --git a/advocacy_docs/kubernetes/cloud_native_operator/container_images.mdx b/advocacy_docs/kubernetes/cloud_native_operator/container_images.mdx index 5634fc5945d..cb6f1125251 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/container_images.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/container_images.mdx @@ -1,9 +1,9 @@ --- title: 'Container Image Requirements' originalFilePath: 'src/container_images.md' +product: 'Cloud Native Operator' --- - The Cloud Native PostgreSQL operator for Kubernetes is designed to work with any compatible container image of PostgreSQL that complies with the following requirements: diff --git a/advocacy_docs/kubernetes/cloud_native_operator/credits.mdx b/advocacy_docs/kubernetes/cloud_native_operator/credits.mdx index f98fc34c053..99c84eb872b 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/credits.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/credits.mdx @@ -1,9 +1,9 @@ --- title: 'Credits' originalFilePath: 'src/credits.md' +product: 'Cloud Native Operator' --- - Cloud Native PostgreSQL (Operator for Kubernetes/OpenShift) has been designed, developed, and tested by the EnterpriseDB Cloud Native team: diff --git a/advocacy_docs/kubernetes/cloud_native_operator/e2e.mdx b/advocacy_docs/kubernetes/cloud_native_operator/e2e.mdx index 9f11bf83211..5fa15fb98c9 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/e2e.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/e2e.mdx @@ -1,9 +1,9 @@ --- title: 'End-to-End Tests' originalFilePath: 'src/e2e.md' +product: 'Cloud Native Operator' --- - Cloud Native PostgreSQL operator is automatically tested after each commit via a suite of **End-to-end (E2E) tests**. It ensures that the operator correctly deploys and manages the PostgreSQL clusters. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/evaluation.mdx b/advocacy_docs/kubernetes/cloud_native_operator/evaluation.mdx index e4b66baf592..13c0ada93b5 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/evaluation.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/evaluation.mdx @@ -1,9 +1,9 @@ --- title: 'Free evaluation' originalFilePath: 'src/evaluation.md' +product: 'Cloud Native Operator' --- - Cloud Native PostgreSQL is available for a free evaluation. The process is different between Vanilla/Community PostgreSQL and EDB Postgres Advanced. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/expose_pg_services.mdx b/advocacy_docs/kubernetes/cloud_native_operator/expose_pg_services.mdx index 759ca01f95e..c8a90f4f27e 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/expose_pg_services.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/expose_pg_services.mdx @@ -1,9 +1,9 @@ --- title: 'Exposing Postgres Services' originalFilePath: 'src/expose_pg_services.md' +product: 'Cloud Native Operator' --- - This section explains how to expose a PostgreSQL service externally, allowing access to your PostgreSQL database **from outside your Kubernetes cluster** using NGINX Ingress Controller. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/failure_modes.mdx b/advocacy_docs/kubernetes/cloud_native_operator/failure_modes.mdx index 470cf9f4346..bf223a1c1cc 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/failure_modes.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/failure_modes.mdx @@ -1,9 +1,9 @@ --- title: 'Failure Modes' originalFilePath: 'src/failure_modes.md' +product: 'Cloud Native Operator' --- - This section provides an overview of the major failure scenarios that PostgreSQL can face on a Kubernetes cluster during its lifetime. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/index.mdx b/advocacy_docs/kubernetes/cloud_native_operator/index.mdx index 4fe9fb1b1db..560fdd4dc03 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/index.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/index.mdx @@ -1,9 +1,11 @@ --- title: 'Cloud Native PostgreSQL' originalFilePath: 'src/index.md' +product: 'Cloud Native Operator' indexCards: none directoryDefaults: prevNext: true + iconName: kubernetes navigation: - index @@ -34,7 +36,6 @@ navigation: --- - **Cloud Native PostgreSQL** is an [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) designed by [EnterpriseDB](https://www.enterprisedb.com) to manage [PostgreSQL](https://www.postgresql.org/) workloads on any supported [Kubernetes](https://kubernetes.io) diff --git a/advocacy_docs/kubernetes/cloud_native_operator/installation.mdx b/advocacy_docs/kubernetes/cloud_native_operator/installation.mdx index 7d09e83bf3c..3da27118e4a 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/installation.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/installation.mdx @@ -1,9 +1,9 @@ --- title: 'Installation' originalFilePath: 'src/installation.md' +product: 'Cloud Native Operator' --- - ## Installation on Kubernetes The operator can be installed like any other resource in Kubernetes, diff --git a/advocacy_docs/kubernetes/cloud_native_operator/kubernetes_upgrade.mdx b/advocacy_docs/kubernetes/cloud_native_operator/kubernetes_upgrade.mdx index bfc030741af..cc3c7d0f2f2 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/kubernetes_upgrade.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/kubernetes_upgrade.mdx @@ -1,9 +1,9 @@ --- title: 'Kubernetes Upgrade' originalFilePath: 'src/kubernetes_upgrade.md' +product: 'Cloud Native Operator' --- - Kubernetes clusters must be kept updated. This becomes even more important if you are self-managing your Kubernetes clusters, especially on **bare metal**. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/license_keys.mdx b/advocacy_docs/kubernetes/cloud_native_operator/license_keys.mdx index 7fc8017c293..94c60725a99 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/license_keys.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/license_keys.mdx @@ -1,9 +1,9 @@ --- title: 'License and License Keys' originalFilePath: 'src/license_keys.md' +product: 'Cloud Native Operator' --- - Each `Cluster` resource has a `licenseKey` parameter in its definition. A `licenseKey` is always required for the operator to work. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/operator_capability_levels.mdx b/advocacy_docs/kubernetes/cloud_native_operator/operator_capability_levels.mdx index 056ca629915..181c9944f5a 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/operator_capability_levels.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/operator_capability_levels.mdx @@ -1,9 +1,9 @@ --- title: 'Operator Capability Levels' originalFilePath: 'src/operator_capability_levels.md' +product: 'Cloud Native Operator' --- - This section provides a summary of the capabilities implemented by Cloud Native PostgreSQL, classified using the ["Operator SDK definition of Capability Levels"](https://sdk.operatorframework.io/docs/advanced-topics/operator-capabilities/operator-capabilities/) diff --git a/advocacy_docs/kubernetes/cloud_native_operator/postgresql_conf.mdx b/advocacy_docs/kubernetes/cloud_native_operator/postgresql_conf.mdx index 42fad3113ab..1f3715fac76 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/postgresql_conf.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/postgresql_conf.mdx @@ -1,9 +1,9 @@ --- title: 'PostgreSQL Configuration' originalFilePath: 'src/postgresql_conf.md' +product: 'Cloud Native Operator' --- - Users that are familiar with PostgreSQL are aware of the existence of the following two files to configure an instance: diff --git a/advocacy_docs/kubernetes/cloud_native_operator/quickstart.mdx b/advocacy_docs/kubernetes/cloud_native_operator/quickstart.mdx index 2833ff7050e..3c957609494 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/quickstart.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/quickstart.mdx @@ -1,9 +1,9 @@ --- title: 'Quickstart' originalFilePath: 'src/quickstart.md' +product: 'Cloud Native Operator' --- - This section describes how to test a PostgreSQL cluster on your laptop/computer using Cloud Native PostgreSQL on a local Kubernetes cluster in [Minikube](https://kubernetes.io/docs/setup/learning-environment/minikube/) or diff --git a/advocacy_docs/kubernetes/cloud_native_operator/rolling_update.mdx b/advocacy_docs/kubernetes/cloud_native_operator/rolling_update.mdx index 5d9e70fa37d..2c925eac978 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/rolling_update.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/rolling_update.mdx @@ -1,9 +1,9 @@ --- title: 'Rolling Updates' originalFilePath: 'src/rolling_update.md' +product: 'Cloud Native Operator' --- - The operator allows changing the PostgreSQL version used in a cluster while applications are running against it. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/samples.mdx b/advocacy_docs/kubernetes/cloud_native_operator/samples.mdx index 9448a97f292..3c3da7196ca 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/samples.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/samples.mdx @@ -1,9 +1,9 @@ --- title: 'Configuration Samples' originalFilePath: 'src/samples.md' +product: 'Cloud Native Operator' --- - In this section, you can find some examples of configuration files to set up your PostgreSQL `Cluster`. * [`cluster-example.yaml`](../samples/cluster-example.yaml): diff --git a/advocacy_docs/kubernetes/cloud_native_operator/security.mdx b/advocacy_docs/kubernetes/cloud_native_operator/security.mdx index cdaf9b8f289..90288f20c6f 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/security.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/security.mdx @@ -1,9 +1,9 @@ --- title: 'Security' originalFilePath: 'src/security.md' +product: 'Cloud Native Operator' --- - This section contains information about security for Cloud Native PostgreSQL, from a few standpoints: source code, Kubernetes, and PostgreSQL. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/ssl_connections.mdx b/advocacy_docs/kubernetes/cloud_native_operator/ssl_connections.mdx index f8ccf6c4b78..f88d4305455 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/ssl_connections.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/ssl_connections.mdx @@ -1,9 +1,9 @@ --- title: 'Client SSL Connections' originalFilePath: 'src/ssl_connections.md' +product: 'Cloud Native Operator' --- - Cloud Native PostgreSQL currently creates a Certification Authority (CA) for every cluster. This CA is used to sign the certificates to offer to clients and create a secure connection with them. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/storage.mdx b/advocacy_docs/kubernetes/cloud_native_operator/storage.mdx index 7ced63884e7..346bf8911e9 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/storage.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/storage.mdx @@ -1,9 +1,9 @@ --- title: 'Storage' originalFilePath: 'src/storage.md' +product: 'Cloud Native Operator' --- - Storage is a critical component in a database workload. The operator will create a Persistent Volume Claims for each PostgreSQL instance and mount then into the Pods. diff --git a/advocacy_docs/kubernetes/cloud_native_operator/use_cases.mdx b/advocacy_docs/kubernetes/cloud_native_operator/use_cases.mdx index 30ef785d289..862ace48153 100644 --- a/advocacy_docs/kubernetes/cloud_native_operator/use_cases.mdx +++ b/advocacy_docs/kubernetes/cloud_native_operator/use_cases.mdx @@ -1,9 +1,9 @@ --- title: 'Use cases' originalFilePath: 'src/use_cases.md' +product: 'Cloud Native Operator' --- - Cloud Native PostgreSQL has been designed to work with applications that reside in the same Kubernetes cluster, for a full cloud native experience. diff --git a/advocacy_docs/playground/community-archive/style/index.mdx b/advocacy_docs/playground/community-archive/style/index.mdx index 185810b322c..b08dab42434 100644 --- a/advocacy_docs/playground/community-archive/style/index.mdx +++ b/advocacy_docs/playground/community-archive/style/index.mdx @@ -66,10 +66,11 @@ as well, which is handy for things like Katacoda embeds: ## A note on search engines -Readers may find your article from a search engine. If your article is split into separate pages, keep in mind that readers may view the pages out of order. It might be useful to alert them to important details that previous pages cover. To do so, we recommend using the `` component at the top of your article where prior context would be useful: +Readers may find your article from a search engine. If your article is split into separate pages, keep in mind that readers may view the pages out of order. It might be useful to alert them to important details that previous pages cover. To do so, we recommend using notes at the top of your article where prior context would be useful: ```markdown -Don't forget to [install prerequisite](/link/article) before trying to connect! +!!! note + Don't forget to [install prerequisite](/link/article) before trying to connect! ``` ## Further reading diff --git a/advocacy_docs/postgresql_journey/02_installing/05_docker.mdx b/advocacy_docs/postgresql_journey/02_installing/05_docker.mdx index 438de13e6da..ba740473326 100644 --- a/advocacy_docs/postgresql_journey/02_installing/05_docker.mdx +++ b/advocacy_docs/postgresql_journey/02_installing/05_docker.mdx @@ -150,9 +150,8 @@ Here's an example: (1 row) ``` - -Don't try to run multiple postgres containers simultaneously sharing the same volume for data - your database will probably be corrupted! - +!!! warning + Don't try to run multiple postgres containers simultaneously sharing the same volume for data - your database will probably be corrupted! To remove the volume, use the command: diff --git a/advocacy_docs/postgresql_journey/02_installing/index.mdx b/advocacy_docs/postgresql_journey/02_installing/index.mdx index a55ff5d87ff..14d55150fca 100644 --- a/advocacy_docs/postgresql_journey/02_installing/index.mdx +++ b/advocacy_docs/postgresql_journey/02_installing/index.mdx @@ -1,7 +1,8 @@ --- title: Installing PostgreSQL navTitle: Installing -iconName: install +directoryDefaults: + iconName: install --- A PostgreSQL installation involves one or more of: diff --git a/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/01_psycopg2.mdx b/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/01_psycopg2.mdx index b835f60c9b2..69ef52c0905 100644 --- a/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/01_psycopg2.mdx +++ b/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/01_psycopg2.mdx @@ -10,7 +10,8 @@ tags: - psycopg2 --- -First, [install psycopg2](/postgresql_journey/04_developing/connecting_to_postgres/python) +!!! note + First, [install psycopg2](/postgresql_journey/04_developing/connecting_to_postgres/python) Call `psycopg2.connect()` to open a connection: diff --git a/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/02_django.mdx b/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/02_django.mdx index 3c8892a5988..c49a0536f5d 100644 --- a/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/02_django.mdx +++ b/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/02_django.mdx @@ -14,9 +14,8 @@ katacodaPages: account: shog9 --- - -Don't forget to [install psycopg2](/postgresql_journey/04_developing/connecting_to_postgres/python) before trying to connect! - +!!! note + Don't forget to [install psycopg2](/postgresql_journey/04_developing/connecting_to_postgres/python) before trying to connect! Django allows persisting and querying data models via [a rich set of options to map classes to database tables](https://docs.djangoproject.com/en/3.0/topics/db/). The connection to PostgreSQL is configured via the "default" key in the `DATABASES` dictionary in Django settings (usually configured by editing a project's `settings.py`): diff --git a/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/03_SQLAlchemy.mdx b/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/03_SQLAlchemy.mdx index c5079ab0b34..e3ad4a7f12f 100644 --- a/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/03_SQLAlchemy.mdx +++ b/advocacy_docs/postgresql_journey/04_developing/connecting_to_postgres/python/03_SQLAlchemy.mdx @@ -10,7 +10,8 @@ tags: - sqlalchemy --- -Don't forget to [install psycopg2](/postgresql_journey/04_developing/connecting_to_postgres/python) before trying to connect! +!!! note + Don't forget to [install psycopg2](/postgresql_journey/04_developing/connecting_to_postgres/python) before trying to connect! SQLAlchemy is a flexible data access library which builds on psycopg2 to add a Python expression language, and then builds a full ORM on that. You can use it as a thin wrapper around psycopg2, an extensive object mapper, or anything in between. @@ -32,4 +33,4 @@ with engine.connect() as connection: print(result) ``` -See [the SQLAlchemy documentation for more](https://docs.sqlalchemy.org/en/13/core/expression_api.html). \ No newline at end of file +See [the SQLAlchemy documentation for more](https://docs.sqlalchemy.org/en/13/core/expression_api.html). diff --git a/advocacy_docs/postgresql_journey/04_developing/index.mdx b/advocacy_docs/postgresql_journey/04_developing/index.mdx index 58fef0390a4..5a257208ec6 100644 --- a/advocacy_docs/postgresql_journey/04_developing/index.mdx +++ b/advocacy_docs/postgresql_journey/04_developing/index.mdx @@ -1,4 +1,6 @@ --- title: Developing with PostgreSQL navTitle: Developing +directoryDefaults: + iconName: 'connect' --- diff --git a/advocacy_docs/supported-open-source/barman/index.mdx b/advocacy_docs/supported-open-source/barman/index.mdx index 3a2cf0cc4b3..737b15afbb6 100644 --- a/advocacy_docs/supported-open-source/barman/index.mdx +++ b/advocacy_docs/supported-open-source/barman/index.mdx @@ -10,6 +10,8 @@ tags: - replication - rsync - postgresql +directoryDefaults: + iconName: coffee --- Barman (Backup and Recovery Manager) is an open-source administration tool for remote backups and disaster recovery of PostgreSQL servers in business-critical environments. It relies on PostgreSQL’s robust and reliable Point In Time Recovery technology, allowing DBAs to remotely manage a complete catalogue of backups and the recovery phase of multiple remote servers – all from one location. Barman is distributed under GNU GPL 3 and maintained by EDB. diff --git a/advocacy_docs/supported-open-source/barman/single-server-streaming/index.mdx b/advocacy_docs/supported-open-source/barman/single-server-streaming/index.mdx new file mode 100644 index 00000000000..5783fa77556 --- /dev/null +++ b/advocacy_docs/supported-open-source/barman/single-server-streaming/index.mdx @@ -0,0 +1,25 @@ +--- +title: "Backup and Recovery: Single-Server Streaming with Barman" +description: "A quick demonstration of Barman installation, configuration, and basic backup and restore operations" +navTitle: "Demo: Single-Server Streaming" +product: barman +platform: ubuntu +tags: + - ubuntu + - barman + - postgresql + - streaming-replication + - live-demo +iconName: coffee +directoryDefaults: + prevNext: true +--- + +This section demonstrates setting up a backup and recovery scenario using a Barman server and a PostgreSQL server. It covers: + +1. Configuring the database server to allow Barman to collect data via streaming replication +2. Installing and configuring Barman for streaming replication and testing that configuration +3. Running a full backup +4. Restoring a full backup + +Each of these steps is interactive, with the prerequisites and results of the previous step captured in a Docker image. You can work through the entire scenario in order, or skip to the step that interests you. \ No newline at end of file diff --git a/advocacy_docs/supported-open-source/barman/single-server-streaming/step01-db-setup.mdx b/advocacy_docs/supported-open-source/barman/single-server-streaming/step01-db-setup.mdx new file mode 100644 index 00000000000..d41a3c47459 --- /dev/null +++ b/advocacy_docs/supported-open-source/barman/single-server-streaming/step01-db-setup.mdx @@ -0,0 +1,126 @@ +--- +title: "Backup and Recovery: Single-Server Streaming - Configuring PostgreSQL" +description: "Configuring a PostgreSQL server for Barman streaming replication" +navTitle: "Database Server Configuration" +product: barman +platform: ubuntu +tags: + - ubuntu + - barman + - postgresql + - streaming-replication + - live-demo +katacodaPanel: + scenario: ubuntu:2004 + initializeCommand: wget -q https://raw.githubusercontent.com/josh-heyer/barmantutorial/main/step01-db-setup/docker-compose.yaml ; docker-compose up -d ; clear ; docker exec -it -u postgres pg /bin/bash + codelanguages: shell, sql, ini +iconName: coffee +--- + +This demo is interactive. You can follow along right in your browser, using Katacoda, by clicking the button below. + +!!! Note + When you click "Start Now," Katacoda will load a Docker Compose environment with two container images representing a + PostgreSQL 13 server with [the Pagila database](https://github.com/devrimgunduz/pagila) loaded (named `pg`) + and a backup server for Barman. + + Once you see a `postgres@pg` prompt, you can follow the steps below. + + + +We'll start by configuring the database itself to allow streaming replication. For this, we need two things: + +1. A dedicated superuser for Barman to connect as +2. A dedicated streaming user with the replication attribute and remote login permissions +3. Free replication slots + +### User provisioning + +Let's call our dedicated backup user, "barman". We'll create it interactively via the [`createuser`](https://www.postgresql.org/docs/current/app-createuser.html) utility: + +```shell +createuser --superuser --replication -P barman +__OUTPUT__ +Enter password for new role: +Enter it again: +``` + +Enter `example-password` when prompted (twice). + +!!! Note Make note of that password + We'll need to add it to the ~/.pgpass file on the backup server later! + +We're making this a superuser account, which will allow it full control of all databases on this server. **Be very careful** with superuser credentials! Anyone who can connect as a superuser account owns your data. + +Now we will create the streaming replication user, "streaming_barman". This doesn't need to be a superuser, but it does need the replication attribute: + +```shell +createuser --replication -P streaming_barman +__OUTPUT__ +Enter password for new role: +Enter it again: +``` + +Enter `example-password` when prompted (twice). + +We'll also need to edit `pg_hba.conf` to allow the streaming user to connect from the backup server, by [explicitly allowing it to connect in replication mode](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html): + +```shell +sed -i '$ a host replication streaming_barman all md5' /var/lib/postgresql/data/pg_hba.conf +cat /var/lib/postgresql/data/pg_hba.conf +__OUTPUT__ +... +local replication all trust +host replication all 127.0.0.1/32 trust +host replication all ::1/128 trust + +host all all all md5 +host replication streaming_barman all md5 +``` + +### Database settings for streaming + +We'll also need to make sure there are replication slots available, and that PostgreSQL will allow another sender to connect. We'll use psql to check the current settings: + +```shell +psql -d pagila +``` + +```sql +Show max_wal_senders; +Show max_replication_slots; +__OUTPUT__ + max_wal_senders +----------------- + 10 +(1 row) + + max_replication_slots +----------------------- + 10 +(1 row) +``` + +The default for both of these (for PostgreSQL 10 and above) is 10, so we're fine - but if we needed more (or if they'd been previously set to 0, thus [disabling replication](https://www.postgresql.org/docs/current/runtime-config-replication.html)) then we'd need to increase them. + + +### Gazing fondly at data + +Before we end, let's query some data - this is what we're going to back up! + +```sql +select * from actor where last_name='KILMER'; +__OUTPUT__ + actor_id | first_name | last_name | last_update +----------+------------+-----------+------------------------ + 23 | SANDRA | KILMER | 2020-02-15 09:34:33+00 + 45 | REESE | KILMER | 2020-02-15 09:34:33+00 + 55 | FAY | KILMER | 2020-02-15 09:34:33+00 + 153 | MINNIE | KILMER | 2020-02-15 09:34:33+00 + 162 | OPRAH | KILMER | 2020-02-15 09:34:33+00 +(5 rows) +``` + +We'll verify later on that this can be restored reliably. + +Continue on with [Step #2: Backup Server Configuration](step02-backup-setup). diff --git a/advocacy_docs/supported-open-source/barman/single-server-streaming/step02-backup-setup.mdx b/advocacy_docs/supported-open-source/barman/single-server-streaming/step02-backup-setup.mdx new file mode 100644 index 00000000000..1fc4f639829 --- /dev/null +++ b/advocacy_docs/supported-open-source/barman/single-server-streaming/step02-backup-setup.mdx @@ -0,0 +1,190 @@ +--- +title: "Backup and Recovery: Single-Server Streaming - Installing and Configuring Barman" +description: "Installing Barman on an Ubuntu-based backup server, creating a configuration file and testing the connection" +navTitle: "Barman Installation & Configuration" +product: barman +platform: ubuntu +tags: + - ubuntu + - barman + - postgresql + - streaming-replication + - live-demo +katacodaPanel: + scenario: ubuntu:2004 + initializeCommand: wget -q https://raw.githubusercontent.com/josh-heyer/barmantutorial/main/step02-backup-setup/docker-compose.yaml ; docker-compose up -d ; clear ; docker exec -it backup /bin/bash + codelanguages: shell, sql, ini +iconName: coffee +--- + +In [the previous step](step01-db-setup), we configured the PostgreSQL server, creating users for Barman to connect and manage backups. In this step, we'll install and configure Barman on the backup server. + +This demo is interactive. You can follow along right in your browser, using Katacoda, by clicking the button below. + +!!! Note + When you click "Start Now," Katacoda will load a Docker Compose environment with two container images representing a + PostgreSQL 13 server with [the Pagila database](https://github.com/devrimgunduz/pagila) loaded (named `pg`) + and a backup server for Barman. + + Once you see a `root@backup` prompt, you can follow the steps below. + + + +This demonstration uses an Ubuntu environment, so the first step is to configure the PostgreSQL repository ([details are on the PostgreSQL wiki](https://wiki.postgresql.org/wiki/Apt)) + +1. Install prerequesite software + + ```shell + apt-get update + apt-get install -y curl ca-certificates gnupg + __OUTPUT__ + ... + done + ``` +2. Add PostgreSQL's authentication key + + ```shell + curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - + __OUTPUT__ + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 100 4812 100 4812 0 0 24426 0 --:--:-- --:--:-- --:--:-- 24426 + OK + ``` + +3. Add the PostgreSQL repository to the list of sources, and update available packages + + ```shell + sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + apt-get update + __OUTPUT__ + ... + Reading package lists... Done + ``` + +With the repository configured, we can use apt to install the PostgreSQL client software and Barman: + +```shell +apt-get -y install barman +__OUTPUT__ +... +Processing triggers for systemd (245.4-4ubuntu3.4) ... +Processing triggers for libc-bin (2.31-0ubuntu9.1) ... +``` + +For more details on installation (including instructions for other supported operating systems), see [the Installation section in the Barman guide](http://docs.pgbarman.org/release/2.12/#installation). + +## Configuration + +All the important details for a Barman server go into a server configuration file, by default located in `/etc/barman.d`. These are in the classic INI format, with relevant settings in a section named after the server we're going to back up. We'll also use that name for the configuration file itself. Since the server we intend to back up is named "pg", we'll use that: + +```ini +cat <<'EOF' >> /etc/barman.d/pg.conf +[pg] +description = "Example of PostgreSQL Database (Streaming-Only)" +conninfo = host=pg user=barman dbname=pagila +streaming_conninfo = host=pg user=streaming_barman dbname=pagila +backup_method = postgres +streaming_archiver = on +slot_name = barman +create_slot = auto +EOF +``` + +Note that this references the users (`barman` and `streaming_barman`) that we created [in step #1 - Database Server Configuration](../step01-db-setup/). Also of interest is the value for `slot_name` - this is a replication slot that will also have to be created on the server - but we can instruct Barman to do that for us by setting `create_slot` to `auto`. + +The installation process created a brand-new barman user on the backup server, so let's switch to that for the rest of this: + +```shell +su - barman +``` + +### PostgreSQL Connection Password File + +In order for Barman to connect via the user specified, we'll need to add the password we specified in the previous step to Barman's [.pgpass file](https://www.postgresql.org/docs/current/libpq-pgpass.html): + +```shell +cat <<'EOF' >>~/.pgpass +pg:*:*:barman:example-password +pg:*:*:streaming_barman:example-password +EOF +chmod 0600 ~/.pgpass +``` + +Note the change in permissions - this is necessary to protect the visibility of the file, and PostgreSQL will not use it unless permissions are restricted. + +For more details on configuration files, see: [Configuration](http://docs.pgbarman.org/release/2.12/#configuration) in the pgBarman guide. + +### Verifying the configuration + +Now that the configuration is done, we can use Barman's check command to verify that it works: + +```shell +barman check pg +__OUTPUT__ +Server pg: + WAL archive: FAILED (please make sure WAL shipping is setup) + PostgreSQL: OK + superuser or standard user with backup privileges: OK + PostgreSQL streaming: OK + wal_level: OK + replication slot: OK + directories: OK + retention policy settings: OK + backup maximum age: OK (no last_backup_maximum_age provided) + compression settings: OK + failed backups: OK (there are 0 failed backups) + minimum redundancy requirements: OK (have 0 backups, expected at least 0) + pg_basebackup: OK + pg_basebackup compatible: OK + pg_basebackup supports tablespaces mapping: OK + systemid coherence: OK (no system Id stored on disk) + pg_receivexlog: OK + pg_receivexlog compatible: OK + receive-wal running: OK + archiver errors: OK +``` + +Uh-oh! WAL archive failed? Not a problem - that just means Barman hasn't seen any new WAL archives come in yet, which isn't surprising given this is an example +database with no writes happening! We can trigger an archive manually and verify that this works: + +```shell +barman switch-wal --archive --archive-timeout 60 pg +__OUTPUT__ +The WAL file 000000010000000000000002 has been closed on server 'pg' +Waiting for the WAL file 000000010000000000000002 from server 'pg' (max: 60 seconds) +Processing xlog segments from streaming for pg + 000000010000000000000002 +``` +This forces WAL rotation and (with the `--archive` option) waits for the WAL to arrive. We'll give it 60 seconds (with the `--archive-timeout` option) to complete; +if it doesn't complete within that amount of time, try again. For more detail on these commands and their options, refer to [the Barman man page](https://docs.pgbarman.org/release/2.12/barman.1.html#commands). + +Once switch-wal has completed successfully, run the check again and you should see all checks passing: + +```shell +barman check pg +__OUTPUT__ +Server pg: + PostgreSQL: OK + superuser or standard user with backup privileges: OK + PostgreSQL streaming: OK + wal_level: OK + replication slot: OK + directories: OK + retention policy settings: OK + backup maximum age: OK (no last_backup_maximum_age provided) + compression settings: OK + failed backups: OK (there are 0 failed backups) + minimum redundancy requirements: OK (have 0 backups, expected at least 0) + pg_basebackup: OK + pg_basebackup compatible: OK + pg_basebackup supports tablespaces mapping: OK + systemid coherence: OK (no system Id stored on disk) + pg_receivexlog: OK + pg_receivexlog compatible: OK + receive-wal running: OK + archiver errors: OK +``` + + +Continue on with [Step #3: Running Backups](step03-backup). diff --git a/advocacy_docs/supported-open-source/barman/single-server-streaming/step03-backup.mdx b/advocacy_docs/supported-open-source/barman/single-server-streaming/step03-backup.mdx new file mode 100644 index 00000000000..f52aa151afb --- /dev/null +++ b/advocacy_docs/supported-open-source/barman/single-server-streaming/step03-backup.mdx @@ -0,0 +1,96 @@ +--- +title: "Backup and Recovery: Single-Server Streaming - Running a Base Backup" +description: "Running a full backup using Barman" +navTitle: "Base Backup" +product: barman +platform: ubuntu +tags: + - ubuntu + - barman + - postgresql + - streaming-replication + - live-demo +katacodaPanel: + scenario: ubuntu:2004 + initializeCommand: wget -q https://raw.githubusercontent.com/josh-heyer/barmantutorial/main/step03-backup/docker-compose.yaml ; docker-compose up -d ; clear ; docker exec -it -u barman backup /bin/bash + codelanguages: shell, sql, ini +iconName: coffee +--- + +With [the Barman server configured in our last step](step02-backup-setup), we can run a full backup (or "base backup"). + +This demo is interactive. You can follow along right in your browser, using Katacoda, by clicking the button below. + +!!! Note + When you click "Start Now," Katacoda will load a Docker Compose environment with two container images representing a + PostgreSQL 13 server with [the Pagila database](https://github.com/devrimgunduz/pagila) loaded (named `pg`) + and a backup server for Barman. + + Once you see a `barman@backup` prompt, you can follow the steps below. + + + +To run a full backup, we use [Barman's `backup` command](http://docs.pgbarman.org/release/2.12/#backup): + +```shell +barman backup pg --wait +__OUTPUT__ +Starting backup using postgres method for server pg in /var/lib/barman/pg/base/20210226T003857 +Backup start at LSN: 0/23EA6C0 (000000010000000000000002, 003EA6C0) +Starting backup copy via pg_basebackup for 20210226T003857 +Copy done (time: 1 second) +Finalising the backup. +This is the first backup for server pg +WAL segments preceding the current backup have been found: + 000000010000000000000002 from server pg has been removed +Backup size: 38.5 MiB +Backup end at LSN: 0/4000000 (000000010000000000000003, 00000000) +Backup completed (start time: 2021-02-26 00:38:57.535973, elapsed time: 2 seconds) +Waiting for the WAL file 000000010000000000000003 from server 'pg' +Processing xlog segments from streaming for pg + 000000010000000000000002 + 000000010000000000000003 +``` + +This will wait to recieve the next WAL file to ensure the backup is complete before the command returns. + +Verify that it completed by listing backups for the server: + +```shell +barman list-backup pg +__OUTPUT__ +pg 20210226T003857 - Fri Feb 26 00:38:59 2021 - Size: 54.5 MiB - WAL Size: 0 B +``` +(the timestamps will be different for you) + + + +Now, the crucial question with backups is always the same: "can you get the data *back?*" + +We'll answer this in [Step #4: Restoring a Backup](step04-restore). diff --git a/advocacy_docs/supported-open-source/barman/single-server-streaming/step04-restore.mdx b/advocacy_docs/supported-open-source/barman/single-server-streaming/step04-restore.mdx new file mode 100644 index 00000000000..a7e7162aeb2 --- /dev/null +++ b/advocacy_docs/supported-open-source/barman/single-server-streaming/step04-restore.mdx @@ -0,0 +1,134 @@ +--- +title: "Backup and Recovery: Single-Server Streaming - Recovery" +description: "Recovering from data loss by using Barman to restore a full backup remotely" +navTitle: "Restore" +product: barman +platform: ubuntu +tags: + - ubuntu + - barman + - postgresql + - streaming-replication + - live-demo +katacodaPanel: + scenario: ubuntu:2004 + initializeCommand: wget -q https://raw.githubusercontent.com/josh-heyer/barmantutorial/main/step04-restore/docker-compose.yaml ; docker-compose up -d ; clear ; docker exec -it -u barman backup /bin/bash + codelanguages: shell, sql, ini +iconName: coffee +--- + +In the previous step, [we created a full backup of the example database](step03-backup). But it's not a real backup until we've successfully restored it - so let's end with that. + +This demo is interactive. You can follow along right in your browser, using Katacoda, by clicking the button below. + +!!! Note + When you click "Start Now," Katacoda will load a Docker Compose environment with two container images representing a + PostgreSQL 13 server with [the Pagila database](https://github.com/devrimgunduz/pagila) loaded (named `pg`) + and a backup server for Barman. + + Once you see a `barman@backup` prompt, you can follow the steps below. + + + +Something terrible has happened to our example database! This should list all the tables: + +```shell +psql -h pg -d pagila -U barman -c '\dt' +__OUTPUT__ +Did not find any relations. +``` + +All the data is gone! + +Ok, I just didn't populate the data for this step, in order to demonstrate a total loss. Fortunately, we still have a backup! + +```shell +barman list-backup pg +``` + +Let's instruct Barman to ssh into the database server and restore the backup. + +1. Connect to pg and shut down the database cluster: + + ```shell + ssh postgres@pg /usr/lib/postgresql/13/bin/pg_ctl \ + --pgdata=/var/lib/postgresql/data stop + ``` + +2. Use [Barman's recover command](http://docs.pgbarman.org/release/2.12/#recover) to connect to pg and restore the latest backup + + ```shell + barman recover --remote-ssh-command 'ssh postgres@pg' \ + pg latest \ + /var/lib/postgresql/data + ``` + + Barman handles connecting to the destination server, but we do have to provide a valid path *on* that server. In this example, the PostgreSQL cluster lives in /var/lib/postgresql/data and we're asking Barman to overwrite it with the backup. + +3. Restart the server: + + ```shell + ssh postgres@pg /usr/lib/postgresql/13/bin/pg_ctl \ + --pgdata=/var/lib/postgresql/data start + ``` + + (Hit Ctrl+C after that completes to regain control in the terminal) + +Now we should be able to reconnect to the database: + +```shell +psql -h pg -d pagila -U barman +__OUTPUT__ +psql (13.2 (Ubuntu 13.2-1.pgdg20.04+1)) +Type "help" for help. + +pagila=# +``` + +...And re-run the query we started out with: + +```sql +select * from actor where last_name='KILMER'; +__OUTPUT__ + actor_id | first_name | last_name | last_update +----------+------------+-----------+------------------------ + 23 | SANDRA | KILMER | 2020-02-15 09:34:33+00 + 45 | REESE | KILMER | 2020-02-15 09:34:33+00 + 55 | FAY | KILMER | 2020-02-15 09:34:33+00 + 153 | MINNIE | KILMER | 2020-02-15 09:34:33+00 + 162 | OPRAH | KILMER | 2020-02-15 09:34:33+00 +(5 rows) +``` + + + +## Conclusion + +This demonstration barely scratches the surface of what is possible with Barman, but hopefully it has provided you with a taste of its capabilities! For more details, visit https://pgbarman.org/ diff --git a/advocacy_docs/supported-open-source/pgadmin/index.mdx b/advocacy_docs/supported-open-source/pgadmin/index.mdx index 29d7f4b56bd..b086e2a8b6d 100644 --- a/advocacy_docs/supported-open-source/pgadmin/index.mdx +++ b/advocacy_docs/supported-open-source/pgadmin/index.mdx @@ -3,6 +3,8 @@ title: pgAdmin navTitle: pgAdmin description: EDB supports pgAdmin. product: pgAdmin +directoryDefaults: + iconName: postgresql --- pgAdmin is an open source, multi-platform console for PostgreSQL management and administration. diff --git a/advocacy_docs/supported-open-source/pgbackrest/02-installation.mdx b/advocacy_docs/supported-open-source/pgbackrest/02-installation.mdx index d188796fd96..7fd18821b7a 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/02-installation.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/02-installation.mdx @@ -8,14 +8,13 @@ tags: - pgBackRest --- - ### Available platforms -_pgBackRest_ packages are available on the following platforms. +pgBackRest packages are available on the following platforms. #### Debian/Ubuntu -To install _pgBackRest_, configure the [PostgreSQL](https://www.postgresql.org/download/linux/ubuntu/) or the [EDB](https://www.enterprisedb.com/repository-access-thank-you-page) **apt** repository and then run: +To install pgBackRest, configure the [PostgreSQL](https://www.postgresql.org/download/linux/ubuntu/) or the [EDB](https://www.enterprisedb.com/repository-access-thank-you-page) **apt** repository and then run: ```bash $ sudo apt-get install pgbackrest @@ -28,9 +27,9 @@ The following additional packages will be installed: #### RHEL/CentOS -_pgBackRest_ can be installed from the [PostgreSQL](https://yum.postgresql.org/) or the [EDB](https://www.enterprisedb.com/repository-access-thank-you-page) **yum** repositories, and requires Extra Packages for Enterprise Linux ([EPEL](https://fedoraproject.org/wiki/EPEL)). +pgBackRest can be installed from the [PostgreSQL](https://yum.postgresql.org/) or the [EDB](https://www.enterprisedb.com/repository-access-thank-you-page) **yum** repositories, and requires Extra Packages for Enterprise Linux ([EPEL](https://fedoraproject.org/wiki/EPEL)). -Once you configured the repositories, run the following command to install _pgBackRest_: +Once you configured the repositories, run the following command to install pgBackRest: ```bash $ sudo yum install pgbackrest @@ -54,7 +53,7 @@ By default, the packages create the following directories owned by `postgres`: The `pg_hba.conf` settings should allow the `postgres` user to execute the `pgbackrest` command. -If you are using **EDB Postgres Advanced Server**, the `enterprisedb` system user will execute the `pgbackrest` command. The following commands will change the ownership of the _pgBackRest_ directories: +If you are using **EDB Postgres Advanced Server**, the `enterprisedb` system user will execute the `pgbackrest` command. The following commands will change the ownership of the pgBackRest directories: ```bash $ sudo chown -R enterprisedb: /var/lib/pgbackrest diff --git a/advocacy_docs/supported-open-source/pgbackrest/03-quick_start.mdx b/advocacy_docs/supported-open-source/pgbackrest/03-quick_start.mdx index 7278cb1e779..0e966764235 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/03-quick_start.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/03-quick_start.mdx @@ -10,14 +10,13 @@ tags: - EPAS --- - -This section walks you through basic _pgBackRest_ configuration process and how to take a first backup of the database cluster running locally. It also gives a brief introduction of the `backup`, `restore`, and `info` commands. +This section walks you through basic pgBackRest configuration process and how to take a first backup of the database cluster running locally. It also gives a brief introduction of the `backup`, `restore`, and `info` commands. The [installation](02-installation) procedure must be followed before proceeding to this section. ### Configuration -The default _pgBackRest_ configuration file location is `/etc/pgbackrest/pgbackrest.conf`. If it does not exist, then `/etc/pgbackrest.conf` is used next. +The default pgBackRest configuration file location is `/etc/pgbackrest/pgbackrest.conf`. If it does not exist, then `/etc/pgbackrest.conf` is used next. For more information about configuration parameters, see the [appendix section](97-appendix#configuration-reference). @@ -47,7 +46,7 @@ pg1-user=postgres pg1-port=5432 ``` -Once _pgBackRest_ is configured, set up the database archiver process: +Once pgBackRest is configured, set up the database archiver process: ```ini # postgresql.conf @@ -55,9 +54,9 @@ archive_mode = on archive_command = 'pgbackrest --stanza=demo archive-push %p' ``` -As changing the `archive_mode` parameter requires a service restart, and changing the `archive_command` only requires a configuration reload, EDB recommends enabling `archive_mode` with an empty `archive_command` (or pointing to /bin/true) when initiating a new database cluster. +As changing the `archive_mode` parameter requires a service restart, and changing the `archive_command` only requires a configuration reload, we recommend enabling `archive_mode` with an empty `archive_command` (or pointing to /bin/true) when initiating a new database cluster. -Assume the identity of a system user (`postgres` or `enterprisedb`) and initiate the _pgBackRest_ repository: +Assume the identity of a system user (`postgres` or `enterprisedb`) and initiate the pgBackRest repository: ```bash $ pgbackrest --stanza=demo --log-level-console=info stanza-create @@ -71,7 +70,7 @@ $ pgbackrest --stanza=demo --log-level-console=info check ### Backups -When invoking _pgBackRest_, you can specify any one of the backup type: +When invoking pgBackRest, you can specify any one of the backup type: * Full backup - `full` * Copies all database cluster files. @@ -93,7 +92,7 @@ For example: $ pgbackrest --stanza=demo --type=incr backup ``` -* Differential backup `diff` +* Differential backup - `diff` * Copies only the database cluster files that have changed since the last full backup. * Similar to an incremental backup, but always depends on the last full backup. @@ -103,7 +102,7 @@ For example: $ pgbackrest --stanza=demo --type=diff backup ``` -If there is no full backup to base an incremental or differential backup on, _pgBackRest_ will run in full backup mode instead. +If there is no full backup to base an incremental or differential backup on, pgBackRest will run in full backup mode instead. ### Backup Information @@ -155,9 +154,9 @@ To choose the recovery target type for the restore, include the `--type` command When `--type` is set to **name**, transaction ID (**xid**), or **time**, use the `--target` option to specify a restore point. -_pgBackRest_ will automatically select the correct backup set to restore if a recovery target time is specified. Otherwise, the latest backup set will be used. To restore a specific backup set, use the `--set` option. +pgBackRest will automatically select the correct backup set to restore if a recovery target time is specified. Otherwise, the latest backup set will be used. To restore a specific backup set, use the `--set` option. -To change the `recovery_target_action` _Postgres_ setting, use the restore `--target-action` option: +To change the `recovery_target_action` PostgreSQL setting, use the restore `--target-action` option: * `pause` - pause when recovery target is reached (default). * `promote` - promote and switch timeline when recovery target is reached. diff --git a/advocacy_docs/supported-open-source/pgbackrest/04-recommended_settings.mdx b/advocacy_docs/supported-open-source/pgbackrest/04-recommended_settings.mdx index b886f9c3e5a..e6e46372997 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/04-recommended_settings.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/04-recommended_settings.mdx @@ -4,8 +4,7 @@ description: "Recommendations & rationale for pgBackRest configuration settings" product: 'pgBackRest' --- - -This section walks you through the recommended settings while using _pgBackRest_. +This section walks you through the recommended settings while using pgBackRest. ### Encryption @@ -34,7 +33,7 @@ Each process will perform compression and transfer to make the command run faste ### Backup Fast Start -Use the `start-fast=y` setting to force a checkpoint to start the backup quickly. This is achieved inside _pgBackRest_ by passing **true** to the fast parameter of the **pg_start_backup()** database function. The backup will then begin immediately rather than waiting for the next regular checkpoint triggered by the database server itself. +Use the `start-fast=y` setting to force a checkpoint to start the backup quickly. This is achieved inside pgBackRest by passing **true** to the fast parameter of the **pg_start_backup()** database function. The backup will then begin immediately rather than waiting for the next regular checkpoint triggered by the database server itself. ### Delta diff --git a/advocacy_docs/supported-open-source/pgbackrest/05-retention_policy.mdx b/advocacy_docs/supported-open-source/pgbackrest/05-retention_policy.mdx index 206c0a6b4d1..b3fc095a650 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/05-retention_policy.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/05-retention_policy.mdx @@ -4,16 +4,15 @@ description: "Configuration options and considerations for the removal of obsole product: 'pgBackRest' --- - Setting retention policy options allows to remove obsolete backups. Those settings will then be a trade-off between saving space and data retention. ### Full backup retention Full backup retention is determined by the `repo1-retention-full-type` and `repo1-retention-full` options. -The `repo1-retention-full-type` option can be set to `count` (default) to retain a specific number of full backups. As an example, if `repo1-retention-full-type=count` and `repo-retention-full=2`, _pgBackRest_ will retain the 2 last successful full backups. +The `repo1-retention-full-type` option can be set to `count` (default) to retain a specific number of full backups. As an example, if `repo1-retention-full-type=count` and `repo1-retention-full=2`, pgBackRest will retain the 2 last successful full backups. -Alternatively the `repo1-retention-full-type` option can be set to `time` to retain full backups for a specific time duration. With this configuration, at least one full backup older than the retention period will remain to fulfill the retention requirement. All other full backups older than the `repo1-retention-full` value, measured in days, will be removed from the repository. As an example, if `repo1-retention-full-type=time` and `repo-retention-full=30` (days), one full backup older than 30 days will be preserved. If in this example the repository would hold five full backups - one 25 days old, one 35 days old, and the rest older - the 35-days-old full backup would still be required to restore to the period between 30 and 25 days ago, and as such is kept even though it is older than the configured retention period. All other older backups will be removed during retention maintenance. +Alternatively the `repo1-retention-full-type` option can be set to `time` to retain full backups for a specific time duration. With this configuration, at least one full backup older than the retention period will remain to fulfill the retention requirement. All other full backups older than the `repo1-retention-full` value, measured in days, will be removed from the repository. As an example, if `repo1-retention-full-type=time` and `repo1-retention-full=30` (days), one full backup older than 30 days will be preserved. If in this example the repository would hold five full backups - one 25 days old, one 35 days old, and the rest older - the 35-days-old full backup would still be required to restore to the period between 30 and 25 days ago, and as such is kept even though it is older than the configured retention period. All other older backups will be removed during retention maintenance. When a full backup expires, all differential and incremental backups associated with it will also expire. When the `repo1-retention-full` option is not defined, a warning will be issued. @@ -31,19 +30,19 @@ When not defined, all differential backups will be retained until the dependent ### Archive retention -_pgBackRest_ allows to define a specific retention policy for archives. +pgBackRest allows to define a specific retention policy for archives. -> :warning: _pgBackRest_ relies on backup start time to define the archives to clean. In some cases, the oldest archived WAL file in the repository might be older than the first backup WAL start location, in which case it will not be removed until the first backup expires. +> :warning: pgBackRest relies on backup start location to define the archives to clean. In some cases, the oldest archived WAL file in the repository might be older than the first backup start location, in which case it will not be removed until the first backup expires. #### `repo1-retention-archive-type` The `repo1-retention-archive-type` option can be set to define the backup types counted for WAL retention. -If the `repo1-retention-archive-type` option is set to `full` (default), _pgBackRest_ will keep archived WAL files for the number of full backups as defined by `repo1-retention-archive`. +If the `repo1-retention-archive-type` option is set to `full` (default), pgBackRest will keep archived WAL files for the number of full backups as defined by `repo1-retention-archive`. -If the `repo1-retention-archive-type` option is set to `diff` (differential), _pgBackRest_ will keep archives for the number of full and differential backups defined by `repo1-retention-archive`. As an example, if the last backup taken was a full backup, it will be counted as a differential for the purpose of the repository retention. +If the `repo1-retention-archive-type` option is set to `diff` (differential), pgBackRest will keep archives for the number of full and differential backups defined by `repo1-retention-archive`. As an example, if the last backup taken was a full backup, it will be counted as a differential for the purpose of the repository retention. -If the `repo1-retention-archive-type` option is set to `incr` (incremental), _pgBackRest_ will keep archives for the number of full, differential, and incremental backups defined by `repo1-retention-archive`. +If the `repo1-retention-archive-type` option is set to `incr` (incremental), pgBackRest will keep archives for the number of full, differential, and incremental backups defined by `repo1-retention-archive`. > :warning: It is recommended to keep the `repo1-retention-archive-type` option with its default, in which case archives will be removed along with full backups. diff --git a/advocacy_docs/supported-open-source/pgbackrest/06-use_case_1.mdx b/advocacy_docs/supported-open-source/pgbackrest/06-use_case_1.mdx index 20b7b17f249..c1b8066f44a 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/06-use_case_1.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/06-use_case_1.mdx @@ -9,10 +9,9 @@ tags: - EPAS --- - ### Description -* _pgBackRest_ runs locally on database servers and stores repository on remote storage (NFS, S3, or Azure object stores). +* pgBackRest runs locally on database servers and stores repository on remote storage (NFS, S3, or Azure object stores). * Cron task active on the node where to take backups. * Manually reconfigure cron task to take backup from another server. @@ -145,7 +144,7 @@ recovery-option=primary_conninfo=host=primary_vip user=replication_user ... #### Setup Archiving -Once _pgBackRest_ is configured, set up the database archiver process on each node: +Once pgBackRest is configured, set up the database archiver process on each node: ```ini # postgresql.conf @@ -153,11 +152,11 @@ archive_mode = on archive_command = 'pgbackrest --stanza=demo archive-push %p' ``` -As changing the `archive_mode` requires a service restart and changing the `archive_command` requires only a configuration reload, we recommend enabling `archive_mode` with an empty `archive_command` (or pointing to `/bin/true`) when initiating a new database cluster. +As changing the `archive_mode` parameter requires a service restart, and changing the `archive_command` only requires a configuration reload, we recommend enabling `archive_mode` with an empty `archive_command` (or pointing to /bin/true) when initiating a new database cluster. See the [Quick start](03-quick_start) page to set up a simple **demo** stanza configuration. -Assume the identity of the system user (`postgres` or `enterprisedb`) and initiate the _pgBackRest_ repository from the primary server: +Assume the identity of the system user (`postgres` or `enterprisedb`) and initiate the pgBackRest repository from the primary server: ```bash $ pgbackrest --stanza=demo stanza-create diff --git a/advocacy_docs/supported-open-source/pgbackrest/07-use_case_2.mdx b/advocacy_docs/supported-open-source/pgbackrest/07-use_case_2.mdx index 139283a0475..2512d08c2e1 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/07-use_case_2.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/07-use_case_2.mdx @@ -9,10 +9,9 @@ tags: - EPAS --- - ### Description -* _pgBackRest_ runs on a dedicated backup server and stores repository on local or remote storage (NFS, S3, or Azure object stores). +* pgBackRest runs on a dedicated backup server and stores repository on local or remote storage (NFS, S3, or Azure object stores). * Cron task active to take backups from the primary database cluster. * Manually reconfigure cron task to take backup from another server. @@ -30,7 +29,7 @@ $ sudo chown pgbackrest: /var/log/pgbackrest ### Setup Passwordless SSH Connection -_pgBackRest_ requires a passwordless SSH connection to enable communication between the hosts. +pgBackRest requires a passwordless SSH connection to enable communication between the hosts. The following example SSH commands should succeed without prompting you for a password: @@ -115,7 +114,7 @@ Define multiple nodes using `pg2`, `pg3`,... to reach standby servers only when #### Database server(s) -Update the _pgBackRest_ configuration file on the database server(s): +Update the pgBackRest configuration file on the database server(s): ```ini # pgbackrest.conf @@ -135,7 +134,7 @@ The `[demo]` stanza section will be different for **PostgreSQL** or for **EDB Po #### Setup Archiving -Once _pgBackRest_ is configured, set up the database archiver process on each node: +Once pgBackRest is configured, set up the database archiver process on each node: ```ini # postgresql.conf @@ -143,9 +142,9 @@ archive_mode = on archive_command = 'pgbackrest --stanza=demo archive-push %p' ``` -As changing the `archive_mode` parameter requires a service restart, and changing the `archive_command` requires only a configuration reload, we recommend enabling `archive_mode` with an empty `archive_command` (or pointing to `/bin/true`) when initiating a new database cluster. +As changing the `archive_mode` parameter requires a service restart, and changing the `archive_command` only requires a configuration reload, we recommend enabling `archive_mode` with an empty `archive_command` (or pointing to /bin/true) when initiating a new database cluster. -From the backup server (also called repository host), initiate the _pgBackRest_ repository with the system user we created earlier: +From the backup server (also called repository host), initiate the pgBackRest repository with the system user we created earlier: ```bash $ sudo -u pgbackrest pgbackrest --stanza=demo stanza-create diff --git a/advocacy_docs/supported-open-source/pgbackrest/98-appendix.mdx b/advocacy_docs/supported-open-source/pgbackrest/98-appendix.mdx index 597c6cc6099..9f10300490c 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/98-appendix.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/98-appendix.mdx @@ -4,20 +4,19 @@ description: "Definitions for terms and concepts used in this guide, along with product: 'pgBackRest' --- - ### Concepts -The following concepts are defined as they are relevant to _pgBackRest_, _Postgres_, and this user guide. +The following concepts are defined as they are relevant to pgBackRest, PostgreSQL, and this user guide. #### Backup A backup is a consistent copy of a database cluster that can be restored to recover from a hardware failure, perform point-in-time recovery, or to bring up a new standby. -**Full Backup**: _pgBackRest_ copies the entire content of the database cluster to the backup. The first backup of the database cluster is always a full backup. _pgBackRest_ restores a full backup directly. The full backup does not depend on any files outside of the full backup for consistency. +**Full Backup**: pgBackRest copies the entire content of the database cluster to the backup. The first backup of the database cluster is always a full backup. pgBackRest restores a full backup directly. The full backup does not depend on any files outside of the full backup for consistency. -**Differential Backup**: _pgBackRest_ copies only the database cluster files that have changed since the last full backup. To restore a differential backup, _pgBackRest_ copies all of the files in the chosen differential backup and the appropriate unchanged files from the previous full backup. The advantage of a differential backup is that it requires less disk space than a full backup, however, the differential backup and the full backup must be valid to restore the differential backup. +**Differential Backup**: pgBackRest copies only the database cluster files that have changed since the last full backup. To restore a differential backup, pgBackRest copies all of the files in the chosen differential backup and the appropriate unchanged files from the previous full backup. The advantage of a differential backup is that it requires less disk space than a full backup, however, the differential backup and the full backup must be valid to restore the differential backup. -**Incremental Backup**: _pgBackRest_ copies only the database cluster files that have changed since the last backup (which can be an incremental backup, a differential backup, or a full backup). Since an incremental backup only includes the files changed since the prior backup, they are generally much smaller than a full or differential backup. An incremental backup requires other backups to be valid before restoring the incremental backup. Since the incremental backup includes only those files that have been changed or added since the last backup, all prior incremental backups (back to the prior differential and the prior full backup) must be valid to restore the incremental backup. If no differential backup exists, then all prior incremental backups (back to the prior full backup and the full backup itself) must be valid to restore the incremental backup. +**Incremental Backup**: pgBackRest copies only the database cluster files that have changed since the last backup (which can be an incremental backup, a differential backup, or a full backup). Since an incremental backup only includes the files changed since the prior backup, they are generally much smaller than a full or differential backup. An incremental backup requires other backups to be valid before restoring the incremental backup. Since the incremental backup includes only those files that have been changed or added since the last backup, all prior incremental backups (back to the prior differential and the prior full backup) must be valid to restore the incremental backup. If no differential backup exists, then all prior incremental backups (back to the prior full backup and the full backup itself) must be valid to restore the incremental backup. #### Restore @@ -25,13 +24,13 @@ A restore is an act of copying a backup to a system where it will be started as #### Write Ahead Log (WAL) -WAL logging is the mechanism that _Postgres_ uses to ensure that no committed changes are lost. Transactions are written sequentially to the WAL and a transaction is considered to be committed when those writes are flushed to disk. Later, a background process writer writes the changes into the main database cluster files (also known as the heap). In the event of a crash, the WAL is replayed to make the database consistent. +WAL logging is the mechanism that PostgreSQL uses to ensure that no committed changes are lost. Transactions are written sequentially to the WAL and a transaction is considered to be committed when those writes are flushed to disk. Later, a background writer process writes the changes into the main database cluster files (also known as the heap). In the event of a crash, the WAL is replayed to make the database consistent. WAL is conceptually infinite but in practice is broken up into individual 16MB files called segments. WAL segments follow the naming convention 0000000100000A1E000000FE where the first eight hexadecimal digits represent the timeline and the next 16 digits are the log sequence number (LSN). #### Encryption -Encryption is the process of converting data into a format that is unrecognizable unless you provide the appropriate password (also referred to as passphrase). To prevent unauthorized access to data stored within the repository, _pgBackRest_ will encrypt the repository after authentication with a user-provided password. +Encryption is the process of converting data into a format that is unrecognizable unless you provide the appropriate password (also referred to as passphrase). To prevent unauthorized access to data stored within the repository, pgBackRest will encrypt the repository after authentication with a user-provided password. --- @@ -41,15 +40,15 @@ You can find a complete list of commands and configuration keys in the project d - [Command reference](http://www.pgbackrest.org/command.html) for command-line operations. -- [Configuration reference](http://www.pgbackrest.org/configuration.html) for creating _pgBackRest_ configurations. +- [Configuration reference](http://www.pgbackrest.org/configuration.html) for creating pgBackRest configurations. -You can use _pgBackRest_ entirely with command-line parameters, but a configuration file is more practical for complex installations when configuring multiple options instantly. The default location for the configuration file is `/etc/pgbackrest/pgbackrest.conf`. If the configuration file does not exist in that location, then the old `/etc/pgbackrest.conf` file will be loaded instead (if it exists). +You can use pgBackRest entirely with command-line parameters, but a configuration file is more practical for complex installations when configuring multiple options instantly. The default location for the configuration file is `/etc/pgbackrest/pgbackrest.conf`. If the configuration file does not exist in that location, then the old `/etc/pgbackrest.conf` file will be loaded instead (if it exists). It is also recommended to use a configuration file in order to avoid specifying secrets in command-line options. #### Global -Use the global section of the configuration file to set the default values. The stanza-level configuration settings overrides any global configuration setting. +Use the global section of the configuration file to set the default values. The global section also allows you to define values that will be used when invoking specific commands. For example, the following configuration setting would specify the compress level for the `archive-push` command: @@ -64,7 +63,7 @@ A **stanza** is a database cluster configuration that defines where the database Because the stanza name will be used for the primary and all replicas, it is recommended to choose a name that describes the cluster's databases and actual function, such as app or dw, rather than the local instance name, such as main or prod. -The stanza level settings overrides any global configuration settings. +The stanza-level settings overrides any global configuration settings. #### Command Line Arguments and Environment Variables diff --git a/advocacy_docs/supported-open-source/pgbackrest/99-faq.mdx b/advocacy_docs/supported-open-source/pgbackrest/99-faq.mdx index 88cdac51cad..ec09355c8b0 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/99-faq.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/99-faq.mdx @@ -5,7 +5,6 @@ description: 'Answers to Frequently Asked Questions' product: 'pgBackRest' --- - - Why do we have to specify the `--stanza` option even if only one stanza is defined in the configuration file? Except for the repository specific commands (`info`, `start`, `stop`), the `--stanza` option is required so that adding a stanza does not cause the commands that did not have a stanza specified to suddenly throw errors because they do not know which stanza to use. @@ -16,4 +15,4 @@ Except for the repository specific commands (`info`, `start`, `stop`), the `--st Yes. You can restore a specific database using the [restore `--db-include`](https://pgbackrest.org/command.html#command-restore/category-command/option-db-include) option. After recovery, you can then extract the selected databases with the [`pg_dump`](https://www.postgresql.org/docs/current/app-pgdump.html) command. -The databases that are not explicitly included with this option will be restored as sparse, zeroed files to save space; however, it still allows _Postgres_ to perform the recovery using less disk space. You can then remove these databases with the [`DROP DATABASE`](https://www.postgresql.org/docs/current/sql-dropdatabase.html) command since they will no longer be accessible. +The databases that are not explicitly included with this option will be restored as sparse, zeroed files to save space; however, it still allows PostgreSQL to perform the recovery using less disk space. You can then remove these databases with the [`DROP DATABASE`](https://www.postgresql.org/docs/current/sql-dropdatabase.html) command since they will no longer be accessible. diff --git a/advocacy_docs/supported-open-source/pgbackrest/index.mdx b/advocacy_docs/supported-open-source/pgbackrest/index.mdx index 0ee8c0539fc..ef175664d6b 100644 --- a/advocacy_docs/supported-open-source/pgbackrest/index.mdx +++ b/advocacy_docs/supported-open-source/pgbackrest/index.mdx @@ -8,6 +8,8 @@ tags: - pgBackRest - EPAS indexCards: simple +directoryDefaults: + iconName: 'postgressupport' --- pgBackRest is an easy-to-use backup and restore tool that aims to enable your organization to implement disaster recovery solutions for PostgreSQL databases. @@ -18,4 +20,3 @@ pgBackRest is an easy-to-use backup and restore tool that aims to enable your or pgBackRest [v2.32](https://github.com/pgbackrest/pgbackrest/releases/tag/release/2.32) is the current stable release. Release notes are on the [Releases](http://www.pgbackrest.org/release.html) page. EDB collaborates with the community on this open-source software. The packages provided in EDB repositories are technically equivalent to the packages provided by the **PostgreSQL** community. All of the use cases shown in this document are fully tested and supported by **EDB Postgres Advanced Server**. - diff --git a/advocacy_docs/supported-open-source/postgresql/index.mdx b/advocacy_docs/supported-open-source/postgresql/index.mdx index 3cf26095f74..888dd628bc7 100644 --- a/advocacy_docs/supported-open-source/postgresql/index.mdx +++ b/advocacy_docs/supported-open-source/postgresql/index.mdx @@ -3,6 +3,8 @@ title: PostgreSQL navTitle: PostgreSQL description: EDB supports PostgreSQL. product: PostgreSQL +directoryDefaults: + iconName: postgresql --- PostgreSQL is a popular, free, open-source relational database management system (RDBMS). It has earned a reputation for reliability, performance, and extensibility, with a robust feature set to securely store and scale even the most complex workloads. diff --git a/advocacy_docs/supported-open-source/postgresql/installer/01_requirements_overview.mdx b/advocacy_docs/supported-open-source/postgresql/installer/01_requirements_overview.mdx index e1fc16bbd0c..353c30d5a4c 100644 --- a/advocacy_docs/supported-open-source/postgresql/installer/01_requirements_overview.mdx +++ b/advocacy_docs/supported-open-source/postgresql/installer/01_requirements_overview.mdx @@ -1,5 +1,6 @@ --- title: "Requirements Overview" +product: PostgreSQL --- diff --git a/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/01_invoking_the_graphical_installer.mdx b/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/01_invoking_the_graphical_installer.mdx index a1894d7b05e..4eb9c13b3cb 100644 --- a/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/01_invoking_the_graphical_installer.mdx +++ b/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/01_invoking_the_graphical_installer.mdx @@ -1,5 +1,6 @@ --- title: "Invoking the Graphical Installer" +product: PostgreSQL --- diff --git a/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/index.mdx b/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/index.mdx index 7ae70690fbb..742c1a4c6be 100644 --- a/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/index.mdx +++ b/advocacy_docs/supported-open-source/postgresql/installer/02_installing_postgresql_with_the_graphical_installation_wizard/index.mdx @@ -1,5 +1,6 @@ --- title: "Installing PostgreSQL with the Graphical Installation Wizard" +product: PostgreSQL --- diff --git a/advocacy_docs/supported-open-source/postgresql/installer/03_using_stackbuilder.mdx b/advocacy_docs/supported-open-source/postgresql/installer/03_using_stackbuilder.mdx index 8ccd161dd0e..63a9ae7b612 100644 --- a/advocacy_docs/supported-open-source/postgresql/installer/03_using_stackbuilder.mdx +++ b/advocacy_docs/supported-open-source/postgresql/installer/03_using_stackbuilder.mdx @@ -1,5 +1,6 @@ --- title: "Using Stack Builder" +product: PostgreSQL --- diff --git a/advocacy_docs/supported-open-source/postgresql/installer/04_installation_troubleshooting.mdx b/advocacy_docs/supported-open-source/postgresql/installer/04_installation_troubleshooting.mdx index f8a3f51e20b..e2b32facfd1 100644 --- a/advocacy_docs/supported-open-source/postgresql/installer/04_installation_troubleshooting.mdx +++ b/advocacy_docs/supported-open-source/postgresql/installer/04_installation_troubleshooting.mdx @@ -1,5 +1,6 @@ --- title: "Installation Troubleshooting" +product: PostgreSQL --- diff --git a/advocacy_docs/supported-open-source/postgresql/installer/05_uninstalling_postgresql.mdx b/advocacy_docs/supported-open-source/postgresql/installer/05_uninstalling_postgresql.mdx index f7f0ecd786d..83253fbb6db 100644 --- a/advocacy_docs/supported-open-source/postgresql/installer/05_uninstalling_postgresql.mdx +++ b/advocacy_docs/supported-open-source/postgresql/installer/05_uninstalling_postgresql.mdx @@ -1,5 +1,6 @@ --- title: "Uninstalling PostgreSQL" +product: PostgreSQL --- @@ -71,4 +72,4 @@ Progress bars are displayed as each component is removed. When the uninstaller c ![The Uninstallation is completed](images/uninstallationcomplete.png) -Fig. 8: The Uninstallation is completed \ No newline at end of file +Fig. 8: The Uninstallation is completed diff --git a/advocacy_docs/supported-open-source/postgresql/installer/index.mdx b/advocacy_docs/supported-open-source/postgresql/installer/index.mdx index 19542aa4447..6446a4a5e66 100644 --- a/advocacy_docs/supported-open-source/postgresql/installer/index.mdx +++ b/advocacy_docs/supported-open-source/postgresql/installer/index.mdx @@ -1,6 +1,7 @@ --- title: "EDB Installers" description: "The PostgreSQL installers created by EnterpriseDB are designed to make it quick and simple to install PostgreSQL on your computer." +product: PostgreSQL --- The PostgreSQL installers created by EnterpriseDB are designed to make it quick and simple to install PostgreSQL on your computer. The installer provides: diff --git a/build-sources.json b/build-sources.json index 05c0b8c6698..e1ba1facdf6 100644 --- a/build-sources.json +++ b/build-sources.json @@ -1,5 +1,4 @@ { - "k8s_docs": false, "ark": true, "bart": true, "efm": true, diff --git a/dev-sources.sample b/dev-sources.sample index 2e0fe7bf42a..0d0a992d7e2 100644 --- a/dev-sources.sample +++ b/dev-sources.sample @@ -1,5 +1,4 @@ { - "k8s_docs": false, "ark": true, "bart": true, "efm": true, diff --git a/gatsby-config.js b/gatsby-config.js index 5560089c88a..23b05e508e5 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -59,10 +59,6 @@ const sourceToPluginConfig = { pgpool: { name: 'pgpool', path: 'product_docs/docs/pgpool' }, postgis: { name: 'postgis', path: 'product_docs/docs/postgis' }, slony: { name: 'slony', path: 'product_docs/docs/slony' }, - - k8s_docs: { name: 'k8s_docs', path: 'external_sources/k8s_docs' }, - barman: { name: 'barman', path: 'external_sources/barman/doc/manual' }, - pgbackrest: { name: 'pgbackrest', path: 'external_sources/pgbackrest/docs' }, }; const externalSourcePlugins = () => { diff --git a/gatsby-node.js b/gatsby-node.js index d619c5e9514..31c7e03b6d9 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -60,13 +60,6 @@ exports.onCreateNode = async ({ node, getNode, actions, loadNodeContent }) => { version: '0', topic: relativeFilePath.split('/')[2], }); - } else { - // gh_doc - Object.assign(nodeFields, { - product: 'null', - version: '0', - topic: relativeFilePath.split('/')[1], - }); } for (const [name, value] of Object.entries(nodeFields)) { @@ -97,11 +90,13 @@ exports.createPages = async ({ actions, graphql, reporter }) => { katacodaPanel { scenario account + initializeCommand codelanguages } directoryDefaults { description prevNext + iconName } } fields { @@ -214,8 +209,6 @@ exports.createPages = async ({ actions, graphql, reporter }) => { createDoc(navTree, prevNext, node, productVersions, actions); } else if (docType === 'advocacy') { createAdvocacy(navTree, prevNext, node, learn, actions); - } else if (docType === 'gh_doc') { - createGHDoc(navTree, node, actions); } } }; @@ -327,39 +320,6 @@ const createAdvocacy = (navTree, prevNext, doc, learn, actions) => { }); }; -const createGHDoc = (navTree, doc, actions) => { - let githubLink = 'https://github.com/EnterpriseDB/edb-k8s-doc'; - if (doc.fields.path.includes('barman')) { - githubLink = 'https://github.com/2ndquadrant-it/barman'; - } - const showGithubLink = !doc.fields.path.includes('pgbackrest'); - - const isIndexPage = isPathAnIndexPage(doc.fileAbsolutePath); - const originalFilePath = (doc.frontmatter.originalFilePath || '').replace( - /^\//, - '', - ); - const githubFileLink = `${githubLink}/tree/master/${originalFilePath.replace( - 'README.md', - '', - )}`; - const githubFileHistoryLink = `${githubLink}/commits/master/${originalFilePath}`; - - actions.createPage({ - path: doc.fields.path, - component: require.resolve('./src/templates/gh-doc.js'), - context: { - nodeId: doc.id, - frontmatter: doc.frontmatter, - pagePath: doc.fields.path, - navTree, - githubFileLink: showGithubLink ? githubFileLink : null, - githubFileHistoryLink: showGithubLink ? githubFileHistoryLink : null, - isIndexPage: isIndexPage, - }, - }); -}; - const processFileNodes = (fileNodes, actions) => { fileNodes.forEach((node) => { actions.createPage({ diff --git a/package.json b/package.json index 223bee61000..d41fd9ce3d2 100644 --- a/package.json +++ b/package.json @@ -11,14 +11,13 @@ "clean-develop": "gatsby clean && gatsby develop", "develop": "gatsby develop", "config-sources": "python3 scripts/source/config_sources.py", - "pull-sources": "python3 scripts/source/pull_sources.py", "format": "prettier --write src/**/*.js gatsby-*.js", "build": "gatsby build --prefix-paths", "serve-build": "gatsby serve --prefix-paths", "update-icons": "git submodule update --init --remote && node scripts/createIconTypes.js && node scripts/createIconNames.js", "build-pdf": "python3 scripts/pdf/generate_pdf.py", "build-all-pdfs": "for i in product_docs/docs/**/*/ ; do echo \"$i\"; python3 scripts/pdf/generate_pdf.py ${i%}; done", - "fix-mtimes": "python3 scripts/source/restore_mtimes.py", + "fix-mtimes": "python3 scripts/source/git-restore-mtime.py", "count": "find product_docs/docs/ advocacy_docs/ external_sources/ -name '*.mdx' | wc -l", "heroku-postbuild": "gatsby build" }, diff --git a/product_docs/docs/epas/13/edb_pgadmin_linux_qs/index.mdx b/product_docs/docs/epas/13/edb_pgadmin_linux_qs/index.mdx index dcb82a03490..632312c4b36 100644 --- a/product_docs/docs/epas/13/edb_pgadmin_linux_qs/index.mdx +++ b/product_docs/docs/epas/13/edb_pgadmin_linux_qs/index.mdx @@ -10,66 +10,66 @@ You can install `EDB pgAdmin 4` for your Advanced Server databases using yum pac You can use the following steps to use the yum package manager to install EDB pgAdmin4: -1. **Create a Repository Configuration File** +**Create a Repository Configuration File** - To create a repository configuration file, you must have the credentials that allow to access the EnterpriseDB repository. For information about requesting credentials, visit: +To create a repository configuration file, you must have the credentials that allow to access the EnterpriseDB repository. For information about requesting credentials, visit: - > . +. - To create the repository configuration file, assume superuser privileges and invoke the following command: +To create the repository configuration file, assume superuser privileges and invoke the following command: - ```text - yum -y install https://yum.enterprisedb.com/edb-repo-rpms/edb-repo-latest.noarch.rpm - ``` +```text +yum -y install https://yum.enterprisedb.com/edb-repo-rpms/edb-repo-latest.noarch.rpm +``` - The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d.` After creating the `edb.repo` file, use the following command to replace the `USERNAME` and `PASSWORD` placeholders in the `baseurl` specification with the username and password of a registered EDB user: +The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d.` After creating the `edb.repo` file, use the following command to replace the `USERNAME` and `PASSWORD` placeholders in the `baseurl` specification with the username and password of a registered EDB user: -> ```text -> sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo -> ``` -> -> !!! Note -> If you have `edb.repo` already configured then you can skip this step and go to the next step. +```text +sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo +``` -1. **Install EPEL Repository** +!!! Note + If you have `edb.repo` already configured then you can skip this step and go to the next step. - For CentOS 7.x use the following command: +**Install EPEL Repository** - ```text - yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm - ``` +For CentOS 7.x use the following command: - !!! Note - To install EPEL repository on CentOS/RHEL6.x, RHEL 7.x and CentOS/RHEL 8.x see the platform specific steps at [EDB Website](https://repos.enterprisedb.com/). +```text +yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm +``` -2. **Install EDB pgAdmin 4** +!!! Note + To install EPEL repository on CentOS/RHEL 7.x and CentOS/RHEL 8.x see the platform specific steps at [EDB Website](https://repos.enterprisedb.com/). - After creating the repository configuration file and adding a username and password to the `edb.repo` file, you can install `edb-pgadmin4`. To install `edb-pgadmin4`, assume superuser privileges and invoke the following command: +**Install EDB pgAdmin 4** -> ```text -> yum install edb-pgadmin4* -> ``` -> -> !!! Note -> This command will install following packages: -> -> `edb-pgadmin4` -> -> `edb-pgadmin4-desktop-common` -> -> `edb-pgadmin4-desktop-gnome` -> -> `edb-pgadmin4-docs` -> -> `edb-pgadmin4-web` +After creating the repository configuration file and adding a username and password to the `edb.repo` file, you can install `edb-pgadmin4`. To install `edb-pgadmin4`, assume superuser privileges and invoke the following command: + +```text +yum install edb-pgadmin4* +``` + +!!! Note + This command will install following packages: + + `edb-pgadmin4` + + `edb-pgadmin4-desktop-common` + + `edb-pgadmin4-desktop-gnome` + + `edb-pgadmin4-docs` + + `edb-pgadmin4-web` **Starting pgAdmin 4 in Desktop Mode** You can use the following command to start pgAdmin 4 in desktop mode: -> ```text -> /usr/edb/pgadmin4/bin/pgAdmin4 -> ``` +```text +/usr/edb/pgadmin4/bin/pgAdmin4 +``` You can also use the link on the `Applications` menu to start pgAdmin 4 in desktop mode: @@ -85,7 +85,7 @@ Before managing an Advanced Server cluster, you must register the server. To reg For detailed information about registering your server, visit: -> . +. Then, to connect to your Advanced Server instance, right click on the server name and select `Connect Server`; provide your password when the `Connect to Server` dialog opens: diff --git a/product_docs/docs/epas/13/epas_guide/03_database_administration/01_configuration_parameters/02_summary_of_configuration_parameters.mdx b/product_docs/docs/epas/13/epas_guide/03_database_administration/01_configuration_parameters/02_summary_of_configuration_parameters.mdx index a672169f0ff..d6c6d91ad02 100644 --- a/product_docs/docs/epas/13/epas_guide/03_database_administration/01_configuration_parameters/02_summary_of_configuration_parameters.mdx +++ b/product_docs/docs/epas/13/epas_guide/03_database_administration/01_configuration_parameters/02_summary_of_configuration_parameters.mdx @@ -41,61 +41,304 @@ These attributes are described by the following columns of the summary table: The following table shows the summary of configuration parameters: -| Parameter | Scope of Effect | When Takes Effect | Authorized

User | Description | EPAS Only | -| ----------------------------------------- | --------------- | ----------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------- | -| `custom_variable_classes` | Cluster | Reload | EPAS service account | Deprecated in Advanced Server 9.2. | X | -| `db_dialect` | Session | Immediate | User | Sets the precedence of built-in namespaces. | X | -| `dbms_alert.max_alerts` | Cluster | Restart | EPAS service account | Sets maximum number of alerts. | X | -| `dbms_pipe.total_message_buffer` | Cluster | Restart | EPAS service account | Specifies the total size of the buffer used for the `DBMS_PIPE` package. | X | -| `default_heap_fillfactor` | Session | Immediate | User | Create new tables with this heap fillfactor by default. | X | -| `default_with_rowids` | Session | Immediate | User | Create new tables with ROWID support (ROWIDs with indexes) by default. | X | -| `edb_audit` | Cluster | Reload | EPAS service account | Enable EDB Auditing to create audit reports in XML or CSV format. | X | -| `edb_audit_connect` | Cluster | Reload | EPAS service account | Audits each successful connection. | X | -| `edb_audit_destination` | Cluster | Reload | EPAS service account | Sets `edb_audit_directory` or syslog as the destination directory for audit files. The syslog setting is only valid for a Linux system. | X | -| `edb_audit_directory` | Cluster | Reload | EPAS service account | Sets the destination directory for audit files. | X | -| `edb_audit_disconnect` | Cluster | Reload | EPAS service account | Audits end of a session. | X | -| `edb_audit_filename` | Cluster | Reload | EPAS service account | Sets the file name pattern for audit files. | X | -| `edb_audit_rotation_day` | Cluster | Reload | EPAS service account | Automatic rotation of log files based on day of week. | X | -| `edb_audit_rotation_seconds` | Cluster | Reload | EPAS service account | Automatic log file rotation will occur after `N` seconds. | X | -| `edb_audit_rotation_size` | Cluster | Reload | EPAS service account | Automatic log file rotation will occur after `N` Megabytes. | X | -| `edb_audit_statement` | Cluster | Reload | EPAS service account | Sets the type of statements to audit. | X | -| `edb_audit_tag` | Session | Immediate | User | Specify a tag to be included in the audit log. | X | -| `edb_connectby_order` | Session | Immediate | User | Sort results of `CONNECT BY` queries with no `ORDER BY` to depth-first order. Note: For internal use only. | X | -| `edb_data_redaction` | Session | Immediate | User | Enable data redaction. | X | -| `edb_dynatune` | Cluster | Restart | EPAS service account | Sets the edb utilization percentage. | X | -| `edb_dynatune_profile` | Cluster | Restart | EPAS service account | Sets the workload profile for dynatune. | X | -| `edb_enable_pruning` | Session | Immediate | User | Enables the planner to early-prune partitioned tables. | X | -| `edb_log_every_bulk_value` | Session | Immediate | Superuser | Sets the statements logged for bulk processing. | X | -| `edb_max_resource_groups` | Cluster | Restart | EPAS service account | Specifies the maximum number of resource groups for simultaneous use. | X | -| `edb_max_spins_per_delay` | Cluster | Restart | EPAS service account | Specifies the number of times a session will spin while waiting for a lock. | X | -| `edb_redwood_date` | Session | Immediate | User | Determines whether `DATE` should behave like a `TIMESTAMP` or not. | X | -| `edb_redwood_greatest_least` | Session | Immediate | User | Determines how `GREATEST` and `LEAST` functions should handle `NULL` parameters. | X | -| `edb_redwood_raw_names` | Session | Immediate | User | Return the unmodified name stored in the PostgreSQL system catalogs from Redwood interfaces. | X | -| `edb_redwood_strings` | Session | Immediate | User | Treat `NULL` as an empty string when concatenated with a text value. | X | -| `edb_resource_group` | Session | Immediate | User | Specifies the resource group to be used by the current process. | X | -| `edb_sql_protect.enabled` | Cluster | Reload | EPAS service account | Defines whether SQL/Protect should track queries or not. | X | -| `edb_sql_protect.level` | Cluster | Reload | EPAS service account | Defines the behavior of SQL/Protect when an event is found. | X | -| `edb_sql_protect.max_protected_relations` | Cluster | Restart | EPAS service account | Sets the maximum number of relations protected by SQL/Protect per role. | X | -| `edb_sql_protect.max_protected_roles` | Cluster | Restart | EPAS service account | Sets the maximum number of roles protected by SQL/Protect. | X | -| `edb_sql_protect.max_queries_to_save` | Cluster | Restart | EPAS service account | Sets the maximum number of offending queries to save by SQL/Protect. | X | -| `edb_stmt_level_tx` | Session | Immediate | User | Allows continuing on errors instead of requiring a transaction abort. | X | -| `edb_wait_states.directory` | Cluster | Restart | EPAS service account | The EDB wait states logs are stored in this directory. | X | -| `edb_wait_states.retention_period` | Cluster | Reload | EPAS service account | EDB wait state log files will be automatically deleted after retention period. | X | -| `edb_wait_states.sampling_interval` | Cluster | Reload | EPAS service account | The interval between two EDB wait state sampling cycles. | X | -| `edbldr.empty_csv_field` | Session | Immediate | Superuser | Specifies how EDB\*Loader handles empty strings. | X | -| `enable_hints` | Session | Immediate | User | Enable optimizer hints in SQL statements. | X | -| `icu_short_form` | Database | Preset | n/a | Shows the ICU collation order configuration. | X | -| `index_advisor.enabled` | Session | Immediate | User | Enable Index Advisor plugin. | X | -| `nls_length_semantics` | Session | Immediate | Superuser | Sets the semantics to use for char, varchar, varchar2 and long columns. | X | -| `odbc_lib_path` | Cluster | Restart | EPAS service account | Sets the path for ODBC library. | X | -| `optimizer_mode` | Session | Immediate | User | Default optimizer mode. | X | -| `oracle_home` | Cluster | Restart | EPAS service account | Sets the path for the Oracle home directory. | X | -| `pg_prewarm.autoprewarm` | Cluster | Restart | EPAS service account | Enables the `autoprewarm` background worker. | X | -| `pg_prewarm.autoprewarm_interval` | Cluster | Reload | EPAS service account | Sets the minimum number of seconds after which `autoprewarm` dumps shared buffers. | X | -| `qreplace_function` | Session | Immediate | Superuser | The function to be used by Query Replace feature. Note: For internal use only. | X | -| `query_rewrite_enabled` | Session | Immediate | User | Child table scans will be skipped if their constraints guarantee that no rows match the query. | X | -| `query_rewrite_integrity` | Session | Immediate | Superuser | Sets the degree to which query rewriting must be enforced. | X | -| `timed_statistics` | Session | Immediate | User | Enables the recording of timed statistics. | X | -| `trace_hints` | Session | Immediate | User | Emit debug info about hints being honored. | X | -| `utl_encode.uudecode_redwood` | Session | Immediate | User | Allows decoding of Oracle-created uuencoded data. | X | -| `utl_file.umask` | Session | Immediate | User | Umask used for files created through the `UTL_FILE` package. | X | +| Parameter | Scope of Effect | When Takes Effect | Authorized

User | Description | EPAS Only | +| ----------------------------------------- | --------------- | -------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------- | +| `allow_system_table_mods` | Cluster | Restart | EPAS service account | Allows modifications of the structure of system tables. | | +| `application_name` | Session | Immediate | User | Sets the application name to be reported in statistics and logs. | | +| `archive_command` | Cluster | Reload | EPAS service account | Sets the shell command that will be called to archive a WAL file. | | +| `archive_mode` | Cluster | Restart | EPAS service account | Allows archiving of WAL files using `archive_command`. | | +| `archive_timeout` | Cluster | Reload | EPAS service account | Forces a switch to the next xlog file if a new file has not been started within N seconds. | | +| `array_nulls` | Session | Immediate | User | Enable input of NULL elements in arrays. | | +| `authentication_timeout` | Cluster | Reload | EPAS service account | Sets the maximum allowed time to complete client authentication. | | +| `autovacuum` | Cluster | Reload | EPAS service account | Starts the autovacuum subprocess. | | +| `autovacuum_analyze_scale_factor` | Cluster | Reload | EPAS service account | Number of tuple inserts, updates, or deletes prior to analyze as a fraction of `reltuples`. | | +| `autovacuum_analyze_threshold` | Cluster | Reload | EPAS service account | Minimum number of tuple inserts, updates, or deletes prior to analyze. | | +| `autovacuum_freeze_max_age` | Cluster | Restart | EPAS service account | Age at which to autovacuum a table to prevent transaction ID wraparound. | | +| `autovacuum_max_workers` | Cluster | Restart | EPAS service account | Sets the maximum number of simultaneously running autovacuum worker processes. | | +| `autovacuum_multixact_freeze_max_age` | Cluster | Restart | EPAS service account | Multixact age at which to autovacuum a table to prevent multixact wraparound. | | +| `autovacuum_naptime` | Cluster | Reload | EPAS service account | Time to sleep between autovacuum runs. | | +| `autovacuum_vacuum_cost_delay` | Cluster | Reload | EPAS service account | Vacuum cost delay in milliseconds, for autovacuum. | | +| `autovacuum_vacuum_cost_limit` | Cluster | Reload | EPAS service account | Vacuum cost amount available before napping, for autovacuum. | | +| `autovacuum_vacuum_scale_factor` | Cluster | Reload | EPAS service account | Number of tuple updates or deletes prior to vacuum as a fraction of `reltuples`. | | +| `autovacuum_vacuum_threshold` | Cluster | Reload | EPAS service account | Minimum number of tuple updates or deletes prior to vacuum. | | +| `autovacuum_work_mem` | Cluster | Reload | EPAS service account | Sets the maximum memory to be used by each autovacuum worker process. | | +| `backslash_quote` | Session | Immediate | User | Sets whether `"\'"` is allowed in string literals. | | +| `bgwriter_delay` | Cluster | Reload | EPAS service account | Background writer sleep time between rounds. | | +| `bgwriter_lru_maxpages` | Cluster | Reload | EPAS service account | Background writer maximum number of LRU pages to flush per round. | | +| `bgwriter_lru_multiplier` | Cluster | Reload | EPAS service account | Multiple of the average buffer usage to free per round. | | +| `block_size` | Cluster | Preset | n/a | Shows the size of a disk block. | | +| `bonjour` | Cluster | Restart | EPAS service account | Enables advertising the server via Bonjour. | | +| `bonjour_name` | Cluster | Restart | EPAS service account | Sets the Bonjour service name. | | +| `bytea_output` | Session | Immediate | User | Sets the output format for `bytea`. | | +| `check_function_bodies` | Session | Immediate | User | Check function bodies during `CREATE FUNCTION`. | | +| `checkpoint_completion_target` | Cluster | Reload | EPAS service account | Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval. | | +| `checkpoint_segments` | Deprecated | Deprecated | Deprecated | Specifying a value for the parameter will prevent the server from starting. | | +| `checkpoint_timeout` | Cluster | Reload | EPAS service account | Sets the maximum time between automatic WAL checkpoints. | | +| `checkpoint_warning` | Cluster | Reload | EPAS service account | Enables warnings if checkpoint segments are filled more frequently than this. | | +| `client_encoding` | Session | Immediate | User | Sets the client's character set encoding. | | +| `client_min_messages` | Session | Immediate | User | Sets the message levels that are sent to the client. | | +| `commit_delay` | Session | Immediate | Superuser | Sets the delay in microseconds between transaction commit and flushing WAL to disk. | | +| `commit_siblings` | Session | Immediate | User | Sets the minimum concurrent open transactions before performing `commit_delay`. | | +| `config_file` | Cluster | Restart | EPAS service account | Sets the server's main configuration file. | | +| `constraint_exclusion` | Session | Immediate | User | Enables the planner to use constraints to optimize queries. | | +| `cpu_index_tuple_cost` | Session | Immediate | User | Sets the planner's estimate of the cost of processing each index entry during an index scan. | | +| `cpu_operator_cost` | Session | Immediate | User | Sets the planner's estimate of the cost of processing each operator or function call. | | +| `cpu_tuple_cost` | Session | Immediate | User | Sets the planner's estimate of the cost of processing each tuple (row). | | +| `cursor_tuple_fraction` | Session | Immediate | User | Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved. | | +| `custom_variable_classes` | Cluster | Reload | EPAS service account | Deprecated in Advanced Server 9.2. | X | +| `data_checksums` | Cluster | Preset | n/a | Shows whether data checksums are turned on for this cluster. | | +| `data_directory` | Cluster | Restart | EPAS service account | Sets the server's data directory. | | +| `datestyle` | Session | Immediate | User | Sets the display format for date and time values. | | +| `db_dialect` | Session | Immediate | User | Sets the precedence of built-in namespaces. | X | +| `dbms_alert.max_alerts` | Cluster | Restart | EPAS service account | Sets maximum number of alerts. | X | +| `dbms_pipe.total_message_buffer` | Cluster | Restart | EPAS service account | Specifies the total size of the buffer used for the `DBMS_PIPE` package. | X | +| `db_user_namespace` | Cluster | Reload | EPAS service account | Enables per-database user names. | | +| `deadlock_timeout` | Session | Immediate | Superuser | Sets the time to wait on a lock before checking for deadlock. | | +| `debug_assertions` | Cluster | Preset | n/a | Turns on various assertion checks. (Not supported in EPAS builds.) | | +| `debug_pretty_print` | Session | Immediate | User | Indents parse and plan tree displays. | | +| `debug_print_parse` | Session | Immediate | User | Logs each query's parse tree. | | +| `debug_print_plan` | Session | Immediate | User | Logs each query's execution plan. | | +| `debug_print_rewritten` | Session | Immediate | User | Logs each query's rewritten parse tree. | | +| `default_heap_fillfactor` | Session | Immediate | User | Create new tables with this heap fillfactor by default. | X | +| `default_statistics_target` | Session | Immediate | User | Sets the default statistics target. | | +| `default_tablespace` | Session | Immediate | User | Sets the default tablespace to create tables and indexes in. | | +| `default_text_search_config` | Session | Immediate | User | Sets default text search configuration. | | +| `default_transaction_deferrable` | Session | Immediate | User | Sets the default deferrable status of new transactions. | | +| `default_transaction_isolation` | Session | Immediate | User | Sets the transaction isolation level of each new transaction. | | +| `default_transaction_read_only` | Session | Immediate | User | Sets the default read-only status of new transactions. | | +| `default_with_oids` | Session | Immediate | User | Create new tables with OIDs by default. | | +| `default_with_rowids` | Session | Immediate | User | Create new tables with ROWID support (ROWIDs with indexes) by default. | X | +| `dynamic_library_path` | Session | Immediate | Superuser | Sets the path for dynamically loadable modules. | | +| `dynamic_shared_memory_type` | Cluster | Restart | EPAS service account | Selects the dynamic shared memory implementation used. | | +| `edb_audit` | Cluster | Reload | EPAS service account | Enable EDB Auditing to create audit reports in XML or CSV format. | X | +| `edb_audit_connect` | Cluster | Reload | EPAS service account | Audits each successful connection. | X | +| `edb_audit_destination` | Cluster | Reload | EPAS service account | Sets `edb_audit_directory` or syslog as the destination directory for audit files. The syslog setting is only valid for a Linux system. | X | +| `edb_audit_directory` | Cluster | Reload | EPAS service account | Sets the destination directory for audit files. | X | +| `edb_audit_disconnect` | Cluster | Reload | EPAS service account | Audits end of a session. | X | +| `edb_audit_filename` | Cluster | Reload | EPAS service account | Sets the file name pattern for audit files. | X | +| `edb_audit_rotation_day` | Cluster | Reload | EPAS service account | Automatic rotation of log files based on day of week. | X | +| `edb_audit_rotation_seconds` | Cluster | Reload | EPAS service account | Automatic log file rotation will occur after N seconds. | X | +| `edb_audit_rotation_size` | Cluster | Reload | EPAS service account | Automatic log file rotation will occur after N Megabytes. | X | +| `edb_audit_statement` | Cluster | Reload | EPAS service account | Sets the type of statements to audit. | X | +| `edb_audit_tag` | Session | Immediate | User | Specify a tag to be included in the audit log. | X | +| `edb_connectby_order` | Session | Immediate | User | Sort results of `CONNECT BY` queries with no `ORDER BY` to depth-first order. Note: For internal use only. | X | +| `edb_custom_plan_tries` | Session | Immediate | User | Specifies the number of custom execution plans considered by the planner before the planner selects a generic execution plan. | X | +| `edb_data_redaction` | Session | Immediate | User | Enable data redaction. | X | +| `edb_dynatune` | Cluster | Restart | EPAS service account | Sets the edb utilization percentage. | X | +| `edb_dynatune_profile` | Cluster | Restart | EPAS service account | Sets the workload profile for dynatune. | X | +| `edb_enable_pruning` | Session | Immediate | User | Enables the planner to early-prune partitioned tables. | X | +| `edb_log_every_bulk_value` | Session | Immediate | Superuser | Sets the statements logged for bulk processing. | X | +| `edb_max_resource_groups` | Cluster | Restart | EPAS service account | Specifies the maximum number of resource groups for simultaneous use. | X | +| `edb_max_spins_per_delay` | Cluster | Restart | EPAS service account | Specifies the number of times a session will spin while waiting for a lock. | X | +| `edb_redwood_date` | Session | Immediate | User | Determines whether `DATE` should behave like a `TIMESTAMP` or not. | X | +| `edb_redwood_greatest_least` | Session | Immediate | User | Determines how `GREATEST` and `LEAST` functions should handle NULL parameters. | X | +| `edb_redwood_raw_names` | Session | Immediate | User | Return the unmodified name stored in the PostgreSQL system catalogs from Redwood interfaces. | X | +| `edb_redwood_strings` | Session | Immediate | User | Treat `NULL` as an empty string when concatenated with a text value. | X | +| `edb_resource_group` | Session | Immediate | User | Specifies the resource group to be used by the current process. | X | +| `edb_sql_protect.enabled` | Cluster | Reload | EPAS service account | Defines whether SQL/Protect should track queries or not. | X | +| `edb_sql_protect.level` | Cluster | Reload | EPAS service account | Defines the behavior of SQL/Protect when an event is found. | X | +| `edb_sql_protect.max_protected_relations` | Cluster | Restart | EPAS service account | Sets the maximum number of relations protected by SQL/Protect per role. | X | +| `edb_sql_protect.max_protected_roles` | Cluster | Restart | EPAS service account | Sets the maximum number of roles protected by SQL/Protect. | X | +| `edb_sql_protect.max_queries_to_save` | Cluster | Restart | EPAS service account | Sets the maximum number of offending queries to save by SQL/Protect. | X | +| `edb_stmt_level_tx` | Session | Immediate | User | Allows continuing on errors instead of requiring a transaction abort. | X | +| `edb_wait_states.directory` | Cluster | Restart | EPAS service account | The EDB wait states logs are stored in this directory. | X | +| `edb_wait_states.retention_period` | Cluster | Reload | EPAS service account | EDB wait state log files will be automatically deleted after retention period. | X | +| `edb_wait_states.sampling_interval` | Cluster | Reload | EPAS service account | The interval between two EDB wait state sampling cycles. | X | +| `edbldr.empty_csv_field` | Session | Immediate | Superuser | Specifies how EDB\*Loader handles empty strings. | X | +| `effective_cache_size` | Session | Immediate | User | Sets the planner's assumption about the size of the disk cache. | | +| `effective_io_concurrency` | Session | Immediate | User | Number of simultaneous requests that can be handled efficiently by the disk subsystem. | | +| `enable_bitmapscan` | Session | Immediate | User | Enables the planner's use of bitmap-scan plans. | | +| `enable_hashagg` | Session | Immediate | User | Enables the planner's use of hashed aggregation plans. | | +| `enable_hashjoin` | Session | Immediate | User | Enables the planner's use of hash join plans. | | +| `enable_hints` | Session | Immediate | User | Enable optimizer hints in SQL statements. | X | +| `enable_indexonlyscan` | Session | Immediate | User | Enables the planner’s use of index-only-scan plans. | | +| `enable_indexscan` | Session | Immediate | User | Enables the planner's use of index-scan plans. | | +| `enable_material` | Session | Immediate | User | Enables the planner's use of materialization. | | +| `enable_mergejoin` | Session | Immediate | User | Enables the planner's use of merge join plans. | | +| `enable_nestloop` | Session | Immediate | User | Enables the planner's use of nested-loop join plans. | | +| `enable_seqscan` | Session | Immediate | User | Enables the planner's use of sequential-scan plans. | | +| `enable_sort` | Session | Immediate | User | Enables the planner's use of explicit sort steps. | | +| `enable_tidscan` | Session | Immediate | User | Enables the planner's use of TID scan plans. | | +| `escape_string_warning` | Session | Immediate | User | Warn about backslash escapes in ordinary string literals. | | +| `event_source` | Cluster | Restart | EPAS service account | Sets the application name used to identify PostgreSQL messages in the event log. | | +| `exit_on_error` | Session | Immediate | User | Terminate session on any error. | | +| `external_pid_file` | Cluster | Restart | EPAS service account | Writes the postmaster PID to the specified file. | | +| `extra_float_digits` | Session | Immediate | User | Sets the number of digits displayed for floating-point values. | | +| `from_collapse_limit` | Session | Immediate | User | Sets the `FROM`-list size beyond which subqueries are not collapsed. | | +| `fsync` | Cluster | Reload | EPAS service account | Forces synchronization of updates to disk. | | +| `full_page_writes` | Cluster | Reload | EPAS service account | Writes full pages to WAL when first modified after a checkpoint. | | +| `geqo` | Session | Immediate | User | Enables genetic query optimization. | | +| `geqo_effort` | Session | Immediate | User | GEQO: effort is used to set the default for other GEQO parameters. | | +| `geqo_generations` | Session | Immediate | User | GEQO: number of iterations of the algorithm. | | +| `geqo_pool_size` | Session | Immediate | User | GEQO: number of individuals in the population. | | +| `geqo_seed` | Session | Immediate | User | GEQO: seed for random path selection. | | +| `geqo_selection_bias` | Session | Immediate | User | GEQO: selective pressure within the population. | | +| `geqo_threshold` | Session | Immediate | User | Sets the threshold of `FROM` items beyond which GEQO is used. | | +| `gin_fuzzy_search_limit` | Session | Immediate | User | Sets the maximum allowed result for exact search by GIN. | | +| `hba_file` | Cluster | Restart | EPAS service account | Sets the server's "hba" configuration file. | | +| `hot_standby` | Cluster | Restart | EPAS service account | Allows connections and queries during recovery. | | +| `hot_standby_feedback` | Cluster | Reload | EPAS service account | Allows feedback from a hot standby to the primary that will avoid query conflicts. | | +| `huge_pages` | Cluster | Restart | EPAS service account | Use of huge pages on Linux. | | +| `icu_short_form` | Database | Preset | n/a | Shows the ICU collation order configuration. | X | +| `ident_file` | Cluster | Restart | EPAS service account | Sets the server's "ident" configuration file. | | +| `ignore_checksum_failure` | Session | Immediate | Superuser | Continues processing after a checksum failure. | | +| `ignore_system_indexes` | Cluster/Session | Reload/Immediate | EPAS service account/User | Disables reading from system indexes. (Can also be set with `PGOPTIONS` at session start.) | | +| `index_advisor.enabled` | Session | Immediate | User | Enable Index Advisor plugin. | X | +| `integer_datetimes` | Cluster | Preset | n/a | Datetimes are integer based. | | +| `intervalStyle` | Session | Immediate | User | Sets the display format for interval values. | | +| `join_collapse_limit` | Session | Immediate | User | Sets the `FROM`-list size beyond which `JOIN` constructs are not flattened. | | +| `krb_caseins_users` | Cluster | Reload | EPAS service account | Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive. | | +| `krb_server_keyfile` | Cluster | Reload | EPAS service account | Sets the location of the Kerberos server key file. | | +| `lc_collate` | Database | Preset | n/a | Shows the collation order locale. | | +| `lc_ctype` | Database | Preset | n/a | Shows the character classification and case conversion locale. | | +| `lc_messages` | Session | Immediate | Superuser | Sets the language in which messages are displayed. | | +| `lc_monetary` | Session | Immediate | User | Sets the locale for formatting monetary amounts. | | +| `lc_numeric` | Session | Immediate | User | Sets the locale for formatting numbers. | | +| `lc_time` | Session | Immediate | User | Sets the locale for formatting date and time values. | | +| `listen_addresses` | Cluster | Restart | EPAS service account | Sets the host name or IP address(es) to listen to. | | +| `local_preload_libraries` | Cluster/Session | Reload/Immediate | EPAS service account/User | Lists shared libraries to preload into each backend. (Can also be set with `PGOPTIONS` at session start.) | | +| `lock_timeout` | Session | Immediate | User | Sets the maximum time allowed that a statement may wait for a lock. | | +| `lo_compat_privileges` | Session | Immediate | Superuser | Enables backward compatibility mode for privilege checks on large objects. | | +| `log_autovacuum_min_duration` | Cluster | Reload | EPAS service account | Sets the minimum execution time above which autovacuum actions will be logged. | | +| `log_checkpoints` | Cluster | Reload | EPAS service account | Logs each checkpoint. | | +| `log_connections` | Cluster/Session | Reload/Immediate | EPAS service account/User | Logs each successful connection. (Can also be set with `PGOPTIONS` at session start.) | | +| `log_destination` | Cluster | Reload | EPAS service account | Sets the destination for server log output. | | +| `log_directory` | Cluster | Reload | EPAS service account | Sets the destination directory for log files. | | +| `log_disconnections` | Cluster/Session | Reload/Immediate | EPAS service account/User | Logs end of a session, including duration. (Can also be set with `PGOPTIONS` at session start.) | | +| `log_duration` | Session | Immediate | Superuser | Logs the duration of each completed SQL statement. | | +| `log_error_verbosity` | Session | Immediate | Superuser | Sets the verbosity of logged messages. | | +| `log_executor_stats` | Session | Immediate | Superuser | Writes executor performance statistics to the server log. | | +| `log_file_mode` | Cluster | Reload | EPAS service account | Sets the file permissions for log files. | | +| `log_filename` | Cluster | Reload | EPAS service account | Sets the file name pattern for log files. | | +| `log_hostname` | Cluster | Reload | EPAS service account | Logs the host name in the connection logs. | | +| `log_line_prefix` | Cluster | Reload | EPAS service account | Controls information prefixed to each log line. | | +| `log_lock_waits` | Session | Immediate | Superuser | Logs long lock waits. | | +| `log_min_duration_statement` | Session | Immediate | Superuser | Sets the minimum execution time above which statements will be logged. | | +| `log_min_error_statement` | Session | Immediate | Superuser | Causes all statements generating error at or above this level to be logged. | | +| `log_min_messages` | Session | Immediate | Superuser | Sets the message levels that are logged. | | +| `log_parser_stats` | Session | Immediate | Superuser | Writes parser performance statistics to the server log. | | +| `log_planner_stats` | Session | Immediate | Superuser | Writes planner performance statistics to the server log. | | +| `log_rotation_age` | Cluster | Reload | EPAS service account | Automatic log file rotation will occur after N minutes. | | +| `log_rotation_size` | Cluster | Reload | EPAS service account | Automatic log file rotation will occur after N kilobytes. | | +| `log_statement` | Session | Immediate | Superuser | Sets the type of statements logged. | | +| `log_statement_stats` | Session | Immediate | Superuser | Writes cumulative performance statistics to the server log. | | +| `log_temp_files` | Session | Immediate | Superuser | Log the use of temporary files larger than this number of kilobytes. | | +| `log_timezone` | Cluster | Reload | EPAS service account | Sets the time zone to use in log messages. | | +| `log_truncate_on_rotation` | Cluster | Reload | EPAS service account | Truncate existing log files of same name during log rotation. | | +| `logging_collector` | Cluster | Restart | EPAS service account | Start a subprocess to capture stderr output and/or csvlogs into log files. | | +| `maintenance_work_mem` | Session | Immediate | User | Sets the maximum memory to be used for maintenance operations. | | +| `max_connections` | Cluster | Restart | EPAS service account | Sets the maximum number of concurrent connections. | | +| `max_files_per_process` | Cluster | Restart | EPAS service account | Sets the maximum number of simultaneously open files for each server process. | | +| `max_function_args` | Cluster | Preset | n/a | Shows the maximum number of function arguments. | | +| `max_identifier_length` | Cluster | Preset | n/a | Shows the maximum identifier length. | | +| `max_index_keys` | Cluster | Preset | n/a | Shows the maximum number of index keys. | | +| `max_locks_per_transaction` | Cluster | Restart | EPAS service account | Sets the maximum number of locks per transaction. | | +| `max_pred_locks_per_transaction` | Cluster | Restart | EPAS service account | Sets the maximum number of predicate locks per transaction. | | +| `max_prepared_transactions` | Cluster | Restart | EPAS service account | Sets the maximum number of simultaneously prepared transactions. | | +| `max_replication_slots` | Cluster | Restart | EPAS service account | Sets the maximum number of simultaneously defined replication slots. | | +| `max_stack_depth` | Session | Immediate | Superuser | Sets the maximum stack depth, in kilobytes. | | +| `max_standby_archive_delay` | Cluster | Reload | EPAS service account | Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data. | | +| `max_standby_streaming_delay` | Cluster | Reload | EPAS service account | Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data. | | +| `max_wal_senders` | Cluster | Restart | EPAS service account | Sets the maximum number of simultaneously running WAL sender processes. | | +| `max_wal_size` | Cluster | Reload | EPAS service account | Sets the maximum size to which the WAL will grow between automatic WAL checkpoints. The default is 1GB. | | +| `max_worker_processes` | Cluster | Restart | EPAS service account | Maximum number of concurrent worker processes. | | +| `min_wal_size` | Cluster | Reload | EPAS service account | Sets the threshold at which WAL logs will be recycled rather than removed. The default is 80 MB. | | +| `nls_length_semantics` | Session | Immediate | Superuser | Sets the semantics to use for char, varchar, varchar2 and long columns. | X | +| `odbc_lib_path` | Cluster | Restart | EPAS service account | Sets the path for ODBC library. | X | +| `optimizer_mode` | Session | Immediate | User | Default optimizer mode. | X | +| `oracle_home` | Cluster | Restart | EPAS service account | Sets the path for the Oracle home directory. | X | +| `password_encryption` | Session | Immediate | User | Encrypt passwords. | | +| `pg_prewarm.autoprewarm` | Cluster | Restart | EPAS service account | Enables the `autoprewarm` background worker. | X | +| `pg_prewarm.autoprewarm_interval` | Cluster | Reload | EPAS service account | Sets the minimum number of seconds after which `autoprewarm` dumps shared buffers. | X | +| `port` | Cluster | Restart | EPAS service account | Sets the TCP port on which the server listens. | | +| `post_auth_delay` | Cluster/Session | Reload/Immediate | EPAS service account/User | Waits N seconds on connection startup after authentication. (Can also be set with `PGOPTIONS` at session start.) | | +| `pre_auth_delay` | Cluster | Reload | EPAS service account | Waits N seconds on connection startup before authentication. | | +| `qreplace_function` | Session | Immediate | Superuser | The function to be used by Query Replace feature. Note: For internal use only. | X | +| `query_rewrite_enabled` | Session | Immediate | User | Child table scans will be skipped if their constraints guarantee that no rows match the query. | X | +| `query_rewrite_integrity` | Session | Immediate | Superuser | Sets the degree to which query rewriting must be enforced. | X | +| `quote_all_identifiers` | Session | Immediate | User | When generating SQL fragments, quote all identifiers. | | +| `random_page_cost` | Session | Immediate | User | Sets the planner's estimate of the cost of a nonsequentially fetched disk page. | | +| `restart_after_crash` | Cluster | Reload | EPAS service account | Reinitialize server after backend crash. | | +| `search_path` | Session | Immediate | User | Sets the schema search order for names that are not schema-qualified. | | +| `segment_size` | Cluster | Preset | n/a | Shows the number of pages per disk file. | | +| `seq_page_cost` | Session | Immediate | User | Sets the planner's estimate of the cost of a sequentially fetched disk page. | | +| `server_encoding` | Database | Preset | n/a | Sets the server (database) character set encoding. | | +| `server_version` | Cluster | Preset | n/a | Shows the server version. | | +| `server_version_num` | Cluster | Preset | n/a | Shows the server version as an integer. | | +| `session_preload_libraries` | Session | Immediate but only at connection start | Superuser | Lists shared libraries to preload into each backend. | | +| `session_replication_role` | Session | Immediate | Superuser | Sets the session's behavior for triggers and rewrite rules. | | +| `shared_buffers` | Cluster | Restart | EPAS service account | Sets the number of shared memory buffers used by the server. | | +| `shared_preload_libraries` | Cluster | Restart | EPAS service account | Lists shared libraries to preload into server. | | +| `sql_inheritance` | Session | Immediate | User | Causes subtables to be included by default in various commands. | | +| `ssl` | Cluster | Restart | EPAS service account | Enables SSL connections. | | +| `ssl_ca_file` | Cluster | Restart | EPAS service account | Location of the SSL certificate authority file. | | +| `ssl_cert_file` | Cluster | Restart | EPAS service account | Location of the SSL server certificate file. | | +| `ssl_ciphers` | Cluster | Restart | EPAS service account | Sets the list of allowed SSL ciphers. | | +| `ssl_crl_file` | Cluster | Restart | EPAS service account | Location of the SSL certificate revocation list file. | | +| `ssl_ecdh_curve` | Cluster | Restart | EPAS service account | Sets the curve to use for ECDH. | | +| `ssl_key_file` | Cluster | Restart | EPAS service account | Location of the SSL server private key file. | | +| `ssl_prefer_server_ciphers` | Cluster | Restart | EPAS service account | Give priority to server ciphersuite order. | | +| `ssl_renegotiation_limit` | Session | Immediate | User | Set the amount of traffic to send and receive before renegotiating the encryption keys. | | +| `standard_conforming_strings` | Session | Immediate | User | Causes '...' strings to treat backslashes literally. | | +| `statement_timeout` | Session | Immediate | User | Sets the maximum allowed duration of any statement. | | +| `stats_temp_directory` | Cluster | Reload | EPAS service account | Writes temporary statistics files to the specified directory. | | +| `superuser_reserved_connections` | Cluster | Restart | EPAS service account | Sets the number of connection slots reserved for superusers. | | +| `synchronize_seqscans` | Session | Immediate | User | Enable synchronized sequential scans. | | +| `synchronous_commit` | Session | Immediate | User | Sets immediate fsync at commit. | | +| `synchronous_standby_names` | Cluster | Reload | EPAS service account | List of names of potential synchronous standbys. | | +| `syslog_facility` | Cluster | Reload | EPAS service account | Sets the syslog "facility" to be used when syslog enabled. | | +| `syslog_ident` | Cluster | Reload | EPAS service account | Sets the program name used to identify PostgreSQL messages in syslog. | | +| `tcp_keepalives_count` | Session | Immediate | User | Maximum number of TCP keepalive retransmits. | | +| `tcp_keepalives_idle` | Session | Immediate | User | Time between issuing TCP keepalives. | | +| `tcp_keepalives_interval` | Session | Immediate | User | Time between TCP keepalive retransmits. | | +| `temp_buffers` | Session | Immediate | User | Sets the maximum number of temporary buffers used by each session. | | +| `temp_file_limit` | Session | Immediate | Superuser | Limits the total size of all temporary files used by each session. | | +| `temp_tablespaces` | Session | Immediate | User | Sets the tablespace(s) to use for temporary tables and sort files. | | +| `timed_statistics` | Session | Immediate | User | Enables the recording of timed statistics. | X | +| `timezone` | Session | Immediate | User | Sets the time zone for displaying and interpreting time stamps. | | +| `timezone_abbreviations` | Session | Immediate | User | Selects a file of time zone abbreviations. | | +| `trace_hints` | Session | Immediate | User | Emit debug info about hints being honored. | X | +| `trace_notify` | Session | Immediate | User | Generates debugging output for `LISTEN` and `NOTIFY`. | | +| `trace_recovery_messages` | Cluster | Reload | EPAS service account | Enables logging of recovery-related debugging information. | | +| `trace_sort` | Session | Immediate | User | Emit information about resource usage in sorting. | | +| `track_activities` | Session | Immediate | Superuser | Collects information about executing commnands. | | +| `track_activity_query_size` | Cluster | Restart | EPAS service account | Sets the size reserved for `pg_stat_activity.current_query`, in bytes. | | +| `track_counts` | Session | Immediate | Superuser | Collects statistics on database activity. | | +| `track_functions` | Session | Immediate | Superuser | Collects function-level statistics on database activity. | | +| `track_io_timing` | Session | Immediate | Superuser | Collects timing statistics for database I/O activity. | | +| `transaction_deferrable` | Session | Immediate | User | Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures. | | +| `transaction_isolation` | Session | Immediate | User | Sets the current transaction's isolation level. | | +| `transaction_read_only` | Session | Immediate | User | Sets the current transaction's read-only status. | | +| `transform_null_equals` | Session | Immediate | User | Treats `"expr=NULL"` as `"expr IS NULL"`. | | +| `unix_socket_directories` | Cluster | Restart | EPAS service account | Sets the directory where the Unix-domain socket will be created. | | +| `unix_socket_group` | Cluster | Restart | EPAS service account | Sets the owning group of the Unix-domain socket. | | +| `unix_socket_permissions` | Cluster | Restart | EPAS service account | Sets the access permissions of the Unix-domain socket. | | +| `update_process_title` | Session | Immediate | Superuser | Updates the process title to show the active SQL command. | | +| `utl_encode.uudecode_redwood` | Session | Immediate | User | Allows decoding of Oracle-created uuencoded data. | X | +| `utl_file.umask` | Session | Immediate | User | Umask used for files created through the `UTL_FILE` package. | X | +| `vacuum_cost_delay` | Session | Immediate | User | Vacuum cost delay in milliseconds. | | +| `vacuum_cost_limit` | Session | Immediate | User | Vacuum cost amount available before napping. | | +| `vacuum_cost_page_dirty` | Session | Immediate | User | Vacuum cost for a page dirtied by vacuum. | | +| `vacuum_cost_page_hit` | Session | Immediate | User | Vacuum cost for a page found in the buffer cache. | | +| `vacuum_cost_page_miss` | Session | Immediate | User | Vacuum cost for a page not found in the buffer cache. | | +| `vacuum_defer_cleanup_age` | Cluster | Reload | EPAS service account | Number of transactions by which `VACUUM` and `HOT` cleanup should be deferred, if any. | | +| `vacuum_freeze_min_age` | Session | Immediate | User | Minimum age at which `VACUUM` should freeze a table row. | | +| `vacuum_freeze_table_age` | Session | Immediate | User | Age at which `VACUUM` should scan whole table to freeze tuples. | | +| `vacuum_multixact_freeze_min_age` | Session | Immediate | User | Minimum age at which `VACUUM` should freeze a MultiXactId in a table row. | | +| `vacuum_multixact_freeze_table_age` | Session | Immediate | User | Multixact age at which `VACUUM` should scan whole table to freeze tuples. | | +| `wal_block_size` | Cluster | Preset | n/a | Shows the block size in the write ahead log. | | +| `wal_buffers` | Cluster | Restart | EPAS service account | Sets the number of disk-page buffers in shared memory for WAL. | | +| `wal_keep_segments` | Cluster | Reload | EPAS service account | Sets the number of WAL files held for standby servers. | | +| `wal_level` | Cluster | Restart | EPAS service account | Set the level of information written to the WAL. | | +| `wal_log_hints` | Cluster | Restart | EPAS service account | Writes full pages to WAL when first modified after a checkpoint, even for non-critical modifications. | | +| `wal_receiver_status_interval` | Cluster | Reload | EPAS service account | Sets the maximum interval between WAL receiver status reports to the primary. | | +| `wal_receiver_timeout` | Cluster | Reload | EPAS service account | Sets the maximum wait time to receive data from the primary. | | +| `wal_segment_size` | Cluster | Preset | n/a | Shows the number of pages per write ahead log segment. | | +| `wal_sender_timeout` | Cluster | Reload | EPAS service account | Sets the maximum time to wait for WAL replication. | | +| `wal_sync_method` | Cluster | Reload | EPAS service account | Selects the method used for forcing WAL updates to disk. | | +| `wal_writer_delay` | Cluster | Reload | EPAS service account | WAL writer sleep time between WAL flushes. | | +| `work_mem` | Session | Immediate | User | Sets the maximum memory to be used for query workspaces. | | +| `xloginsert_locks` | Cluster | Restart | EPAS service account | Sets the number of locks used for concurrent xlog insertions. | | +| `xmlbinary` | Session | Immediate | User | Sets how binary values are to be encoded in XML. | | +| `xmloption` | Session | Immediate | User | Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments. | | +| `zero_damaged_pages` | Session | Immediate | Superuser | Continues processing past damaged page headers. | | \ No newline at end of file diff --git a/product_docs/docs/pem/8.0/pem_inst_guide_linux/03_pem_architecture.mdx b/product_docs/docs/pem/8.0/pem_inst_guide_linux/03_pem_architecture.mdx index e23e5ce8e4d..a423b034e4b 100644 --- a/product_docs/docs/pem/8.0/pem_inst_guide_linux/03_pem_architecture.mdx +++ b/product_docs/docs/pem/8.0/pem_inst_guide_linux/03_pem_architecture.mdx @@ -15,7 +15,7 @@ PEM consists of a number of individual software components; the individual compo - **PEM Server** - The PEM Server is used as the data repository for monitoring data and as a server to which both Agents and Clients connect. The PEM server consists of an instance of PostgreSQL and an associated database for storage of monitoring data, and a server that provides web services. - **PEM Agent** - The PEM Agent is responsible for executing tasks and reporting statistics from the Agent host and monitored Postgres instances to the PEM server. A single PEM Agent can monitor multiple installed instances of Postgres that reside on one or many hosts. - **PEM Web Client** - The PEM web interface allows you to manage and monitor Postgres servers and utilize PEM extended functionality. The web interface software is installed with the PEM server and is accessed via any supported web browser. -- **SQL Profiler** - SQL Profiler is a Postgres server plugin to record the monitoring data and query plans to be analysed by the SQL Profiler tool in PEM. This is an optional component of PEM, but the plugin must be installed into each instance of Postgres with which you wish to use the SQL Profiler tool. The SQL Profiler may be used with any supported version of an EDB distribution of a PostgreSQL server or Advanced Server (not just those managed through the PEM server). See the [PEM SQL Profiler Configuration Guide](/pem/latest/) for details and supported versions. +- **SQL Profiler** - SQL Profiler is a Postgres server plugin to record the monitoring data and query plans to be analysed by the SQL Profiler tool in PEM. This is an optional component of PEM, but the plugin must be installed into each instance of Postgres with which you wish to use the SQL Profiler tool. The SQL Profiler may be used with any supported version of an EDB distribution of a PostgreSQL server or Advanced Server (not just those managed through the PEM server). See the [PEM SQL Profiler Configuration Guide](/pem/latest/pem_sqlprofiler/) for details and supported versions. **PEM architecture** @@ -100,4 +100,4 @@ The plugin is installed with the EDB Postgres Advanced Server distribution but m SQL Profiler may be used on servers that are not managed through PEM, but to perform scheduled traces, a server must have the plugin installed, and must be managed by an installed and configured PEM agent. -For more information about using SQL Profiler, see the [PEM SQL Profiler Configuration Guide](/pem/latest/) +For more information about using SQL Profiler, see the [PEM SQL Profiler Configuration Guide](/pem/latest/pem_sqlprofiler/) diff --git a/product_docs/docs/pem/8.0/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/06_installing_pem_agent_on_linux.mdx b/product_docs/docs/pem/8.0/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/06_installing_pem_agent_on_linux.mdx index d2dc2e9f7d3..b387c489c76 100644 --- a/product_docs/docs/pem/8.0/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/06_installing_pem_agent_on_linux.mdx +++ b/product_docs/docs/pem/8.0/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/06_installing_pem_agent_on_linux.mdx @@ -2,7 +2,7 @@ title: "Installing a PEM Agent on Linux Platforms" --- -A PEM Agent may monitor one or more servers on one or more hosts. For comprehensive information about managing a PEM Agent, see the [PEM Agent User Guide](/pem/latest/). +A PEM Agent may monitor one or more servers on one or more hosts. For comprehensive information about managing a PEM Agent, see the [PEM Agent User Guide](/pem/latest/pem_agent/). ## Installing a PEM Agent on a CentOS or RHEL Host diff --git a/product_docs/docs/pem/8.0/pem_inst_guide_linux/05_the_pem_web_interface.mdx b/product_docs/docs/pem/8.0/pem_inst_guide_linux/05_the_pem_web_interface.mdx index 00e662567d4..347b7804abe 100644 --- a/product_docs/docs/pem/8.0/pem_inst_guide_linux/05_the_pem_web_interface.mdx +++ b/product_docs/docs/pem/8.0/pem_inst_guide_linux/05_the_pem_web_interface.mdx @@ -30,4 +30,4 @@ A server may be managed or unmanaged: You must also ensure the `pg_hba.conf` file of the server that you are registering allows connections from the host of the PEM web interface. -To access online help information about the PEM web interface, select `Help` from the menu bar. Additional information is available from the [EDB website](/pem/latest). +To access online help information about the PEM web interface, select `Help` from the menu bar. Additional information is available from the [Online Help](/pem/latest/pem_online_help/) pages. diff --git a/scripts/source/config_sources.py b/scripts/source/config_sources.py index cd9fa7ae0be..6087356a245 100644 --- a/scripts/source/config_sources.py +++ b/scripts/source/config_sources.py @@ -1,7 +1,5 @@ import json -from pull_sources import pull_sources - ANSI_STOP = '\033[0m' ANSI_BLUE = '\033[34m' ANSI_GREEN = '\033[32m' @@ -30,13 +28,11 @@ 'slony', ] -BASE_OUTPUT = { - 'k8s_docs': False, -} +BASE_OUTPUT = {} BASE_OUTPUT.update({ doc : False for doc in PRODUCT_DOCS }) OPTIONS = [ - { 'index': 0, 'name': 'None (Advocacy Docs only)', 'key': None }, + { 'index': 0, 'name': 'None (load `advocacy_docs` only)', 'key': None }, { 'index': 1, 'name': 'All EDB Product Docs', 'output': { doc : True for doc in PRODUCT_DOCS } }, { 'index': '1a', 'name': 'Ark Platform', 'key': 'ark', 'indent': True }, { 'index': '1b', 'name': 'Backup and Recovery Tool', 'key': 'bart', 'indent': True }, @@ -57,22 +53,20 @@ { 'index': '1q', 'name': 'Mongo Data Adapter', 'key': 'mongo_data_adapter', 'indent': True }, { 'index': '1r', 'name': 'MySQL Data Adapter', 'key': 'mysql_data_adapter', 'indent': True }, { 'index': '1s', 'name': 'Replication Server', 'key': 'eprs', 'indent': True }, - { 'index': 2, 'name': 'Kubernetes Docs', 'key': 'k8s_docs', 'external': True }, ] print('Which sources would you like loaded when you run `yarn develop`?') for i, option in enumerate(OPTIONS): - print("{2}{0}: {1} {3}".format( + print("{2}{0}: {1}".format( option['index'], option['name'], ' ' if option.get('indent') else '', - '(external)' if option.get('external') else '' ) ) selections = [] while len(selections) == 0: - user_input = input('Enter your choices separated by commas, e.g. "1b,1m,2": ') + user_input = input('Enter your choices separated by commas, e.g. "1b,1m": ') split_user_input = user_input.strip().split(',') for selection_index in split_user_input: @@ -87,12 +81,9 @@ for option in selections: print(ANSI_BLUE + 'Selected {0}'.format(option['name']) + ANSI_STOP) -external_sources_loaded = False with open('dev-sources.json', 'w') as outfile: output = BASE_OUTPUT.copy() for option in selections: - if option.get('external'): - external_sources_loaded = True if option.get('output'): output.update(option['output']) elif option.get('key'): @@ -100,8 +91,3 @@ json.dump(output, outfile, indent=2) print(ANSI_GREEN + 'Wrote to dev-sources.json' + ANSI_STOP) -if external_sources_loaded: - print('You have selected some external sources, running command `yarn pull-sources`.') - print('-' * 50) - pull_sources() - diff --git a/scripts/source/pull_sources.py b/scripts/source/pull_sources.py deleted file mode 100644 index 36719ed8f6c..00000000000 --- a/scripts/source/pull_sources.py +++ /dev/null @@ -1,60 +0,0 @@ -import os -import shutil -import json -import sys - -from source_k8s_docs import source_k8s_docs -from source_barman import source_barman -from source_pgbackrest import source_pgbackrest - -ANSI_RED = '\033[31m' -ANSI_STOP = '\033[0m' - -DEV_SOURCES_TO_FUNCTION = { - 'k8s_docs': source_k8s_docs, - 'barman': source_barman, - 'pgbackrest': source_pgbackrest, -} - -def wipe_sources(): - if os.path.exists('external_sources'): - print('Wiping sources...') - shutil.rmtree('external_sources') - -def pull_sources(): - arg = None - if len(sys.argv) > 1: - arg = sys.argv[1].strip() - is_build = arg in ['--build', '--force-build'] - force = arg == '--force-build' - - source_filename = 'dev-sources.json' - if is_build: - source_filename = 'build-sources.json' - - if os.path.exists(source_filename): - if not force: - print(ANSI_RED + 'Pulling fresh sources will completely destroy any changes you have made inside the `external_sources/` folder.' + ANSI_STOP) - response = input('Do you want to continue (y/n)? ') - - if response.strip() != 'y': - sys.exit('User canceled process.') - - wipe_sources() - if not os.path.exists('external_sources'): - os.mkdir('external_sources') - - print('Sourcing using `{}`...'.format(source_filename)) - with open(source_filename) as dev_sources_json: - sources = json.load(dev_sources_json) - for source, val in sources.items(): - if val: - source_function = DEV_SOURCES_TO_FUNCTION.get(source) - if source_function: - source_function() - - else: - raise Exception(ANSI_RED + 'Failed to source: `{}` not found! Configure sources with `yarn config-sources`.'.format(source_filename) + ANSI_STOP) - -if __name__ == '__main__': - pull_sources() diff --git a/scripts/source/restore_mtimes.py b/scripts/source/restore_mtimes.py deleted file mode 100644 index 5b40ae736e4..00000000000 --- a/scripts/source/restore_mtimes.py +++ /dev/null @@ -1,4 +0,0 @@ -import os -import sys - -os.system('python3 scripts/source/git-restore-mtime.py {0}'.format(sys.argv[1])) diff --git a/scripts/source/source_barman.py b/scripts/source/source_barman.py deleted file mode 100644 index 228184804ab..00000000000 --- a/scripts/source/source_barman.py +++ /dev/null @@ -1,53 +0,0 @@ -import os -import shutil -import glob -import re -from urllib.parse import urlparse - -def process_md(file_path): - split_path = file_path.split('/') - split_path.insert(len(split_path)-1, 'barman') - new_file_path = '/'.join(split_path).replace('.md', '.mdx').replace('.en', '') - - with open(new_file_path, 'w') as new_file: - with open(file_path, 'r') as md_file: - copying = False - previous_line_was_blank = False - gh_relative_path = file_path.replace('external_sources/barman', '') - - for line in md_file: - if copying: - line_blank = line.strip() == '' - if line_blank and not previous_line_was_blank: - previous_line_was_blank = True - new_file.write(line) - elif not line_blank: - previous_line_was_blank = False - new_file.write( - line.replace('
', '
') - ) - if line.startswith('#') and not copying: - copying = True - new_file.write("---\ntitle: '{0}'\noriginalFilePath: '{1}'\n---\n\n".format( - re.sub(r'#+ ', '', line).strip(), - gh_relative_path - )) - os.remove(file_path) - -def create_index(): - with open('external_sources/barman/doc/manual/barman/index.mdx', 'w') as index_file: - index_file.write("---\ntitle: 'Barman Manual'\n---\n\nAutomatically generated index file") - -def source_barman(): - print('Pulling barman...') - os.system('git clone -b master https://github.com/2ndquadrant-it/barman.git external_sources/barman') - os.system('mkdir external_sources/barman/doc/manual/barman') - - print('Processing barman...') - files = glob.glob('external_sources/barman/doc/manual/**/*.md', recursive=True) - for file_path in files: - process_md(file_path) - create_index() - -if __name__ == '__main__': - source_barman() diff --git a/scripts/source/source_cloud_native_operator.py b/scripts/source/source_cloud_native_operator.py index 0165920a327..386c95d6a9e 100644 --- a/scripts/source/source_cloud_native_operator.py +++ b/scripts/source/source_cloud_native_operator.py @@ -4,10 +4,18 @@ import re from urllib.parse import urlparse +STANDARD_FRONTMATTER = """--- +title: '{0}' +originalFilePath: '{1}' +product: 'Cloud Native Operator'{2} +--- +""" + INDEX_FRONTMATTER = """ indexCards: none directoryDefaults: prevNext: true + iconName: kubernetes navigation: {0}""" @@ -46,7 +54,7 @@ def process_md(file_path): new_file.write(rewrite_yaml_links(line)) if line.startswith('#') and not copying: copying = True - new_file.write("---\ntitle: '{0}'\noriginalFilePath: '{1}'{2}\n---\n\n".format( + new_file.write(STANDARD_FRONTMATTER.format( re.sub(r'#+ ', '', line).strip(), gh_relative_path, index_frontmatter() if new_file_path.split('/')[-1] == 'index.mdx' else '' diff --git a/scripts/source/source_k8s_docs.py b/scripts/source/source_k8s_docs.py deleted file mode 100644 index 420acaf044c..00000000000 --- a/scripts/source/source_k8s_docs.py +++ /dev/null @@ -1,65 +0,0 @@ -import os -import shutil -import glob -import re -from urllib.parse import urlparse - -gh_tree_base_url = 'https://github.com/EnterpriseDB/edb-k8s-doc/tree/master/' - -def rewrite_any_relative_links(line, gh_relative_path): - match = re.search(r'\[.+\]\((.+)\)', line) - if match and match[1]: - domain = urlparse(match[1]).netloc - if not domain and not match[1].startswith('#') and not 'github.com' in match[1]: - split_path = gh_relative_path.split('/') - dot_dot_count = len(re.findall(r'\.\./', match[1])) - gh_relative_folder_path = '/'.join(split_path[0:len(split_path) - 1 - dot_dot_count]) - new_link = gh_tree_base_url+gh_relative_folder_path+'/'+match[1].replace('../', '') - return re.sub(r'\]\(.+\)', ']({})'.format(new_link), line) - return line - -def process_md(file_path): - if file_path.endswith('README.md'): - new_file_path = file_path.replace('README.md', 'index.mdx') - else: - new_file_path = file_path.replace('.md', '.mdx') - - with open(new_file_path, 'w') as new_file: - with open(file_path, 'r') as md_file: - copying = False - previous_line_was_blank = False - gh_relative_path = file_path.replace('external_sources/k8s_docs/kubernetes/', '') - - for line in md_file: - if copying: - line_blank = line.strip() == '' - if line_blank and not previous_line_was_blank: - previous_line_was_blank = True - new_file.write(line) - elif not line_blank: - previous_line_was_blank = False - new_file.write( - rewrite_any_relative_links( - line.replace('
', '
'), - gh_relative_path - ) - ) - if line.startswith('#') and not copying: - copying = True - new_file.write("---\ntitle: '{0}'\noriginalFilePath: '{1}'\n---\n\n".format( - re.sub(r'#+ ', '', line).strip(), - gh_relative_path - )) - os.remove(file_path) - -def source_k8s_docs(): - print('Pulling k8s_docs...') - os.system('git clone -b master https://github.com/EnterpriseDB/edb-k8s-doc.git external_sources/k8s_docs/kubernetes') - - print('Processing k8s_docs...') - files = glob.glob('external_sources/k8s_docs/kubernetes/**/*.md', recursive=True) - for file_path in files: - process_md(file_path) - -if __name__ == '__main__': - source_k8s_docs() diff --git a/scripts/source/source_pgbackrest.py b/scripts/source/source_pgbackrest.py deleted file mode 100644 index 602d0eba055..00000000000 --- a/scripts/source/source_pgbackrest.py +++ /dev/null @@ -1,74 +0,0 @@ -import os -import shutil -import glob -import re -from urllib.parse import urlparse - -def rewrite_any_relative_links(line, file_path): - match = re.search(r'\[.+\]\((.+)\)', line) - if match and match[1] and not match[1].endswith('.png'): - domain = urlparse(match[1]).netloc - if not domain: - # this is pretty fragile but it works for the POC - new_link = match[1].replace('.md', '') - #if file_path.endswith('index.mdx'): - # new_link = 'pgbackrest/' + new_link - return re.sub(r'\]\(.+\)', ']({})'.format(new_link), line) - return line - -def process_md(file_path): - if os.path.islink(file_path): - os.remove(file_path) - return - - split_path = file_path.split('/') - split_path.insert(len(split_path)-1, 'pgbackrest') - new_file_path = '/'.join(split_path).replace('.md', '.mdx') - if split_path[-1] == 'README.md': - new_file_path = new_file_path.replace('README.mdx', 'index.mdx') - - with open(new_file_path, 'w') as new_file: - with open(file_path, 'r') as md_file: - copying = False - previous_line_was_blank = False - gh_relative_path = file_path.replace('external_sources/pgbackrest', '') - - for line in md_file: - if copying: - line_blank = line.strip() == '' - if line_blank and not previous_line_was_blank: - previous_line_was_blank = True - new_file.write(line) - elif not line_blank: - previous_line_was_blank = False - new_file.write( - rewrite_any_relative_links( - line.replace('
', '
'), - new_file_path - ) - ) - if line.startswith('#') and not copying: - copying = True - new_file.write("---\ntitle: '{0}'\noriginalFilePath: '{1}'\n---\n\n".format( - re.sub(r'#+ ', '', line).strip().replace('
', '-'), - gh_relative_path - )) - os.remove(file_path) - -def source_pgbackrest(): - print('Pulling pgbackrest...') - - # Commented out as the repo is private, use included files for now - # os.system('git clone -b docs_development git@github.com:EnterpriseDB/pgbackrest-docs.git external_sources/pgbackrest') - os.system('cp -r temp_pgbackrest/. external_sources/pgbackrest') - - os.system('mkdir external_sources/pgbackrest/docs/pgbackrest') - - print('Processing pgbackrest...') - files = glob.glob('external_sources/pgbackrest/docs/**/*.md', recursive=True) - for file_path in files: - process_md(file_path) - os.system('mv external_sources/pgbackrest/docs/images external_sources/pgbackrest/docs/pgbackrest/images') - -if __name__ == '__main__': - source_pgbackrest() diff --git a/src/components/attention.js b/src/components/attention.js deleted file mode 100644 index a4206756a1a..00000000000 --- a/src/components/attention.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import { Alert } from 'react-bootstrap'; -import Markdown from 'markdown-to-jsx'; - -const Attention = ({ children, ...otherProps }) => ( - - {children} - -); - -export default Attention; diff --git a/src/components/card-decks.js b/src/components/card-decks.js index e09c470e029..e465d68a475 100644 --- a/src/components/card-decks.js +++ b/src/components/card-decks.js @@ -62,7 +62,9 @@ const CardDecks = ({ cards, cardType = 'simple' }) => { return ( {cardType === 'full' ? ( diff --git a/src/components/code-block.js b/src/components/code-block.js index 2342469ced7..f9ee02cbb46 100644 --- a/src/components/code-block.js +++ b/src/components/code-block.js @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { Button } from 'react-bootstrap'; -const childToString = child => { +const childToString = (child) => { if (typeof child === 'string') { return child; // hit string, unroll } else if (child && child.props) { @@ -11,7 +11,7 @@ const childToString = child => { return ''; }; -const popExtraNewLines = code => { +const popExtraNewLines = (code) => { while ( code.length - 1 > 0 && childToString(code[code.length - 1]).trim() === '' @@ -20,7 +20,7 @@ const popExtraNewLines = code => { } }; -const splitChildrenIntoCodeAndOutput = rawChildren => { +const splitChildrenIntoCodeAndOutput = (rawChildren) => { if (!rawChildren) { return [[], []]; } @@ -60,7 +60,7 @@ const splitChildrenIntoCodeAndOutput = rawChildren => { const CodePre = ({ className, content, runnable }) => { const codeRef = React.createRef(); const [copyButtonText, setCopyButtonText] = useState('Copy'); - const copyClick = e => { + const copyClick = (e) => { const text = codeRef.current && codeRef.current.textContent; navigator.clipboard.writeText(text).then(() => { setCopyButtonText('Copied!'); @@ -72,13 +72,13 @@ const CodePre = ({ className, content, runnable }) => { }; const [wrap, setWrap] = useState(false); - const wrapClick = e => { + const wrapClick = (e) => { setWrap(!wrap); e.target.blur(); }; const [canRun, setCanRun] = useState(true); - const runClick = e => { + const runClick = (e) => { const text = codeRef.current && codeRef.current.textContent; window.katacoda.write(text); setCanRun(false); @@ -141,7 +141,9 @@ const CodeBlock = ({ children, katacodaPanelData, ...otherProps }) => { : 'text'; const execLanguages = katacodaPanelData - ? ['shell'].concat(katacodaPanelData.codelanguages) + ? ['shell'].concat( + katacodaPanelData.codelanguages?.split(',')?.map((l) => l.trim()), + ) : []; if (codeContent.length > 0) { diff --git a/src/components/icon/iconNames.js b/src/components/icon/iconNames.js index 17972b66c77..d029d501073 100644 --- a/src/components/icon/iconNames.js +++ b/src/components/icon/iconNames.js @@ -4,6 +4,7 @@ export default { ANNOUNCE: 'announce', ARROW_LEFT: 'arrowleft', ARROW_RIGHT: 'arrowright', + BARMAN: 'barman', BIG_DATA: 'bigdata', BRAIN_CIRCUIT: 'braincircuit', BRIEFCASE: 'briefcase', @@ -27,6 +28,7 @@ export default { CLOUD_PRIVATE: 'cloudprivate', CLOUD_PUBLIC: 'cloudpublic', CODE_WRITING: 'codewriting', + COFFEE: 'coffee', CONFIG_MANAGEMENT: 'configmanagement', CONFLICT: 'conflict', CONNECT: 'connect', @@ -71,12 +73,14 @@ export default { EDB_MIGRATION_PORTAL: 'edbmigrationportal', EDB_MIGRATION_TOOLKIT: 'edbmigrationtoolkit', EDB_PEM: 'edbpem', + EDB_REPLICATE: 'edbreplicate', EDB_REPLICATION: 'edbreplication', EDB_SYMBOL: 'edbsymbol', ELLIPSIS: 'ellipsis', ENERGY: 'energy', ENTERPRISE: 'enterprise', EXPORT: 'export', + EXTERNAL_LINK: 'externallink', FILE: 'file', GLOBE: 'globe', GOLANG_COLOR: 'golangcolor', @@ -162,9 +166,12 @@ export default { SUPPORT: 'support', SUSE_COLOR: 'susecolor', SWIFT_COLOR: 'swiftcolor', + SYNCHRONIZE: 'synchronize', TEN_YEARS: 'tenyears', + TICKET_STAR: 'ticketstar', TICKET: 'ticket', TOOLS: 'tools', + TRAINING: 'training', TREEHOUSE: 'treehouse', TUTORIAL: 'tutorial', TYPESCRIPT_COLOR: 'typescriptcolor', diff --git a/src/components/icon/iconType.js b/src/components/icon/iconType.js index 19bb33fc1c2..d4a7c33e320 100644 --- a/src/components/icon/iconType.js +++ b/src/components/icon/iconType.js @@ -6,6 +6,7 @@ import AngularjsColorSvg from '../../../static/edb-icons/angularjs-color.svg'; import AnnounceSvg from '../../../static/edb-icons/announce.svg'; import ArrowLeftSvg from '../../../static/edb-icons/arrow-left.svg'; import ArrowRightSvg from '../../../static/edb-icons/arrow-right.svg'; +import BarmanSvg from '../../../static/edb-icons/barman.svg'; import BigDataSvg from '../../../static/edb-icons/big-data.svg'; import BrainCircuitSvg from '../../../static/edb-icons/brain-circuit.svg'; import BriefcaseSvg from '../../../static/edb-icons/briefcase.svg'; @@ -29,6 +30,7 @@ import CloudDbaSvg from '../../../static/edb-icons/cloud-dba.svg'; import CloudPrivateSvg from '../../../static/edb-icons/cloud-private.svg'; import CloudPublicSvg from '../../../static/edb-icons/cloud-public.svg'; import CodeWritingSvg from '../../../static/edb-icons/code-writing.svg'; +import CoffeeSvg from '../../../static/edb-icons/coffee.svg'; import ConfigManagementSvg from '../../../static/edb-icons/config-management.svg'; import ConflictSvg from '../../../static/edb-icons/conflict.svg'; import ConnectSvg from '../../../static/edb-icons/connect.svg'; @@ -73,12 +75,14 @@ import EdbLogoSymbolBadgeSvg from '../../../static/edb-icons/edb-logo-symbol-bad import EdbMigrationPortalSvg from '../../../static/edb-icons/edb-migration-portal.svg'; import EdbMigrationToolkitSvg from '../../../static/edb-icons/edb-migration-toolkit.svg'; import EdbPemSvg from '../../../static/edb-icons/edb-pem.svg'; +import EdbReplicateSvg from '../../../static/edb-icons/edb-replicate.svg'; import EdbReplicationSvg from '../../../static/edb-icons/edb-replication.svg'; import EdbSymbolSvg from '../../../static/edb-icons/edb-symbol.svg'; import EllipsisSvg from '../../../static/edb-icons/ellipsis.svg'; import EnergySvg from '../../../static/edb-icons/energy.svg'; import EnterpriseSvg from '../../../static/edb-icons/enterprise.svg'; import ExportSvg from '../../../static/edb-icons/export.svg'; +import ExternalLinkSvg from '../../../static/edb-icons/external-link.svg'; import FileSvg from '../../../static/edb-icons/file.svg'; import GlobeSvg from '../../../static/edb-icons/globe.svg'; import GolangColorSvg from '../../../static/edb-icons/golang-color.svg'; @@ -164,9 +168,12 @@ import SupportPortalSvg from '../../../static/edb-icons/support-portal.svg'; import SupportSvg from '../../../static/edb-icons/support.svg'; import SuseColorSvg from '../../../static/edb-icons/suse-color.svg'; import SwiftColorSvg from '../../../static/edb-icons/swift-color.svg'; +import SynchronizeSvg from '../../../static/edb-icons/synchronize.svg'; import TenYearsSvg from '../../../static/edb-icons/ten-years.svg'; +import TicketStarSvg from '../../../static/edb-icons/ticket-star.svg'; import TicketSvg from '../../../static/edb-icons/ticket.svg'; import ToolsSvg from '../../../static/edb-icons/tools.svg'; +import TrainingSvg from '../../../static/edb-icons/training.svg'; import TreehouseSvg from '../../../static/edb-icons/treehouse.svg'; import TutorialSvg from '../../../static/edb-icons/tutorial.svg'; import TypescriptColorSvg from '../../../static/edb-icons/typescript-color.svg'; @@ -194,6 +201,8 @@ export default function IconType({ iconName, ...rest }) { return ; case iconNames.ARROW_RIGHT: return ; + case iconNames.BARMAN: + return ; case iconNames.BIG_DATA: return ; case iconNames.BRAIN_CIRCUIT: @@ -240,6 +249,8 @@ export default function IconType({ iconName, ...rest }) { return ; case iconNames.CODE_WRITING: return ; + case iconNames.COFFEE: + return ; case iconNames.CONFIG_MANAGEMENT: return ; case iconNames.CONFLICT: @@ -328,6 +339,8 @@ export default function IconType({ iconName, ...rest }) { return ; case iconNames.EDB_PEM: return ; + case iconNames.EDB_REPLICATE: + return ; case iconNames.EDB_REPLICATION: return ; case iconNames.EDB_SYMBOL: @@ -340,6 +353,8 @@ export default function IconType({ iconName, ...rest }) { return ; case iconNames.EXPORT: return ; + case iconNames.EXTERNAL_LINK: + return ; case iconNames.FILE: return ; case iconNames.GLOBE: @@ -510,12 +525,18 @@ export default function IconType({ iconName, ...rest }) { return ; case iconNames.SWIFT_COLOR: return ; + case iconNames.SYNCHRONIZE: + return ; case iconNames.TEN_YEARS: return ; + case iconNames.TICKET_STAR: + return ; case iconNames.TICKET: return ; case iconNames.TOOLS: return ; + case iconNames.TRAINING: + return ; case iconNames.TREEHOUSE: return ; case iconNames.TUTORIAL: diff --git a/src/components/index-sub-nav.js b/src/components/index-sub-nav.js index 6b40c0693f6..3029e45f8ac 100644 --- a/src/components/index-sub-nav.js +++ b/src/components/index-sub-nav.js @@ -12,6 +12,7 @@ const IndexSubLink = ({ url, children }) => ( const IndexSubNav = () => (
    + EDB Home Support diff --git a/src/components/index.js b/src/components/index.js index b5a4f285329..f8be29077e0 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -1,4 +1,3 @@ -import Attention from './attention'; import BackButton from './back-button'; import CardDecks from './card-decks'; import CodeBlock from './code-block'; @@ -30,7 +29,6 @@ import TreeNode from './tree-node'; import VersionDropdown from './version-dropdown'; export { - Attention, BackButton, CardDecks, CodeBlock, diff --git a/src/components/katacoda-panel.js b/src/components/katacoda-panel.js index 8c03f6ac180..d0a3ba99bc1 100644 --- a/src/components/katacoda-panel.js +++ b/src/components/katacoda-panel.js @@ -114,6 +114,7 @@ const KatacodaPanel = ({ katacodaPanelData }) => { } const account = katacodaPanelData.account; const scenario = katacodaPanelData.scenario; + const command = katacodaPanelData.initializeCommand; const [isShown, setShown] = useState(false); const scenarioId = account ? [account, scenario].join('/') : scenario; @@ -146,6 +147,7 @@ const KatacodaPanel = ({ katacodaPanelData }) => { className={`katacoda-panel${isShown ? '' : ' d-none'}`} data-katacoda-id={scenarioId} data-katacoda-ui="panel" + data-katacoda-command={command} data-katacoda-color="e94621" data-katacoda-ondemand="true" /> @@ -160,7 +162,7 @@ const useAdjustLayoutCloseDetection = (isShown, panelElementId, setShown) => { document.documentElement.classList.add('katacoda-panel-active'); // detect when katacoda is closed via the internal button - const handler = e => { + const handler = (e) => { if ( e.data.type === 'close-panel' && (e.data.data || { target: null }).target === panelElementId @@ -180,7 +182,7 @@ const useAdjustLayoutCloseDetection = (isShown, panelElementId, setShown) => { // adapted from Katacoda src to patch over http to https redirect issues // when testing locally - remove once Katacoda has this fixed -const katacodaHttpsWriter = cmd => { +const katacodaHttpsWriter = (cmd) => { let target = document.querySelectorAll('[data-katacoda-env]'); if (target.length === 0) target = document.querySelectorAll('[data-katacoda-id]'); diff --git a/src/components/layout.js b/src/components/layout.js index f6f3fb76d68..c81db7a6461 100644 --- a/src/components/layout.js +++ b/src/components/layout.js @@ -2,7 +2,6 @@ import React, { useState, useEffect } from 'react'; import { Helmet } from 'react-helmet'; import useSiteMetadata from '../hooks/use-sitemetadata'; import { - Attention, CodeBlock, KatacodaPageLink, KatacodaPanel, @@ -83,28 +82,27 @@ const Layout = ({ {...rest} /> ), - table: props => ( + table: (props) => (
    ), - pre: props => ( + pre: (props) => ( ), - h2: props =>

    , // eslint-disable-line jsx-a11y/heading-has-content - h3: props =>

    , // eslint-disable-line jsx-a11y/heading-has-content - img: props => , // eslint-disable-line jsx-a11y/alt-text - blockquote: props => ( + h2: (props) =>

    , // eslint-disable-line jsx-a11y/heading-has-content + h3: (props) =>

    , // eslint-disable-line jsx-a11y/heading-has-content + img: (props) => , // eslint-disable-line jsx-a11y/alt-text + blockquote: (props) => (
    ), - KatacodaPanel: props => ( + KatacodaPanel: (props) => ( ), KatacodaPageLink, - Attention, Icon, StubCards, }} diff --git a/src/components/link.js b/src/components/link.js index 64a40a00a91..8ba476de9a0 100644 --- a/src/components/link.js +++ b/src/components/link.js @@ -29,7 +29,7 @@ const isAbsoluteOrProtocolRelativeUrl = (url) => { }; const hasNonMarkdownExtension = (url) => { - return url.match(/\.\w+$/) && !url.match(/\.mdx?$/); + return url.match(/\.[a-zA-Z]+$/) && !url.match(/\.mdx?$/); }; const rewriteUrl = (url, pageUrl, pageIsIndex, pathPrefix) => { diff --git a/src/components/logo.js b/src/components/logo.js index 5d80211d7f0..aa95f165b2d 100644 --- a/src/components/logo.js +++ b/src/components/logo.js @@ -1,5 +1,5 @@ import React from 'react'; -import LogoSvg from '../../static/edb-icons/edb-docs-logo-disc-dark-beta.svg'; +import LogoSvg from '../../static/images/edb-docs-logo-disc-dark-beta.svg'; function Logo({ className, width, height }) { return ; diff --git a/src/components/version-dropdown.js b/src/components/version-dropdown.js index c7f4585b05c..d9fc4aa8559 100644 --- a/src/components/version-dropdown.js +++ b/src/components/version-dropdown.js @@ -1,10 +1,18 @@ import React from 'react'; import { Dropdown } from 'react-bootstrap'; -import usePathPrefix from '../hooks/use-path-prefix'; +import { Link } from './'; + +const DropdownItem = ({ to, active, children }) => ( + + {children} + +); const VersionDropdown = ({ versionArray, path }) => { const activeVersion = path.split('/')[2]; - const pathPrefix = usePathPrefix(); return ( @@ -16,15 +24,14 @@ const VersionDropdown = ({ versionArray, path }) => { - {versionArray.map(version => ( - ( + Version {version.version} - + ))} diff --git a/src/constants/index-navigation.js b/src/constants/index-navigation.js deleted file mode 100644 index e14c902d0ba..00000000000 --- a/src/constants/index-navigation.js +++ /dev/null @@ -1,180 +0,0 @@ -import IconNames from '../components/icon/iconNames'; -import useActiveSources from '../hooks/use-active-sources'; - -/* - `rawIndexNavigation` contains the entire index navigation tree. - The default export of this file is a function that filers this list down - to only active sources. -*/ - -export const rawIndexNavigation = [ - { - sectionName: 'PostgreSQL Journey', - links: [ - { - title: 'Installing', - url: '/postgresql_journey/02_installing', - iconName: IconNames.INSTALL, - }, - { - title: 'Developing', - url: '/postgresql_journey/04_developing', - iconName: IconNames.CONNECT, - }, - ], - }, - { - sectionName: 'Databases', - links: [ - { - title: 'EDB Postgres Advanced Server', - url: '/epas/latest', - iconName: IconNames.EDB_EPAS, - source: 'epas', - }, - { - title: 'PostgreSQL', - url: '/postgresql', - iconName: IconNames.POSTGRESQL, - }, - ], - }, - { - sectionName: 'Monitoring & Management Tools', - links: [ - { - title: 'Postgres Enterprise Manager', - url: '/pem/latest', - iconName: IconNames.EDB_PEM, - source: 'pem', - }, - { - title: 'pgAdmin', - url: '/pgadmin', - iconName: IconNames.POSTGRESQL, - }, - ], - }, - { - sectionName: 'High Availability Tools', - links: [ - { - title: 'EDB Replication Server ', - url: '/eprs/latest', - iconName: IconNames.EDB_EPRS, - source: 'eprs', - }, - { - title: 'Failover Manager', - url: '/efm/latest', - iconName: IconNames.EDB_EFM, - source: 'efm', - }, - ], - }, - { - sectionName: 'Migration Tools', - links: [ - { - title: 'Migration Portal', - url: '/migration_portal/latest', - iconName: IconNames.EDB_MIGRATION_PORTAL, - source: 'migration_portal', - }, - { - title: 'Migration Toolkit', - url: '/migration_toolkit/latest', - iconName: IconNames.EDB_MIGRATION_TOOLKIT, - source: 'migration_toolkit', - }, - ], - }, - { - sectionName: 'Backup & Recovery Tools', - links: [ - { - title: 'Barman', - url: '/barman', - iconName: IconNames.BUSINESSMAN, - source: 'barman', - }, - { - title: 'pgBackRest', - url: '/pgbackrest', - iconName: IconNames.POSTGRES_SUPPORT, - source: 'pgbackrest', - }, - { - title: 'Backup & Recovery Tool', - url: '/bart/latest', - iconName: IconNames.EDB_BART, - source: 'bart', - }, - ], - }, - { - sectionName: 'Kubernetes', - links: [ - { - title: 'Cloud Native PostgreSQL Operator', - url: '/kubernetes', - iconName: IconNames.KUBERNETES, - source: 'k8s_docs', - }, - ], - }, - { - sectionName: 'Extensions', - links: [ - { - title: 'PostGIS', - url: '/postgis/latest', - iconName: IconNames.GLOBE, - source: 'postgis', - }, - ], - }, - { - sectionName: 'Working with PostgreSQL', - links: [ - { - title: 'Foreign Data Wrappers', - url: '/fdw', - iconName: IconNames.CHANGE, - }, - { - title: 'EDB Connectors', - url: '/connectors', - iconName: IconNames.CONNECT, - }, - { - title: 'PgBouncer', - url: '/pgbouncer/latest', - iconName: IconNames.POSTGRESQL, - source: 'pgbouncer', - }, - { - title: 'Pgpool-II', - url: '/pgpool/latest', - iconName: IconNames.POSTGRESQL, - source: 'pgpool', - }, - { - title: 'Third-party JDBC Drivers', - url: '/fdw', - iconName: IconNames.JAVA, - }, - ], - }, -]; - -export default () => { - const activeSources = useActiveSources(); - - return rawIndexNavigation.map(section => { - section.links = section.links.filter( - link => !link.source || activeSources[`${link.source}Active`], - ); - return section; - }); -}; diff --git a/src/pages/index.js b/src/pages/index.js index 36c7fc0618b..f14205cf0c8 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -49,14 +49,47 @@ const Page = () => ( {/* TODO connect an updated IndexNavagation file to this index page */} -

    enterprisedb.com/docs

    - {/*

    - Thanks for checking out our beta docs site. Feel free to open and - issue on our{' '} - - github repo - -

    */} + {/*

    enterprisedb.com/docs

    */} + + {/* Sign Post */} +
    +
    +
    +
    + +
    +
    +

    + Cloud Native PostgreSQL +

    + +

    + Cloud Native PostgreSQL is an operator designed by + EnterpriseDB to manage PostgreSQL workloads on any supported + Kubernetes cluster running in private, public, or hybrid cloud + environments. +

    +

    + + Read More → + +

    +
    +
    + Illustration of a Kubernetes Terminal Command +
    +
    +
    +
    {/* ( Barman + + + Single Server Streaming + + 10min Demo + + pgBackRest @@ -149,6 +195,9 @@ const Page = () => ( JDBC Connector + + MySQL Foreign Data Wrapper + .NET Connector diff --git a/src/styles/_docs.scss b/src/styles/_docs.scss index a9669b15373..c55ac5144e3 100644 --- a/src/styles/_docs.scss +++ b/src/styles/_docs.scss @@ -123,7 +123,11 @@ label.link-label { // Katacoda in panel display mode adds a fixed-position console with this height .katacoda-panel-active body { - margin-bottom: 40vh; + margin-bottom: max(40vh, 320px); +} + +#katacoda-panel-container { + min-height: 320px !important; } .katacoda-exec-button { @@ -152,8 +156,46 @@ html.katacoda-panel-active .katacoda-exec-button { } // Because it is fixed position, the Katacoda panel screws up printing big-time - .katacoda-panel-active { + .katacoda-panel-active { body { margin-bottom: unset; } .katacoda-panel { display: none; } } } + +// Index page + +.card-columns.full-width { + column-count: 12; + columns: 1; +} + +.card-editorial-cnpo img { + max-width: 250px; + height: auto; +} + +.nested-link { + &:before { + content: "∟"; + color: lightgrey; + position: relative; + top: -3px; + //font-size: 12px; + margin-right: 2px; + } + position: relative; + top: -.75rem; + margin-bottom: -.75rem; +} + +.new-thing { + color: $orange; + font-size: .65rem; + font-weight: 400; + border: 1px solid $orange; + padding: 0 2px; + border-radius: 5px; + margin-left: .3rem; + font-weight: normal; + display: inline-block; +} \ No newline at end of file diff --git a/src/templates/doc.js b/src/templates/doc.js index aaf6f604b7e..a4dae29c24a 100644 --- a/src/templates/doc.js +++ b/src/templates/doc.js @@ -210,6 +210,7 @@ const DocTemplate = ({ data, pageContext }) => { path={path} pagePath={pagePath} versionArray={versionArray} + iconName={frontmatter.iconName} /> diff --git a/src/templates/gh-doc.js b/src/templates/gh-doc.js deleted file mode 100644 index 1de53c53091..00000000000 --- a/src/templates/gh-doc.js +++ /dev/null @@ -1,108 +0,0 @@ -import React from 'react'; -import { Alert, Container, Row, Col } from 'react-bootstrap'; -import { graphql } from 'gatsby'; -import { MDXRenderer } from 'gatsby-plugin-mdx'; -import { rawIndexNavigation } from '../constants/index-navigation'; -import { - DevFrontmatter, - Footer, - Layout, - LeftNav, - MainContent, - SideNavigation, - TableOfContents, - TopBar, -} from '../components'; - -export const query = graphql` - query($nodeId: String!) { - mdx(id: { eq: $nodeId }) { - fields { - path - mtime - } - body - tableOfContents - } - } -`; - -const ContentRow = ({ children }) => ( -
    - {children} -
    -); - -const GhDocTemplate = ({ data, pageContext }) => { - const { mdx } = data; - const { - frontmatter, - pagePath, - githubFileLink, - githubFileHistoryLink, - isIndexPage, - navTree, - } = pageContext; - const pageMeta = { - title: frontmatter.title, - description: frontmatter.description, - path: mdx.fields.path, - isIndexPage: isIndexPage, - }; - - const showToc = !!mdx.tableOfContents.items; - - const iconName = ( - rawIndexNavigation - .map((al) => al.links) - .flat() - .find((link) => mdx.fields.path.includes(link.url)) || { iconName: null } - ).iconName; - - return ( - - - - - - - -
    -

    {frontmatter.title}

    -
    - - -

    - {githubFileLink && ( - - This documentation is sourced from GitHub. To view the - original file and context, - click here. - - )} - - {mdx.body} - - - {showToc && ( - - - - )} - - - - -
    - - - - ); -}; - -export default GhDocTemplate; diff --git a/src/templates/learn-doc.js b/src/templates/learn-doc.js index 62a5e9f2c36..b932c2f4e21 100644 --- a/src/templates/learn-doc.js +++ b/src/templates/learn-doc.js @@ -2,7 +2,6 @@ import React from 'react'; import { Container, Row, Col } from 'react-bootstrap'; import { graphql } from 'gatsby'; import { MDXRenderer } from 'gatsby-plugin-mdx'; -import { rawIndexNavigation } from '../constants/index-navigation'; import { CardDecks, DevFrontmatter, @@ -125,16 +124,6 @@ const LearnDocTemplate = ({ data, pageContext }) => { const showToc = !!mdx.tableOfContents.items; - // Determine side bar icon. This might need some future rework. - const finalIconName = ( - rawIndexNavigation - .map((al) => al.links) - .flat() - .find((link) => mdx.fields.path.includes(link.url)) || { - iconName: iconName, - } - ).iconName; - // CNO isn't editable // TODO unify docs/advo to share one smart component that knows what to show const editOrFeedbackButton = path.includes('/cloud_native_operator/') ? ( @@ -153,7 +142,7 @@ const LearnDocTemplate = ({ data, pageContext }) => { navLinks={navLinks} path={mdx.fields.path} pagePath={pagePath} - iconName={finalIconName} + iconName={iconName} /> diff --git a/static/edb-icons b/static/edb-icons new file mode 160000 index 00000000000..a2b8bbaaaee --- /dev/null +++ b/static/edb-icons @@ -0,0 +1 @@ +Subproject commit a2b8bbaaaee2b60ee11496ecc04d67aa5c753a28 diff --git a/static/edb-icons/.gitignore b/static/edb-icons/.gitignore deleted file mode 100644 index 4992926ba8b..00000000000 --- a/static/edb-icons/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules - -# misc -.DS_Store diff --git a/static/edb-icons/README.md b/static/edb-icons/README.md deleted file mode 100644 index e99a2932c36..00000000000 --- a/static/edb-icons/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## edb-icons - -Icon repository for EDB projects. \ No newline at end of file diff --git a/static/edb-icons/alert.svg b/static/edb-icons/alert.svg deleted file mode 100644 index 0cd951b273d..00000000000 --- a/static/edb-icons/alert.svg +++ /dev/null @@ -1,3 +0,0 @@ - -alert - \ No newline at end of file diff --git a/static/edb-icons/angularjs-color.svg b/static/edb-icons/angularjs-color.svg deleted file mode 100644 index 1621f3e58be..00000000000 --- a/static/edb-icons/angularjs-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/announce.svg b/static/edb-icons/announce.svg deleted file mode 100644 index 75f1a66f090..00000000000 --- a/static/edb-icons/announce.svg +++ /dev/null @@ -1,3 +0,0 @@ - -announce - \ No newline at end of file diff --git a/static/edb-icons/arrow-left.svg b/static/edb-icons/arrow-left.svg deleted file mode 100644 index 133d20c139d..00000000000 --- a/static/edb-icons/arrow-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - -arrow-left - \ No newline at end of file diff --git a/static/edb-icons/arrow-right.svg b/static/edb-icons/arrow-right.svg deleted file mode 100644 index ebce0dd2099..00000000000 --- a/static/edb-icons/arrow-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - -arrow-right - \ No newline at end of file diff --git a/static/edb-icons/big-data.svg b/static/edb-icons/big-data.svg deleted file mode 100644 index c5cdf1c3209..00000000000 --- a/static/edb-icons/big-data.svg +++ /dev/null @@ -1,3 +0,0 @@ - -big data - \ No newline at end of file diff --git a/static/edb-icons/brain-circuit.svg b/static/edb-icons/brain-circuit.svg deleted file mode 100644 index 95221dcafcb..00000000000 --- a/static/edb-icons/brain-circuit.svg +++ /dev/null @@ -1,3 +0,0 @@ - -brain-circuit - \ No newline at end of file diff --git a/static/edb-icons/briefcase.svg b/static/edb-icons/briefcase.svg deleted file mode 100644 index 12f823fb048..00000000000 --- a/static/edb-icons/briefcase.svg +++ /dev/null @@ -1,3 +0,0 @@ - -briefcase - \ No newline at end of file diff --git a/static/edb-icons/businessman.svg b/static/edb-icons/businessman.svg deleted file mode 100644 index 910debf18c7..00000000000 --- a/static/edb-icons/businessman.svg +++ /dev/null @@ -1,3 +0,0 @@ - -businessman - \ No newline at end of file diff --git a/static/edb-icons/businesswoman.svg b/static/edb-icons/businesswoman.svg deleted file mode 100644 index 4e35649f63c..00000000000 --- a/static/edb-icons/businesswoman.svg +++ /dev/null @@ -1,3 +0,0 @@ - -businesswoman - \ No newline at end of file diff --git a/static/edb-icons/c-color.svg b/static/edb-icons/c-color.svg deleted file mode 100644 index 122b24878cd..00000000000 --- a/static/edb-icons/c-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/c-plus-plus-color.svg b/static/edb-icons/c-plus-plus-color.svg deleted file mode 100644 index 086d5676862..00000000000 --- a/static/edb-icons/c-plus-plus-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/c-sharp-color.svg b/static/edb-icons/c-sharp-color.svg deleted file mode 100644 index 3f21e18bc47..00000000000 --- a/static/edb-icons/c-sharp-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/c-sharp.svg b/static/edb-icons/c-sharp.svg deleted file mode 100644 index 45932fbac09..00000000000 --- a/static/edb-icons/c-sharp.svg +++ /dev/null @@ -1,3 +0,0 @@ - -c-sharp - \ No newline at end of file diff --git a/static/edb-icons/case-study.svg b/static/edb-icons/case-study.svg deleted file mode 100644 index 3e65d7398b4..00000000000 --- a/static/edb-icons/case-study.svg +++ /dev/null @@ -1,3 +0,0 @@ - -case-study - \ No newline at end of file diff --git a/static/edb-icons/centos-color.svg b/static/edb-icons/centos-color.svg deleted file mode 100644 index fd0c8f2f1ae..00000000000 --- a/static/edb-icons/centos-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/certificate.svg b/static/edb-icons/certificate.svg deleted file mode 100644 index 039413b059a..00000000000 --- a/static/edb-icons/certificate.svg +++ /dev/null @@ -1,3 +0,0 @@ - -certificate - \ No newline at end of file diff --git a/static/edb-icons/change.svg b/static/edb-icons/change.svg deleted file mode 100644 index 9816cde652e..00000000000 --- a/static/edb-icons/change.svg +++ /dev/null @@ -1,3 +0,0 @@ - -change - \ No newline at end of file diff --git a/static/edb-icons/checkmark.svg b/static/edb-icons/checkmark.svg deleted file mode 100644 index 3db5a4672c3..00000000000 --- a/static/edb-icons/checkmark.svg +++ /dev/null @@ -1,3 +0,0 @@ - -checkmark - \ No newline at end of file diff --git a/static/edb-icons/chevron-down.svg b/static/edb-icons/chevron-down.svg deleted file mode 100644 index 19dd1b4286b..00000000000 --- a/static/edb-icons/chevron-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - -chevron-down - \ No newline at end of file diff --git a/static/edb-icons/chevron-right.svg b/static/edb-icons/chevron-right.svg deleted file mode 100644 index 66d585f63a2..00000000000 --- a/static/edb-icons/chevron-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - -chevron-right - \ No newline at end of file diff --git a/static/edb-icons/close.svg b/static/edb-icons/close.svg deleted file mode 100644 index a7cd8d29780..00000000000 --- a/static/edb-icons/close.svg +++ /dev/null @@ -1,3 +0,0 @@ - -close - \ No newline at end of file diff --git a/static/edb-icons/cloud-checked.svg b/static/edb-icons/cloud-checked.svg deleted file mode 100644 index a626cdfa528..00000000000 --- a/static/edb-icons/cloud-checked.svg +++ /dev/null @@ -1,2 +0,0 @@ - -cloud-checked diff --git a/static/edb-icons/cloud-db.svg b/static/edb-icons/cloud-db.svg deleted file mode 100644 index ad649bc057f..00000000000 --- a/static/edb-icons/cloud-db.svg +++ /dev/null @@ -1,3 +0,0 @@ - -cloud-db - \ No newline at end of file diff --git a/static/edb-icons/cloud-dba.svg b/static/edb-icons/cloud-dba.svg deleted file mode 100644 index cb133efef7e..00000000000 --- a/static/edb-icons/cloud-dba.svg +++ /dev/null @@ -1,3 +0,0 @@ - -cloud-dba - \ No newline at end of file diff --git a/static/edb-icons/cloud-private.svg b/static/edb-icons/cloud-private.svg deleted file mode 100644 index 260b7c0e672..00000000000 --- a/static/edb-icons/cloud-private.svg +++ /dev/null @@ -1,3 +0,0 @@ - -cloud-private - \ No newline at end of file diff --git a/static/edb-icons/cloud-public.svg b/static/edb-icons/cloud-public.svg deleted file mode 100644 index 7698e2e89d3..00000000000 --- a/static/edb-icons/cloud-public.svg +++ /dev/null @@ -1,3 +0,0 @@ - -cloud-public - \ No newline at end of file diff --git a/static/edb-icons/code-writing.svg b/static/edb-icons/code-writing.svg deleted file mode 100644 index 1092974b89c..00000000000 --- a/static/edb-icons/code-writing.svg +++ /dev/null @@ -1,3 +0,0 @@ - -code-writing - \ No newline at end of file diff --git a/static/edb-icons/config-management.svg b/static/edb-icons/config-management.svg deleted file mode 100644 index a90df4a75e3..00000000000 --- a/static/edb-icons/config-management.svg +++ /dev/null @@ -1,2 +0,0 @@ - -config-management diff --git a/static/edb-icons/conflict.svg b/static/edb-icons/conflict.svg deleted file mode 100644 index 844dd92e31c..00000000000 --- a/static/edb-icons/conflict.svg +++ /dev/null @@ -1,2 +0,0 @@ - -conflict diff --git a/static/edb-icons/connect.svg b/static/edb-icons/connect.svg deleted file mode 100644 index b82d3fb5567..00000000000 --- a/static/edb-icons/connect.svg +++ /dev/null @@ -1,3 +0,0 @@ - -connect - \ No newline at end of file diff --git a/static/edb-icons/console.svg b/static/edb-icons/console.svg deleted file mode 100644 index 14ee9a85234..00000000000 --- a/static/edb-icons/console.svg +++ /dev/null @@ -1,3 +0,0 @@ - -console - \ No newline at end of file diff --git a/static/edb-icons/contact.svg b/static/edb-icons/contact.svg deleted file mode 100644 index cc8549e1daa..00000000000 --- a/static/edb-icons/contact.svg +++ /dev/null @@ -1,3 +0,0 @@ - -contact - \ No newline at end of file diff --git a/static/edb-icons/container.svg b/static/edb-icons/container.svg deleted file mode 100644 index 5a91d1754f9..00000000000 --- a/static/edb-icons/container.svg +++ /dev/null @@ -1,3 +0,0 @@ - -container - \ No newline at end of file diff --git a/static/edb-icons/control.svg b/static/edb-icons/control.svg deleted file mode 100644 index cacfacdb0fb..00000000000 --- a/static/edb-icons/control.svg +++ /dev/null @@ -1,2 +0,0 @@ - -more-control diff --git a/static/edb-icons/convert.svg b/static/edb-icons/convert.svg deleted file mode 100644 index 847f35496c4..00000000000 --- a/static/edb-icons/convert.svg +++ /dev/null @@ -1,3 +0,0 @@ - -convert - \ No newline at end of file diff --git a/static/edb-icons/crown.svg b/static/edb-icons/crown.svg deleted file mode 100644 index f7aa4a7b35c..00000000000 --- a/static/edb-icons/crown.svg +++ /dev/null @@ -1,2 +0,0 @@ - -crown diff --git a/static/edb-icons/cubes.svg b/static/edb-icons/cubes.svg deleted file mode 100644 index 89b8143ac26..00000000000 --- a/static/edb-icons/cubes.svg +++ /dev/null @@ -1,3 +0,0 @@ - -cubes - \ No newline at end of file diff --git a/static/edb-icons/cycle.svg b/static/edb-icons/cycle.svg deleted file mode 100644 index fd2d365d483..00000000000 --- a/static/edb-icons/cycle.svg +++ /dev/null @@ -1,2 +0,0 @@ - -we-can-do-it-all diff --git a/static/edb-icons/data-transfer.svg b/static/edb-icons/data-transfer.svg deleted file mode 100644 index 538bdaa8c5f..00000000000 --- a/static/edb-icons/data-transfer.svg +++ /dev/null @@ -1,3 +0,0 @@ - -data-transfer - \ No newline at end of file diff --git a/static/edb-icons/database-admin.svg b/static/edb-icons/database-admin.svg deleted file mode 100644 index 6d764aabc76..00000000000 --- a/static/edb-icons/database-admin.svg +++ /dev/null @@ -1,3 +0,0 @@ - -database-admin - \ No newline at end of file diff --git a/static/edb-icons/database-backup.svg b/static/edb-icons/database-backup.svg deleted file mode 100644 index fd5156d332c..00000000000 --- a/static/edb-icons/database-backup.svg +++ /dev/null @@ -1,3 +0,0 @@ - -database-backup - \ No newline at end of file diff --git a/static/edb-icons/database.svg b/static/edb-icons/database.svg deleted file mode 100644 index 0ced9ff0335..00000000000 --- a/static/edb-icons/database.svg +++ /dev/null @@ -1,3 +0,0 @@ - -database - \ No newline at end of file diff --git a/static/edb-icons/debian-color.svg b/static/edb-icons/debian-color.svg deleted file mode 100644 index 182608f8f09..00000000000 --- a/static/edb-icons/debian-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/deliver-love.svg b/static/edb-icons/deliver-love.svg deleted file mode 100644 index be507c482b0..00000000000 --- a/static/edb-icons/deliver-love.svg +++ /dev/null @@ -1,3 +0,0 @@ - -deliver-love - \ No newline at end of file diff --git a/static/edb-icons/design.svg b/static/edb-icons/design.svg deleted file mode 100644 index c70f89be484..00000000000 --- a/static/edb-icons/design.svg +++ /dev/null @@ -1,3 +0,0 @@ - -design - \ No newline at end of file diff --git a/static/edb-icons/developer.svg b/static/edb-icons/developer.svg deleted file mode 100644 index 9027c30b5c0..00000000000 --- a/static/edb-icons/developer.svg +++ /dev/null @@ -1,3 +0,0 @@ - -developer - \ No newline at end of file diff --git a/static/edb-icons/diploma.svg b/static/edb-icons/diploma.svg deleted file mode 100644 index adea077f3b2..00000000000 --- a/static/edb-icons/diploma.svg +++ /dev/null @@ -1,3 +0,0 @@ - -diploma - \ No newline at end of file diff --git a/static/edb-icons/django-color.svg b/static/edb-icons/django-color.svg deleted file mode 100644 index 45e611c01ae..00000000000 --- a/static/edb-icons/django-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/docker-color.svg b/static/edb-icons/docker-color.svg deleted file mode 100644 index 781c810a880..00000000000 --- a/static/edb-icons/docker-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/docker-container.svg b/static/edb-icons/docker-container.svg deleted file mode 100644 index eef4f73f3b2..00000000000 --- a/static/edb-icons/docker-container.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/docs.svg b/static/edb-icons/docs.svg deleted file mode 100644 index 2dcd4b609a2..00000000000 --- a/static/edb-icons/docs.svg +++ /dev/null @@ -1,3 +0,0 @@ - -docs - \ No newline at end of file diff --git a/static/edb-icons/dot-net-color.svg b/static/edb-icons/dot-net-color.svg deleted file mode 100644 index 793266ea5e5..00000000000 --- a/static/edb-icons/dot-net-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/dotted-box.svg b/static/edb-icons/dotted-box.svg deleted file mode 100644 index 234ae827a09..00000000000 --- a/static/edb-icons/dotted-box.svg +++ /dev/null @@ -1,3 +0,0 @@ - -dotted-box - \ No newline at end of file diff --git a/static/edb-icons/download.svg b/static/edb-icons/download.svg deleted file mode 100644 index 1fa47669b78..00000000000 --- a/static/edb-icons/download.svg +++ /dev/null @@ -1,3 +0,0 @@ - -download - diff --git a/static/edb-icons/drives.svg b/static/edb-icons/drives.svg deleted file mode 100644 index 7285ef35bee..00000000000 --- a/static/edb-icons/drives.svg +++ /dev/null @@ -1,2 +0,0 @@ - -multi-primary-replication diff --git a/static/edb-icons/duplicate.svg b/static/edb-icons/duplicate.svg deleted file mode 100644 index 4a5de199d80..00000000000 --- a/static/edb-icons/duplicate.svg +++ /dev/null @@ -1,2 +0,0 @@ - -faster-log-replication diff --git a/static/edb-icons/earth.svg b/static/edb-icons/earth.svg deleted file mode 100644 index 23b82f9ede5..00000000000 --- a/static/edb-icons/earth.svg +++ /dev/null @@ -1,3 +0,0 @@ - -earth - \ No newline at end of file diff --git a/static/edb-icons/easy.svg b/static/edb-icons/easy.svg deleted file mode 100644 index bbfcb7fa9c6..00000000000 --- a/static/edb-icons/easy.svg +++ /dev/null @@ -1,3 +0,0 @@ - -easy - \ No newline at end of file diff --git a/static/edb-icons/edb-ark.svg b/static/edb-icons/edb-ark.svg deleted file mode 100644 index 46b7c1f1789..00000000000 --- a/static/edb-icons/edb-ark.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-ark - \ No newline at end of file diff --git a/static/edb-icons/edb-badge.svg b/static/edb-icons/edb-badge.svg deleted file mode 100644 index f773bb32b9c..00000000000 --- a/static/edb-icons/edb-badge.svg +++ /dev/null @@ -1,13 +0,0 @@ - - edb-badge - - - - - diff --git a/static/edb-icons/edb-bart.svg b/static/edb-icons/edb-bart.svg deleted file mode 100644 index bda107675f3..00000000000 --- a/static/edb-icons/edb-bart.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-bart - \ No newline at end of file diff --git a/static/edb-icons/edb-dashboard.svg b/static/edb-icons/edb-dashboard.svg deleted file mode 100644 index 59feb5f68cc..00000000000 --- a/static/edb-icons/edb-dashboard.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-dashboard - \ No newline at end of file diff --git a/static/edb-icons/edb-docs-logo-disc-dark.svg b/static/edb-icons/edb-docs-logo-disc-dark.svg deleted file mode 100644 index 75adbd7c055..00000000000 --- a/static/edb-icons/edb-docs-logo-disc-dark.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - edb-docs-logo-disc-dark - - - - diff --git a/static/edb-icons/edb-efm.svg b/static/edb-icons/edb-efm.svg deleted file mode 100644 index d3b1d8e27f8..00000000000 --- a/static/edb-icons/edb-efm.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-efm - \ No newline at end of file diff --git a/static/edb-icons/edb-epas.svg b/static/edb-icons/edb-epas.svg deleted file mode 100644 index f8d65da9f58..00000000000 --- a/static/edb-icons/edb-epas.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-epas - \ No newline at end of file diff --git a/static/edb-icons/edb-kubernetes.svg b/static/edb-icons/edb-kubernetes.svg deleted file mode 100644 index a59da1080d8..00000000000 --- a/static/edb-icons/edb-kubernetes.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-kubernetes - \ No newline at end of file diff --git a/static/edb-icons/edb-logo-disc-dark.svg b/static/edb-icons/edb-logo-disc-dark.svg deleted file mode 100644 index 8ecff27f97f..00000000000 --- a/static/edb-icons/edb-logo-disc-dark.svg +++ /dev/null @@ -1,18 +0,0 @@ - - edb-logo-disc-dark - - - - diff --git a/static/edb-icons/edb-logo-symbol-badge.svg b/static/edb-icons/edb-logo-symbol-badge.svg deleted file mode 100644 index 44834a2fc65..00000000000 --- a/static/edb-icons/edb-logo-symbol-badge.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - edb-logo-symbol-badge - - - - - - - - - \ No newline at end of file diff --git a/static/edb-icons/edb-migration-portal.svg b/static/edb-icons/edb-migration-portal.svg deleted file mode 100644 index eb49c677ad3..00000000000 --- a/static/edb-icons/edb-migration-portal.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-migration-portal - \ No newline at end of file diff --git a/static/edb-icons/edb-migration-toolkit.svg b/static/edb-icons/edb-migration-toolkit.svg deleted file mode 100644 index 7408707b8d0..00000000000 --- a/static/edb-icons/edb-migration-toolkit.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-migration-toolkit - \ No newline at end of file diff --git a/static/edb-icons/edb-pem.svg b/static/edb-icons/edb-pem.svg deleted file mode 100644 index 1d32c87ed2f..00000000000 --- a/static/edb-icons/edb-pem.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-pem - \ No newline at end of file diff --git a/static/edb-icons/edb-replication.svg b/static/edb-icons/edb-replication.svg deleted file mode 100644 index 5824117bc06..00000000000 --- a/static/edb-icons/edb-replication.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-replication - \ No newline at end of file diff --git a/static/edb-icons/edb-symbol.svg b/static/edb-icons/edb-symbol.svg deleted file mode 100644 index 499ad3c90bf..00000000000 --- a/static/edb-icons/edb-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - -edb-symbol - \ No newline at end of file diff --git a/static/edb-icons/ellipsis.svg b/static/edb-icons/ellipsis.svg deleted file mode 100644 index bdae271bc31..00000000000 --- a/static/edb-icons/ellipsis.svg +++ /dev/null @@ -1,4 +0,0 @@ - -ellipsis / page actions - - diff --git a/static/edb-icons/energy.svg b/static/edb-icons/energy.svg deleted file mode 100644 index 7826c0cac9c..00000000000 --- a/static/edb-icons/energy.svg +++ /dev/null @@ -1,3 +0,0 @@ - -energy - \ No newline at end of file diff --git a/static/edb-icons/enterprise.svg b/static/edb-icons/enterprise.svg deleted file mode 100644 index 512667ed402..00000000000 --- a/static/edb-icons/enterprise.svg +++ /dev/null @@ -1,3 +0,0 @@ - -enterprise - \ No newline at end of file diff --git a/static/edb-icons/export.svg b/static/edb-icons/export.svg deleted file mode 100644 index b191c6b5558..00000000000 --- a/static/edb-icons/export.svg +++ /dev/null @@ -1,3 +0,0 @@ - -export - \ No newline at end of file diff --git a/static/edb-icons/file.svg b/static/edb-icons/file.svg deleted file mode 100644 index ee4ebc5c1c6..00000000000 --- a/static/edb-icons/file.svg +++ /dev/null @@ -1,3 +0,0 @@ - -file - \ No newline at end of file diff --git a/static/edb-icons/globe.svg b/static/edb-icons/globe.svg deleted file mode 100644 index cf8db235d3b..00000000000 --- a/static/edb-icons/globe.svg +++ /dev/null @@ -1,3 +0,0 @@ - -globe - \ No newline at end of file diff --git a/static/edb-icons/golang-color.svg b/static/edb-icons/golang-color.svg deleted file mode 100644 index 5a844a8cbc3..00000000000 --- a/static/edb-icons/golang-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/gui.svg b/static/edb-icons/gui.svg deleted file mode 100644 index 4e65f6d0b14..00000000000 --- a/static/edb-icons/gui.svg +++ /dev/null @@ -1,2 +0,0 @@ - -gui diff --git a/static/edb-icons/hadoop.svg b/static/edb-icons/hadoop.svg deleted file mode 100644 index 47059e78afa..00000000000 --- a/static/edb-icons/hadoop.svg +++ /dev/null @@ -1,6 +0,0 @@ - - hadoop - - - - \ No newline at end of file diff --git a/static/edb-icons/hamburger.svg b/static/edb-icons/hamburger.svg deleted file mode 100644 index be8fd4e7efb..00000000000 --- a/static/edb-icons/hamburger.svg +++ /dev/null @@ -1,3 +0,0 @@ - -hamburger - \ No newline at end of file diff --git a/static/edb-icons/handshake.svg b/static/edb-icons/handshake.svg deleted file mode 100644 index ef969a3065e..00000000000 --- a/static/edb-icons/handshake.svg +++ /dev/null @@ -1,3 +0,0 @@ - -handshake - \ No newline at end of file diff --git a/static/edb-icons/hard-to-find.svg b/static/edb-icons/hard-to-find.svg deleted file mode 100644 index 81d8404f854..00000000000 --- a/static/edb-icons/hard-to-find.svg +++ /dev/null @@ -1,3 +0,0 @@ - -hard-to-find - \ No newline at end of file diff --git a/static/edb-icons/haskell-color.svg b/static/edb-icons/haskell-color.svg deleted file mode 100644 index ab8b782489e..00000000000 --- a/static/edb-icons/haskell-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/high-availability.svg b/static/edb-icons/high-availability.svg deleted file mode 100644 index 73d09e39715..00000000000 --- a/static/edb-icons/high-availability.svg +++ /dev/null @@ -1,3 +0,0 @@ - -high-availability - \ No newline at end of file diff --git a/static/edb-icons/html-color.svg b/static/edb-icons/html-color.svg deleted file mode 100644 index 4f2b78ebd55..00000000000 --- a/static/edb-icons/html-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/idea-sharing.svg b/static/edb-icons/idea-sharing.svg deleted file mode 100644 index 05a1aea51a6..00000000000 --- a/static/edb-icons/idea-sharing.svg +++ /dev/null @@ -1,3 +0,0 @@ - -idea-sharing - \ No newline at end of file diff --git a/static/edb-icons/improve.svg b/static/edb-icons/improve.svg deleted file mode 100644 index f2fa7d68643..00000000000 --- a/static/edb-icons/improve.svg +++ /dev/null @@ -1,3 +0,0 @@ - -improve - \ No newline at end of file diff --git a/static/edb-icons/install.svg b/static/edb-icons/install.svg deleted file mode 100644 index 0f40229a6ae..00000000000 --- a/static/edb-icons/install.svg +++ /dev/null @@ -1,3 +0,0 @@ - -install - \ No newline at end of file diff --git a/static/edb-icons/instances.svg b/static/edb-icons/instances.svg deleted file mode 100644 index 24e1736fb41..00000000000 --- a/static/edb-icons/instances.svg +++ /dev/null @@ -1,2 +0,0 @@ - -manage-database-instances diff --git a/static/edb-icons/ios-color.svg b/static/edb-icons/ios-color.svg deleted file mode 100644 index 0e9bfd9b490..00000000000 --- a/static/edb-icons/ios-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/java-color.svg b/static/edb-icons/java-color.svg deleted file mode 100644 index b14f33c73d9..00000000000 --- a/static/edb-icons/java-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/java.svg b/static/edb-icons/java.svg deleted file mode 100644 index 1a50a25f1b6..00000000000 --- a/static/edb-icons/java.svg +++ /dev/null @@ -1,3 +0,0 @@ - -java - \ No newline at end of file diff --git a/static/edb-icons/javascript-color.svg b/static/edb-icons/javascript-color.svg deleted file mode 100644 index 821526be16a..00000000000 --- a/static/edb-icons/javascript-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/jquery-color.svg b/static/edb-icons/jquery-color.svg deleted file mode 100644 index 621989a3421..00000000000 --- a/static/edb-icons/jquery-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/knight.svg b/static/edb-icons/knight.svg deleted file mode 100644 index 77881cff6aa..00000000000 --- a/static/edb-icons/knight.svg +++ /dev/null @@ -1,3 +0,0 @@ - -knight - \ No newline at end of file diff --git a/static/edb-icons/kotlin-color.svg b/static/edb-icons/kotlin-color.svg deleted file mode 100644 index cc1db0babb6..00000000000 --- a/static/edb-icons/kotlin-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/kubernetes.svg b/static/edb-icons/kubernetes.svg deleted file mode 100644 index a2f9ecc81f1..00000000000 --- a/static/edb-icons/kubernetes.svg +++ /dev/null @@ -1,3 +0,0 @@ - -kubernetes - \ No newline at end of file diff --git a/static/edb-icons/laptop-config.svg b/static/edb-icons/laptop-config.svg deleted file mode 100644 index c2e5e29bd2c..00000000000 --- a/static/edb-icons/laptop-config.svg +++ /dev/null @@ -1,3 +0,0 @@ - -laptop-config - \ No newline at end of file diff --git a/static/edb-icons/laravel.svg b/static/edb-icons/laravel.svg deleted file mode 100644 index 79c32e90dff..00000000000 --- a/static/edb-icons/laravel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/leader.svg b/static/edb-icons/leader.svg deleted file mode 100644 index 5dfe65154bc..00000000000 --- a/static/edb-icons/leader.svg +++ /dev/null @@ -1,2 +0,0 @@ - -designated-technical-leads diff --git a/static/edb-icons/learning.svg b/static/edb-icons/learning.svg deleted file mode 100644 index 1d987aea7e8..00000000000 --- a/static/edb-icons/learning.svg +++ /dev/null @@ -1,3 +0,0 @@ - -learning - \ No newline at end of file diff --git a/static/edb-icons/linkedin.svg b/static/edb-icons/linkedin.svg deleted file mode 100644 index 0770e0123d1..00000000000 --- a/static/edb-icons/linkedin.svg +++ /dev/null @@ -1,3 +0,0 @@ - -linkedin - \ No newline at end of file diff --git a/static/edb-icons/linux-color.svg b/static/edb-icons/linux-color.svg deleted file mode 100644 index 4c6a9f7d37b..00000000000 --- a/static/edb-icons/linux-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/macos-color.svg b/static/edb-icons/macos-color.svg deleted file mode 100644 index 32461b273cb..00000000000 --- a/static/edb-icons/macos-color.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - macos-color - - - - - - - - - - - \ No newline at end of file diff --git a/static/edb-icons/managed-operations.svg b/static/edb-icons/managed-operations.svg deleted file mode 100644 index ecd29867228..00000000000 --- a/static/edb-icons/managed-operations.svg +++ /dev/null @@ -1,2 +0,0 @@ - -managed-operations diff --git a/static/edb-icons/migrate.svg b/static/edb-icons/migrate.svg deleted file mode 100644 index 44bb3083946..00000000000 --- a/static/edb-icons/migrate.svg +++ /dev/null @@ -1,3 +0,0 @@ - -migrate - \ No newline at end of file diff --git a/static/edb-icons/mission.svg b/static/edb-icons/mission.svg deleted file mode 100644 index 9d73774e18f..00000000000 --- a/static/edb-icons/mission.svg +++ /dev/null @@ -1,3 +0,0 @@ - -mission - \ No newline at end of file diff --git a/static/edb-icons/module.svg b/static/edb-icons/module.svg deleted file mode 100644 index 12653256992..00000000000 --- a/static/edb-icons/module.svg +++ /dev/null @@ -1,3 +0,0 @@ - -module - \ No newline at end of file diff --git a/static/edb-icons/moon.svg b/static/edb-icons/moon.svg deleted file mode 100644 index 66dd5864672..00000000000 --- a/static/edb-icons/moon.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/static/edb-icons/more-team.svg b/static/edb-icons/more-team.svg deleted file mode 100644 index e7e1e5ad3ad..00000000000 --- a/static/edb-icons/more-team.svg +++ /dev/null @@ -1,3 +0,0 @@ - -more-team - \ No newline at end of file diff --git a/static/edb-icons/name-tag.svg b/static/edb-icons/name-tag.svg deleted file mode 100644 index 1057d1e3b2a..00000000000 --- a/static/edb-icons/name-tag.svg +++ /dev/null @@ -1,3 +0,0 @@ - -name-tag - \ No newline at end of file diff --git a/static/edb-icons/network.svg b/static/edb-icons/network.svg deleted file mode 100644 index c0a9c285afd..00000000000 --- a/static/edb-icons/network.svg +++ /dev/null @@ -1,3 +0,0 @@ - -network - \ No newline at end of file diff --git a/static/edb-icons/network2.svg b/static/edb-icons/network2.svg deleted file mode 100644 index ab02f4e91c9..00000000000 --- a/static/edb-icons/network2.svg +++ /dev/null @@ -1,3 +0,0 @@ - -network2 - \ No newline at end of file diff --git a/static/edb-icons/new-window.svg b/static/edb-icons/new-window.svg deleted file mode 100644 index 072a29d64e5..00000000000 --- a/static/edb-icons/new-window.svg +++ /dev/null @@ -1,3 +0,0 @@ - -new window - diff --git a/static/edb-icons/news.svg b/static/edb-icons/news.svg deleted file mode 100644 index b1d816baf4a..00000000000 --- a/static/edb-icons/news.svg +++ /dev/null @@ -1,3 +0,0 @@ - -news - \ No newline at end of file diff --git a/static/edb-icons/nodejs-color.svg b/static/edb-icons/nodejs-color.svg deleted file mode 100644 index ac30b512951..00000000000 --- a/static/edb-icons/nodejs-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/nodejs.svg b/static/edb-icons/nodejs.svg deleted file mode 100644 index a114cb07f85..00000000000 --- a/static/edb-icons/nodejs.svg +++ /dev/null @@ -1,3 +0,0 @@ - -nodejs - \ No newline at end of file diff --git a/static/edb-icons/not-found.svg b/static/edb-icons/not-found.svg deleted file mode 100644 index fcdbd30e03e..00000000000 --- a/static/edb-icons/not-found.svg +++ /dev/null @@ -1,4 +0,0 @@ - - 404 - - \ No newline at end of file diff --git a/static/edb-icons/options.svg b/static/edb-icons/options.svg deleted file mode 100644 index 0e219e852f3..00000000000 --- a/static/edb-icons/options.svg +++ /dev/null @@ -1,3 +0,0 @@ - -options - \ No newline at end of file diff --git a/static/edb-icons/pandas.svg b/static/edb-icons/pandas.svg deleted file mode 100644 index 2f517342e19..00000000000 --- a/static/edb-icons/pandas.svg +++ /dev/null @@ -1 +0,0 @@ -pandas icon \ No newline at end of file diff --git a/static/edb-icons/partner.svg b/static/edb-icons/partner.svg deleted file mode 100644 index 311c06a99cf..00000000000 --- a/static/edb-icons/partner.svg +++ /dev/null @@ -1,3 +0,0 @@ - -partner - \ No newline at end of file diff --git a/static/edb-icons/pdf.svg b/static/edb-icons/pdf.svg deleted file mode 100644 index 55353f054d4..00000000000 --- a/static/edb-icons/pdf.svg +++ /dev/null @@ -1,3 +0,0 @@ - -pdf - diff --git a/static/edb-icons/people.svg b/static/edb-icons/people.svg deleted file mode 100644 index 0faab01bd03..00000000000 --- a/static/edb-icons/people.svg +++ /dev/null @@ -1,3 +0,0 @@ - -people - \ No newline at end of file diff --git a/static/edb-icons/perl-color.svg b/static/edb-icons/perl-color.svg deleted file mode 100644 index 061d33ea4c3..00000000000 --- a/static/edb-icons/perl-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/php-color.svg b/static/edb-icons/php-color.svg deleted file mode 100644 index 78d018a16eb..00000000000 --- a/static/edb-icons/php-color.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - php-color - - - - - - - \ No newline at end of file diff --git a/static/edb-icons/php.svg b/static/edb-icons/php.svg deleted file mode 100644 index b34da4f9201..00000000000 --- a/static/edb-icons/php.svg +++ /dev/null @@ -1,3 +0,0 @@ - -php - \ No newline at end of file diff --git a/static/edb-icons/piggy-bank.svg b/static/edb-icons/piggy-bank.svg deleted file mode 100644 index ce990eed979..00000000000 --- a/static/edb-icons/piggy-bank.svg +++ /dev/null @@ -1,2 +0,0 @@ - -no-need-to-hire-dba diff --git a/static/edb-icons/planner.svg b/static/edb-icons/planner.svg deleted file mode 100644 index 2f1177f5586..00000000000 --- a/static/edb-icons/planner.svg +++ /dev/null @@ -1,2 +0,0 @@ - -planner diff --git a/static/edb-icons/postgres-support.svg b/static/edb-icons/postgres-support.svg deleted file mode 100644 index 1c9c2891b6c..00000000000 --- a/static/edb-icons/postgres-support.svg +++ /dev/null @@ -1,3 +0,0 @@ - -postgres-support - \ No newline at end of file diff --git a/static/edb-icons/postgresql.svg b/static/edb-icons/postgresql.svg deleted file mode 100644 index 65bf096de1e..00000000000 --- a/static/edb-icons/postgresql.svg +++ /dev/null @@ -1,3 +0,0 @@ - -postgresql - \ No newline at end of file diff --git a/static/edb-icons/presentation.svg b/static/edb-icons/presentation.svg deleted file mode 100644 index 385d255c09b..00000000000 --- a/static/edb-icons/presentation.svg +++ /dev/null @@ -1,3 +0,0 @@ - -presentation - \ No newline at end of file diff --git a/static/edb-icons/process-improvement.svg b/static/edb-icons/process-improvement.svg deleted file mode 100644 index 879b101d776..00000000000 --- a/static/edb-icons/process-improvement.svg +++ /dev/null @@ -1,3 +0,0 @@ - -process-improvement - \ No newline at end of file diff --git a/static/edb-icons/pulse.svg b/static/edb-icons/pulse.svg deleted file mode 100644 index 9c40fd54c34..00000000000 --- a/static/edb-icons/pulse.svg +++ /dev/null @@ -1,3 +0,0 @@ - -pulse - \ No newline at end of file diff --git a/static/edb-icons/python-color.svg b/static/edb-icons/python-color.svg deleted file mode 100644 index 0b24a84269b..00000000000 --- a/static/edb-icons/python-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/python.svg b/static/edb-icons/python.svg deleted file mode 100644 index 89d800058f8..00000000000 --- a/static/edb-icons/python.svg +++ /dev/null @@ -1,3 +0,0 @@ - -python - \ No newline at end of file diff --git a/static/edb-icons/quote-left.svg b/static/edb-icons/quote-left.svg deleted file mode 100644 index 92f529a433d..00000000000 --- a/static/edb-icons/quote-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - -quote-left - \ No newline at end of file diff --git a/static/edb-icons/quote-right.svg b/static/edb-icons/quote-right.svg deleted file mode 100644 index 64e2e459788..00000000000 --- a/static/edb-icons/quote-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - -quote-right - \ No newline at end of file diff --git a/static/edb-icons/react-native-color.svg b/static/edb-icons/react-native-color.svg deleted file mode 100644 index 5d12f40c140..00000000000 --- a/static/edb-icons/react-native-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/redhat-color.svg b/static/edb-icons/redhat-color.svg deleted file mode 100644 index c6e496b1e68..00000000000 --- a/static/edb-icons/redhat-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/redhat.svg b/static/edb-icons/redhat.svg deleted file mode 100644 index 51fe5b26be2..00000000000 --- a/static/edb-icons/redhat.svg +++ /dev/null @@ -1,4 +0,0 @@ - - redhat - - \ No newline at end of file diff --git a/static/edb-icons/remote-dba.svg b/static/edb-icons/remote-dba.svg deleted file mode 100644 index 4b3088345ea..00000000000 --- a/static/edb-icons/remote-dba.svg +++ /dev/null @@ -1,3 +0,0 @@ - -remote-dba - \ No newline at end of file diff --git a/static/edb-icons/replication.svg b/static/edb-icons/replication.svg deleted file mode 100644 index 0f2a5986bcd..00000000000 --- a/static/edb-icons/replication.svg +++ /dev/null @@ -1,2 +0,0 @@ - -single-primary-replication diff --git a/static/edb-icons/rocket.svg b/static/edb-icons/rocket.svg deleted file mode 100644 index ee0dc18e258..00000000000 --- a/static/edb-icons/rocket.svg +++ /dev/null @@ -1,3 +0,0 @@ - -rocket - \ No newline at end of file diff --git a/static/edb-icons/ruby-color.svg b/static/edb-icons/ruby-color.svg deleted file mode 100644 index e0cb5dbc5f8..00000000000 --- a/static/edb-icons/ruby-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/ruby.svg b/static/edb-icons/ruby.svg deleted file mode 100644 index 7989835bf45..00000000000 --- a/static/edb-icons/ruby.svg +++ /dev/null @@ -1,3 +0,0 @@ - -ruby - \ No newline at end of file diff --git a/static/edb-icons/search.svg b/static/edb-icons/search.svg deleted file mode 100644 index e9fc20de9c6..00000000000 --- a/static/edb-icons/search.svg +++ /dev/null @@ -1,3 +0,0 @@ - -search - \ No newline at end of file diff --git a/static/edb-icons/security-config.svg b/static/edb-icons/security-config.svg deleted file mode 100644 index a4ff6593952..00000000000 --- a/static/edb-icons/security-config.svg +++ /dev/null @@ -1,3 +0,0 @@ - -security-config - \ No newline at end of file diff --git a/static/edb-icons/server-error.svg b/static/edb-icons/server-error.svg deleted file mode 100644 index c00d98fbf26..00000000000 --- a/static/edb-icons/server-error.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - 500 - - - - - \ No newline at end of file diff --git a/static/edb-icons/speed.svg b/static/edb-icons/speed.svg deleted file mode 100644 index cf56eb8d8b6..00000000000 --- a/static/edb-icons/speed.svg +++ /dev/null @@ -1,3 +0,0 @@ - -speed - \ No newline at end of file diff --git a/static/edb-icons/sql.svg b/static/edb-icons/sql.svg deleted file mode 100644 index 51cad3f6e21..00000000000 --- a/static/edb-icons/sql.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/stack.svg b/static/edb-icons/stack.svg deleted file mode 100644 index 9e8abedff22..00000000000 --- a/static/edb-icons/stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - -stack - \ No newline at end of file diff --git a/static/edb-icons/star.svg b/static/edb-icons/star.svg deleted file mode 100644 index 0f0724a31da..00000000000 --- a/static/edb-icons/star.svg +++ /dev/null @@ -1,3 +0,0 @@ - -star - \ No newline at end of file diff --git a/static/edb-icons/store.svg b/static/edb-icons/store.svg deleted file mode 100644 index 816bc5ad2bb..00000000000 --- a/static/edb-icons/store.svg +++ /dev/null @@ -1,3 +0,0 @@ - -store - \ No newline at end of file diff --git a/static/edb-icons/subset.svg b/static/edb-icons/subset.svg deleted file mode 100644 index f1ddfbb193f..00000000000 --- a/static/edb-icons/subset.svg +++ /dev/null @@ -1,2 +0,0 @@ - -replication-of-a-subset-of-data diff --git a/static/edb-icons/sun.svg b/static/edb-icons/sun.svg deleted file mode 100644 index a48279b0c3e..00000000000 --- a/static/edb-icons/sun.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/static/edb-icons/support-portal.svg b/static/edb-icons/support-portal.svg deleted file mode 100644 index f72f9d09f0a..00000000000 --- a/static/edb-icons/support-portal.svg +++ /dev/null @@ -1,4 +0,0 @@ - - support-portal - - \ No newline at end of file diff --git a/static/edb-icons/support.svg b/static/edb-icons/support.svg deleted file mode 100644 index d78439a8d40..00000000000 --- a/static/edb-icons/support.svg +++ /dev/null @@ -1,3 +0,0 @@ - -support - \ No newline at end of file diff --git a/static/edb-icons/suse-color.svg b/static/edb-icons/suse-color.svg deleted file mode 100644 index 373ae961d20..00000000000 --- a/static/edb-icons/suse-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/swift-color.svg b/static/edb-icons/swift-color.svg deleted file mode 100644 index 02f5a514d82..00000000000 --- a/static/edb-icons/swift-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/ten-years.svg b/static/edb-icons/ten-years.svg deleted file mode 100644 index d7530e0deb8..00000000000 --- a/static/edb-icons/ten-years.svg +++ /dev/null @@ -1,3 +0,0 @@ - -ten-years - \ No newline at end of file diff --git a/static/edb-icons/ticket.svg b/static/edb-icons/ticket.svg deleted file mode 100644 index dbc5fd1255d..00000000000 --- a/static/edb-icons/ticket.svg +++ /dev/null @@ -1,3 +0,0 @@ - -ticket - \ No newline at end of file diff --git a/static/edb-icons/tools.svg b/static/edb-icons/tools.svg deleted file mode 100644 index 3fb024de8df..00000000000 --- a/static/edb-icons/tools.svg +++ /dev/null @@ -1,3 +0,0 @@ - -tools - \ No newline at end of file diff --git a/static/edb-icons/treehouse.svg b/static/edb-icons/treehouse.svg deleted file mode 100644 index 68f776de349..00000000000 --- a/static/edb-icons/treehouse.svg +++ /dev/null @@ -1,3 +0,0 @@ - -treehouse - \ No newline at end of file diff --git a/static/edb-icons/tutorial.svg b/static/edb-icons/tutorial.svg deleted file mode 100644 index 82cb0544a7b..00000000000 --- a/static/edb-icons/tutorial.svg +++ /dev/null @@ -1,3 +0,0 @@ - -tutorial - \ No newline at end of file diff --git a/static/edb-icons/typescript-color.svg b/static/edb-icons/typescript-color.svg deleted file mode 100644 index 986d5b95f72..00000000000 --- a/static/edb-icons/typescript-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/ubuntu-color.svg b/static/edb-icons/ubuntu-color.svg deleted file mode 100644 index 1914a116444..00000000000 --- a/static/edb-icons/ubuntu-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/unlock.svg b/static/edb-icons/unlock.svg deleted file mode 100644 index b3fd6470850..00000000000 --- a/static/edb-icons/unlock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/venn.svg b/static/edb-icons/venn.svg deleted file mode 100644 index 17c065c192e..00000000000 --- a/static/edb-icons/venn.svg +++ /dev/null @@ -1,3 +0,0 @@ - -venn - \ No newline at end of file diff --git a/static/edb-icons/vue-js-color.svg b/static/edb-icons/vue-js-color.svg deleted file mode 100644 index e88c7aad7e5..00000000000 --- a/static/edb-icons/vue-js-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/edb-icons/web-security.svg b/static/edb-icons/web-security.svg deleted file mode 100644 index b5334fb4698..00000000000 --- a/static/edb-icons/web-security.svg +++ /dev/null @@ -1,3 +0,0 @@ - -web-security - \ No newline at end of file diff --git a/static/edb-icons/webinar.svg b/static/edb-icons/webinar.svg deleted file mode 100644 index 3d2c2030a40..00000000000 --- a/static/edb-icons/webinar.svg +++ /dev/null @@ -1,3 +0,0 @@ - -webinar - \ No newline at end of file diff --git a/static/edb-icons/windows-color.svg b/static/edb-icons/windows-color.svg deleted file mode 100644 index ac6ad85a3a8..00000000000 --- a/static/edb-icons/windows-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/images/cli@2x.png b/static/images/cli@2x.png new file mode 100644 index 00000000000..3267da6385d --- /dev/null +++ b/static/images/cli@2x.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69c497de192b6b5d0d60233a90cccb11af084cf05fc1076d70e5129ae56bd577 +size 64219 diff --git a/static/edb-icons/edb-docs-logo-disc-dark-beta.svg b/static/images/edb-docs-logo-disc-dark-beta.svg similarity index 99% rename from static/edb-icons/edb-docs-logo-disc-dark-beta.svg rename to static/images/edb-docs-logo-disc-dark-beta.svg index 2122af3adbc..2e3ba874a6a 100644 --- a/static/edb-icons/edb-docs-logo-disc-dark-beta.svg +++ b/static/images/edb-docs-logo-disc-dark-beta.svg @@ -21,4 +21,4 @@ - \ No newline at end of file + diff --git a/temp_pgbackrest/README.md b/temp_pgbackrest/README.md deleted file mode 100644 index 9abb6b66ecc..00000000000 --- a/temp_pgbackrest/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# pgBackRest - -* [Docs](docs/README.md) diff --git a/temp_pgbackrest/docs/00-README.md b/temp_pgbackrest/docs/00-README.md deleted file mode 120000 index 42061c01a1c..00000000000 --- a/temp_pgbackrest/docs/00-README.md +++ /dev/null @@ -1 +0,0 @@ -README.md \ No newline at end of file diff --git a/temp_pgbackrest/docs/01-introduction.md b/temp_pgbackrest/docs/01-introduction.md deleted file mode 100644 index 0e0b9a94f97..00000000000 --- a/temp_pgbackrest/docs/01-introduction.md +++ /dev/null @@ -1,9 +0,0 @@ -## Introduction - -_pgBackRest_ is an easy-to-use backup and restore tool that aims to enable your organization to implement disaster recovery solutions for _Postgres_ databases. Taking an online hot backup of _Postgres_ and restoring it is now as easy as it could be! - -_pgBackRest_ [v2.32](https://github.com/pgbackrest/pgbackrest/releases/tag/release/2.32) is the current stable release. Release notes are on the [Releases](http://www.pgbackrest.org/release.html) page. - -EDB collaborates with the community on this open-source software. The packages provided in EDB repositories are technically equivalent to the packages provided by the **PostgreSQL** community. All of the use cases shown in this document are fully tested and supported by **EDB Postgres Advanced Server**. - -For more information about _pgBackRest_, including reference and usage information, please visit the [project site](http://www.pgbackrest.org). diff --git a/temp_pgbackrest/docs/02-installation.md b/temp_pgbackrest/docs/02-installation.md deleted file mode 100644 index 6803261a71a..00000000000 --- a/temp_pgbackrest/docs/02-installation.md +++ /dev/null @@ -1,54 +0,0 @@ -## Installation - -### Available platforms - -_pgBackRest_ packages are available on the following platforms. - -#### Debian/Ubuntu - -To install _pgBackRest_, configure the [PostgreSQL](https://www.postgresql.org/download/linux/ubuntu/) or the [EDB](https://www.enterprisedb.com/repository-access-thank-you-page) **apt** repository and then run: - -```bash -$ sudo apt-get install pgbackrest -``` - -The following additional packages will be installed: - -* `postgresql-client-common` -* `postgresql-common` - -#### RHEL/CentOS - -_pgBackRest_ can be installed from the [PostgreSQL](https://yum.postgresql.org/) or the [EDB](https://www.enterprisedb.com/repository-access-thank-you-page) **yum** repositories, and requires Extra Packages for Enterprise Linux ([EPEL](https://fedoraproject.org/wiki/EPEL)). - -Once you configured the repositories, run the following command to install _pgBackRest_: - -```bash -$ sudo yum install pgbackrest -``` - -The following additional packages will be installed: - -* `postgresql-libs` -* `libzstd` - -### EDB Postgres Advanced Server - -The PGDG packages will fetch **PostgreSQL** libraries and create the `postgres` system user. - -If **EDB Postgres Advanced Server** is already installed on the system, the libraries installed at that time would be used. - -By default, the packages create the following directories owned by `postgres`: -* `/var/lib/pgbackrest` -* `/var/log/pgbackrest` -* `/var/spool/pgbackrest` - -The `pg_hba.conf` settings should allow the `postgres` user to execute the `pgbackrest` command. - -If you are using **EDB Postgres Advanced Server**, the `enterprisedb` system user will execute the `pgbackrest` command. The following commands will change the ownership of the _pgBackRest_ directories: - -```bash -$ sudo chown -R enterprisedb: /var/lib/pgbackrest -$ sudo chown -R enterprisedb: /var/log/pgbackrest -$ sudo chown -R enterprisedb: /var/spool/pgbackrest -``` diff --git a/temp_pgbackrest/docs/03-quick_start.md b/temp_pgbackrest/docs/03-quick_start.md deleted file mode 100644 index 03e7780d9c3..00000000000 --- a/temp_pgbackrest/docs/03-quick_start.md +++ /dev/null @@ -1,178 +0,0 @@ -## Quick Start - -This section walks you through basic _pgBackRest_ configuration process and how to take a first backup of the database cluster running locally. It also gives a brief introduction of the `backup`, `restore`, and `info` commands. - -The [installation](02-installation.md) procedure must be followed before proceeding to this section. - -### Configuration - -The default _pgBackRest_ configuration file location is `/etc/pgbackrest/pgbackrest.conf`. If it does not exist, then `/etc/pgbackrest.conf` is used next. - -For more information about configuration parameters, see the [appendix section](97-appendix.md#configuration-reference). - -The following example configures a `demo` stanza to take a backup of a database cluster running on the local host. - -For **EDB Postgres Advanced Server**: - -```ini -[global] -repo1-path=/var/lib/edb/as13/backups - -[demo] -pg1-path=/var/lib/edb/as13/data -pg1-user=enterprisedb -pg1-port=5444 -``` - -For **PostgreSQL**: - -```ini -[global] -repo1-path=/var/lib/pgsql/13/backups - -[demo] -pg1-path=/var/lib/pgsql/13/data -pg1-user=postgres -pg1-port=5432 -``` - -Once _pgBackRest_ is configured, set up the database archiver process: - -```ini -# postgresql.conf -archive_mode = on -archive_command = 'pgbackrest --stanza=demo archive-push %p' -``` - -As changing the `archive_mode` parameter requires a service restart, and changing the `archive_command` only requires a configuration reload, EDB recommends enabling `archive_mode` with an empty `archive_command` (or pointing to /bin/true) when initiating a new database cluster. - -Assume the identity of a system user (`postgres` or `enterprisedb`) and initiate the _pgBackRest_ repository: - -```bash -$ pgbackrest --stanza=demo --log-level-console=info stanza-create -``` - -Check the configuration and the archiving process: - -```bash -$ pgbackrest --stanza=demo --log-level-console=info check -``` - -### Backups - -When invoking _pgBackRest_, you can specify any one of the backup type: - -* Full backup - `full` - * Copies all database cluster files. - * No dependencies on previous backups. - -For example: - -```bash -$ pgbackrest --stanza=demo --type=full backup -``` - -* Incremental backup - `incr` - * Copies only the database cluster files that have changed since the last backup. - * Depends on other backups to restore the incremental backup. - -For example: - -```bash -$ pgbackrest --stanza=demo --type=incr backup -``` - -* Differential backup `diff` - * Copies only the database cluster files that have changed since the last full backup. - * Similar to an incremental backup, but always depends on the last full backup. - -For example: - -```bash -$ pgbackrest --stanza=demo --type=diff backup -``` - -If there is no full backup to base an incremental or differential backup on, _pgBackRest_ will run in full backup mode instead. - -### Backup Information - -Use the `info` command to get information about backups. - -```bash -$ pgbackrest --stanza=demo info -stanza: demo - status: ok - cipher: none - - db (current) - wal archive min/max (13-1): 000000010000000000000001/000000010000000000000007 - - full backup: 20201019-162148F - timestamp start/stop: 2020-10-19 16:21:48 / 2020-10-19 16:21:58 - wal start/stop: 000000010000000000000003 / 000000010000000000000003 - database size: 23.9MB, backup size: 23.9MB - repository size: 2.9MB, repository backup size: 2.9MB -... -``` - -By default, the `info` command provides a human-readable summary of backups for the stanza requested. Without specifying `--stanza`, the `info` command will operate on all stanzas. - -### Restore - -Use the `restore` command to restore a backup. The `--delta` option allows to keep the existing database cluster files and only recover as required, where as without the `--delta` option all files will be restored. Before running the restore command, stop the database cluster and (unless the `--delta` option is used) remove all files from the data directory, and from tablespaces. - -```bash -$ pgbackrest --stanza=demo restore -``` - -Currently, the only way to verify the consistency of a backup is to restore it. We then recommend to try restore backups on a regular basis. - -#### Recovery target - -By default, the `restore` command will restore the latest backup and apply all of the archived WAL files found in the repository. - -To choose the recovery target type for the restore, include the `--type` command-line option with one of the following keywords: - -* `default` - recover to the end of the archive stream. -* `immediate` - recovery only until the database becomes consistent. -* `name` - recover to the restore point. -* `xid` - recover to the transaction ID. -* `time` - recover to a specific timestamp. -* `preserve` - preserve the existing recovery settings. -* `standby` - add `standby_mode=on` or `standby.signal`. -* `none` - no recovery settings provided. - -When `--type` is set to **name**, transaction ID (**xid**), or **time**, use the `--target` option to specify a restore point. - -_pgBackRest_ will automatically select the correct backup set to restore if a recovery target time is specified. Otherwise, the latest backup set will be used. To restore a specific backup set, use the `--set` option. - -To change the `recovery_target_action` _Postgres_ setting, use the restore `--target-action` option: - -* `pause` - pause when recovery target is reached (default). -* `promote` - promote and switch timeline when recovery target is reached. -* `shutdown` - shutdown server when recovery target is reached. - -### Glossary - -#### pgBackRest - -[`delta`](https://pgbackrest.org/configuration.html#section-general/option-delta) -[`log-level-console`](https://pgbackrest.org/configuration.html#section-log/option-log-level-console) -[`pg-path`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-path) -[`pg-port`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-port) -[`pg-user`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-user) -[`repo-path`](https://pgbackrest.org/configuration.html#section-repository/option-repo-path) - -##### `restore` command - -[restore `--set`](https://pgbackrest.org/command.html#command-restore/category-command/option-set) -[restore `--target`](https://pgbackrest.org/command.html#command-restore/category-command/option-target) -[restore `--target-action`](https://pgbackrest.org/command.html#command-restore/category-command/option-target-action) -[restore `--type`](https://pgbackrest.org/command.html#command-restore/category-command/option-type) - -#### PostgreSQL - -[`archive_command`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-ARCHIVE-COMMAND) -[`archive_mode`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-ARCHIVE-MODE) -[`recovery_target_action`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-RECOVERY-TARGET-ACTION) -[`standby_mode`](https://www.postgresql.org/docs/11/standby-settings.html#STANDBY-MODE) diff --git a/temp_pgbackrest/docs/04-recommended_settings.md b/temp_pgbackrest/docs/04-recommended_settings.md deleted file mode 100644 index a1868fe5445..00000000000 --- a/temp_pgbackrest/docs/04-recommended_settings.md +++ /dev/null @@ -1,74 +0,0 @@ -## Recommended Settings - -This section walks you through the recommended settings while using _pgBackRest_. - -### Encryption - -Use the following settings to encrypt the files in the repository `repo1`: - -```ini -repo1-cipher-pass=FIXME -repo1-cipher-type=aes-256-cbc -``` - -The `cipher-pass` should be **base64** encoded. For example, to generate a random passphrase use the following setting: - -```bash -$ openssl rand -base64 48 -``` - -### Maximum Number of Processes - -Use the following setting to set the maximum number of processes for compression usage and file transfer: - -```ini -process-max=FIXME -``` - -Each process will perform compression and transfer to make the command run faster, but do not set `process-max` so high that it impacts server load and performance. - -### Backup Fast Start - -Use the `start-fast=y` setting to force a checkpoint to start the backup quickly. This is achieved inside _pgBackRest_ by passing **true** to the fast parameter of the **pg_start_backup()** database function. The backup will then begin immediately rather than waiting for the next regular checkpoint triggered by the database server itself. - -### Delta - -Use the `delta=y` setting to restore or backup using checksums. - -During a restore, the data and tablespaces directories are expected to be present, but empty. This option performs a delta restore using checksums. - -During a backup, this option will use checksums instead of timestamps to determine if files will be copied. - -### Log Levels - -The output of each command will be printed in the console and a log file. - -Use the following `log-level-console` and `log-level-file` settings to apply the log level: - -- **off**; -- **error**; -- **warn**; -- **info**; -- **detail**; -- **debug**; -- **trace**. - -**CAUTION:** Trace-level logging may expose secrets such as keys and passwords. - -To add more output in the log file in case the executed command encounters an error and to avoid re-executing the command for more information, use the following settings: - -```ini -log-level-console=info -log-level-file=debug -``` - -### Glossary - -#### pgBackRest - -[`delta`](https://pgbackrest.org/configuration.html#section-general/option-delta) -[`log-level-console`](https://pgbackrest.org/configuration.html#section-log/option-log-level-console) -[`log-level-file`](https://pgbackrest.org/configuration.html#section-log/option-log-level-file) -[`process-max`](https://pgbackrest.org/configuration.html#section-general/option-process-max) -[`repo-cipher-pass`](https://pgbackrest.org/configuration.html#section-repository/option-repo-cipher-pass) -[`repo-cipher-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-cipher-type) diff --git a/temp_pgbackrest/docs/05-retention_policy.md b/temp_pgbackrest/docs/05-retention_policy.md deleted file mode 100644 index e02b4630598..00000000000 --- a/temp_pgbackrest/docs/05-retention_policy.md +++ /dev/null @@ -1,69 +0,0 @@ -## Retention Policy - -Setting retention policy options allows to remove obsolete backups. Those settings will then be a trade-off between saving space and data retention. - -### Full backup retention - -Full backup retention is determined by the `repo1-retention-full-type` and `repo1-retention-full` options. - -The `repo1-retention-full-type` option can be set to `count` (default) to retain a specific number of full backups. As an example, if `repo1-retention-full-type=count` and `repo-retention-full=2`, _pgBackRest_ will retain the 2 last successful full backups. - -Alternatively the `repo1-retention-full-type` option can be set to `time` to retain full backups for a specific time duration. With this configuration, at least one full backup older than the retention period will remain to fulfill the retention requirement. All other full backups older than the `repo1-retention-full` value, measured in days, will be removed from the repository. As an example, if `repo1-retention-full-type=time` and `repo-retention-full=30` (days), one full backup older than 30 days will be preserved. If in this example the repository would hold five full backups - one 25 days old, one 35 days old, and the rest older - the 35-days-old full backup would still be required to restore to the period between 30 and 25 days ago, and as such is kept even though it is older than the configured retention period. All other older backups will be removed during retention maintenance. - -When a full backup expires, all differential and incremental backups associated with it will also expire. When the `repo1-retention-full` option is not defined, a warning will be issued. - -Archived WAL files that are older than the remaining oldest full backup will be automatically removed, but this behavior can be changed with the archive retention settings (`repo1-retention-archive-type` and `repo1-retention-archive`). - -Set the `repo1-retention-full` option to its maximum value (9999999) to retain all backups indefinitely. - -### Differential backup retention - -Differential backup retention is determined by the `repo1-retention-diff` option. - -When a differential backup expires, all incremental backups associated with the differential backup will also expire. - -When not defined, all differential backups will be retained until the dependent full backups expires. - -### Archive retention - -_pgBackRest_ allows to define a specific retention policy for archives. - -> :warning: _pgBackRest_ relies on backup start time to define the archives to clean. In some cases, the oldest archived WAL file in the repository might be older than the first backup WAL start location, in which case it will not be removed until the first backup expires. - -#### `repo1-retention-archive-type` - -The `repo1-retention-archive-type` option can be set to define the backup types counted for WAL retention. - -If the `repo1-retention-archive-type` option is set to `full` (default), _pgBackRest_ will keep archived WAL files for the number of full backups as defined by `repo1-retention-archive`. - -If the `repo1-retention-archive-type` option is set to `diff` (differential), _pgBackRest_ will keep archives for the number of full and differential backups defined by `repo1-retention-archive`. As an example, if the last backup taken was a full backup, it will be counted as a differential for the purpose of the repository retention. - -If the `repo1-retention-archive-type` option is set to `incr` (incremental), _pgBackRest_ will keep archives for the number of full, differential, and incremental backups defined by `repo1-retention-archive`. - -> :warning: It is recommended to keep the `repo1-retention-archive-type` option with its default, in which case archives will be removed along with full backups. - -#### `repo1-retention-archive` - -The `repo1-retention-archive` option can be set to define the number of backups preserved for continuous WAL retention. - -> :warning: WAL segments required to make a backup consistent (based on the full and differential backups retention policies) are always retained until the backup expires regardless of how the `repo1-retention-archive` option is configured. - -The `repo1-retention-archive` is highly dependent on other options: - -- If `repo1-retention-full-type` is set to `time`, then the `repo1-retention-archive` value will default to removing archived WAL files that are older than the oldest full backup retained after satisfying the `repo1-retention-full` setting. - -- When `repo1-retention-archive-type` is set to `incr`, the `repo1-retention-archive` must be set. - -- If the `repo1-retention-archive` value is not set, and `repo1-retention-full-type` is set to **count** (default), then the `repo1-retention-archive-type` value defines how archives will expire: when `repo1-retention-archive-type` is set to `full` or `diff`, archives expiry will default to the `repo1-retention-full` or `repo1-retention-diff` respectively. This configuration will ensure that the archived WAL files are only removed for corresponding expired backups. - -Using the `repo1-retention-archive` setting in conjunction with `repo1-retention-archive-type` can reclaim disk-space by removing extra WAL segments. This configuration is **not recommended** as it negates the ability to perform point-in-time recovery from the backups with expired WAL. - -### Glossary - -#### pgBackRest - -[`repo-retention-archive-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-retention-archive-type) -[`repo-retention-archive`](https://pgbackrest.org/configuration.html#section-repository/option-repo-retention-archive) -[`repo-retention-diff`](https://pgbackrest.org/configuration.html#section-repository/option-repo-retention-diff) -[`repo-retention-full-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-retention-full-type) -[`repo-retention-full`](https://pgbackrest.org/configuration.html#section-repository/option-repo-retention-full) diff --git a/temp_pgbackrest/docs/06-use_case_1.md b/temp_pgbackrest/docs/06-use_case_1.md deleted file mode 100644 index ebbb31bac32..00000000000 --- a/temp_pgbackrest/docs/06-use_case_1.md +++ /dev/null @@ -1,202 +0,0 @@ -## Use Case 1: Running pgBackRest Locally on the Database Host - -### Description - -* _pgBackRest_ runs locally on database servers and stores repository on remote storage (NFS, S3, or Azure object stores). -* Cron task active on the node where to take backups. -* Manually reconfigure cron task to take backup from another server. - -![Use case diagram](images/use_case_1-01.png) - ---- - -### Configuration - -#### Global Section - -The `[global]` section will contain the: -* repository location; -* recommended settings; -* retention policy. - -This section's settings should be the same for all the nodes (primary and standbys). - -##### Mount Points - -Set `repo1-type` to **posix** or **cifs** and specify the `repo1-path` location to store backups and archives on a shared space: - -```ini -repo1-type=posix -repo1-path=/backup_space -``` - -##### S3-compatible Object Stores - -```ini -repo1-type=s3 -repo1-path=/repo1 -repo1-s3-bucket=bucket-name -repo1-s3-endpoint=... -repo1-s3-key=accessKey1 -repo1-s3-key-secret=*** -repo1-s3-region=... -``` - -The backups and archives will be stored in `bucket-name/repo1`. - -It is possible to automatically retrieve temporary credentials when the AWS instance is associated with an IAM role. Credentials are automatically updated when they are <= 5 minutes from expiring. - -To do this, instead of setting `repo1-s3-key` and `repo1-s3-key-secret`, use: - -```ini -repo1-s3-key-type=auto -repo1-s3-role=authrole -``` - -##### Azure-compatible Object Stores - -```ini -repo1-type=azure -repo1-azure-key-type=shared -repo1-path=/repo1 -repo1-azure-container=container-name -repo1-azure-account=pgbackrest -repo1-azure-key=*** -``` - -To use the shared access signatures, set the `repo1-azure-key-type` option to **sas** and the `repo1-azure-key` option to the shared access signature token. - -##### Recommended Settings - -Use those settings to enable encryption, parallel operations and ensure displaying enough information in the console and in the log file: - -```ini -repo1-cipher-type=aes-256-cbc -repo1-cipher-pass=FIXME -process-max=FIXME -log-level-console=info -log-level-file=debug -start-fast=y -delta=y -``` - -Adjust the encryption passphrase and the maximum number of processes to use for compression usage and file transfer. - -See the [Recommended settings](04-recommended_settings.md) page for more details. - -##### Retention Policy - -To be able to delete old backups and archives, you have to define a retention policy. Use the following setting to only keep the latest full backup: - -```ini -repo1-retention-full=1 -``` - -See the [Retention policy](05-retention_policy.md) page for more options and details. - -#### Stanza Section - -The `[demo]` stanza section will be different on each database server and should contain: - -* the location of the **PostgreSQL** configuration files - -```ini -pg1-path=/var/lib/pgsql/13/data -``` - -or for **EDB Postgres Advanced Server** - -```ini -pg1-path=/var/lib/edb/as13/data -pg1-user=enterprisedb -pg1-port=5444 -``` - -* for every other **PostgreSQL** node - -```ini -pg2-host=other_node_hostname_or_ip -pg2-path=/var/lib/pgsql/13/data -``` - -or for **EDB Postgres Advanced Server** - -```ini -pg2-host=other_node_hostname_or_ip -pg2-host-user=enterprisedb -pg2-path=/var/lib/edb/as13/data -``` - -* specific recovery option to set the replication `primary_conninfo` after the restore command is executed: - -```ini -recovery-option=primary_conninfo=host=primary_vip user=replication_user ... -``` - -#### Setup Archiving - -Once _pgBackRest_ is configured, set up the database archiver process on each node: - -```ini -# postgresql.conf -archive_mode = on -archive_command = 'pgbackrest --stanza=demo archive-push %p' -``` - -As changing the `archive_mode` requires a service restart and changing the `archive_command` requires only a configuration reload, we recommend enabling `archive_mode` with an empty `archive_command` (or pointing to `/bin/true`) when initiating a new database cluster. - -See the [Quick start](03-quick_start.md) page to set up a simple **demo** stanza configuration. - -Assume the identity of the system user (`postgres` or `enterprisedb`) and initiate the _pgBackRest_ repository from the primary server: - -```bash -$ pgbackrest --stanza=demo stanza-create -``` - -Check the configuration and the archiving process: - -```bash -$ pgbackrest --stanza=demo check -``` - -### Backup and Restore - -See the **Quick start** [backups](03-quick_start.md#backups) and [restore](03-quick_start.md#restore) sections for more details about those two commands. - -### Glossary - -#### pgBackRest - -[`delta`](https://pgbackrest.org/configuration.html#section-general/option-delta) -[`log-level-console`](https://pgbackrest.org/configuration.html#section-log/option-log-level-console) -[`log-level-file`](https://pgbackrest.org/configuration.html#section-log/option-log-level-file) -[`pg-host-user`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-host-user) -[`pg-host`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-host) -[`pg-path`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-path) -[`pg-port`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-port) -[`pg-user`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-user) -[`process-max`](https://pgbackrest.org/configuration.html#section-general/option-process-max) -[`recovery-option`](https://pgbackrest.org/configuration.html#section-restore/option-recovery-option) -[`repo-azure-account`](https://pgbackrest.org/configuration.html#section-repository/option-repo-azure-account) -[`repo-azure-container`](https://pgbackrest.org/configuration.html#section-repository/option-repo-azure-container) -[`repo-azure-key-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-azure-key-type) -[`repo-azure-key`](https://pgbackrest.org/configuration.html#section-repository/option-repo-azure-key) -[`repo-cipher-pass`](https://pgbackrest.org/configuration.html#section-repository/option-repo-cipher-pass) -[`repo-cipher-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-cipher-type) -[`repo-path`](https://pgbackrest.org/configuration.html#section-repository/option-repo-path) -[`repo-retention-full`](https://pgbackrest.org/configuration.html#section-repository/option-repo-retention-full) -[`repo-s3-bucket`](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-bucket) -[`repo-s3-endpoint`](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-endpoint) -[`repo-s3-key-secret`](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-key-secret) -[`repo-s3-key-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-key-type) -[`repo-s3-key`](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-key) -[`repo-s3-region`](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-region) -[`repo-s3-role`](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-role) -[`repo-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-type) -[`start-fast`](https://pgbackrest.org/configuration.html#section-backup/option-start-fast) - -#### PostgreSQL - -[`archive_command`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-ARCHIVE-COMMAND) -[`archive_mode`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-ARCHIVE-MODE) -[`primary_conninfo`](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-PRIMARY-CONNINFO) diff --git a/temp_pgbackrest/docs/07-use_case_2.md b/temp_pgbackrest/docs/07-use_case_2.md deleted file mode 100644 index eff37c59818..00000000000 --- a/temp_pgbackrest/docs/07-use_case_2.md +++ /dev/null @@ -1,181 +0,0 @@ -## Use Case 2: Running pgBackRest from a Dedicated Repository Host - -### Description - -* _pgBackRest_ runs on a dedicated backup server and stores repository on local or remote storage (NFS, S3, or Azure object stores). -* Cron task active to take backups from the primary database cluster. -* Manually reconfigure cron task to take backup from another server. - -![Use case diagram](images/use_case_2-01.png) - -### Create a Dedicated User on the Repository Host - -The `pgbackrest` user is created to own the backups and archives repository. Any user can own the repository, but it is recommended not to use `postgres` or `enterprisedb` to avoid confusion. - -```bash -$ sudo groupadd pgbackrest -$ sudo adduser -g pgbackrest -n pgbackrest -$ sudo chown pgbackrest: /var/log/pgbackrest -``` - -### Setup Passwordless SSH Connection - -_pgBackRest_ requires a passwordless SSH connection to enable communication between the hosts. - -The following example SSH commands should succeed without prompting you for a password: - -```bash -# From the PostgreSQL nodes -$ sudo -u postgres ssh pgbackrest@backup-server - -# From the EDB Postgres Advanced Server nodes -$ sudo -u enterprisedb ssh pgbackrest@backup-server - -# From the repository host -$ sudo -u pgbackrest ssh postgres@postgres-node-1 -$ sudo -u pgbackrest ssh postgres@postgres-node-2 -$ ... -``` - -### Configuration - -#### Backup Server - -The repository should be reachable from the backup server. It can be located on the various supported types described in the [first use case](06-use_case_1.md#global-section). - -For example, let us create `/backup_space` to store our backups and archives locally: - -```bash -$ sudo mkdir /backup_space -$ sudo chown pgbackrest: /backup_space -``` - -The `[global]` section of the configuration file will look like this: - -```ini -[global] -repo1-path=/backup_space -repo1-retention-full=2 -repo1-cipher-type=aes-256-cbc -repo1-cipher-pass=FIXME -process-max=FIXME -log-level-console=info -log-level-file=debug -start-fast=y -delta=y -``` - -Adjust the encryption passphrase and the maximum number of processes to use for compression usage and file transfer. - -See the [Recommended settings](04-recommended_settings.md) and the [Retention policy](05-retention_policy.md) pages for more details. - -The `[demo]` stanza section will contain specific `pg-` options for each database node. - -* the primary database server configuration for **PostgreSQL** - -```ini -pg1-host=postgres-node-1 -pg1-path=/var/lib/pgsql/13/data -``` - -or for **EDB Postgres Advanced Server** - -```ini -pg1-host=postgres-node-1 -pg1-host-user=enterprisedb -pg1-path=/var/lib/edb/as13/data -``` - -* for every other **PostgreSQL** node - -```ini -pg2-host=other_node_hostname_or_ip -pg2-path=/var/lib/pgsql/13/data -``` - -or for **EDB Postgres Advanced Server** - -```ini -pg2-host=other_node_hostname_or_ip -pg2-host-user=enterprisedb -pg2-path=/var/lib/edb/as13/data -``` - -Define multiple nodes using `pg2`, `pg3`,... to reach standby servers only when those servers are available. - -#### Database server(s) - -Update the _pgBackRest_ configuration file on the database server(s): - -```ini -# pgbackrest.conf -[global] -repo1-host=backup-server -repo1-host-user=pgbackrest -log-level-console=info -log-level-file=debug -delta=y - -[demo] -pg1-path=/var/lib/pgsql/13/data -recovery-option=primary_conninfo=host=primary_vip user=replication_user ... -``` - -The `[demo]` stanza section will be different for **PostgreSQL** or for **EDB Postgres Advanced Server**, and the `recovery-option` is used to set the replication `primary_conninfo` after executing the restore command. For more details, please refer to the [Use case 1](06-use_case_1.md#stanza-section) page for more details. - -#### Setup Archiving - -Once _pgBackRest_ is configured, set up the database archiver process on each node: - -```ini -# postgresql.conf -archive_mode = on -archive_command = 'pgbackrest --stanza=demo archive-push %p' -``` - -As changing the `archive_mode` parameter requires a service restart, and changing the `archive_command` requires only a configuration reload, we recommend enabling `archive_mode` with an empty `archive_command` (or pointing to `/bin/true`) when initiating a new database cluster. - -From the backup server (also called repository host), initiate the _pgBackRest_ repository with the system user we created earlier: - -```bash -$ sudo -u pgbackrest pgbackrest --stanza=demo stanza-create -``` - -Check the configuration and the archiving process: - -```bash -$ sudo -u pgbackrest pgbackrest --stanza=demo check -``` - -### Backup and Restore - -See the **Quick Start** [Backups](03-quick_start.md#backups) and [Restore](03-quick_start.md#restore) pages for more details about those two commands. - -The `backup` command will be executed on the repository host (aka. _backup-server_), while the `restore` command should be executed on database nodes (aka. _postgres-node-1_,...). - -### Glossary - -#### pgBackRest - -[`delta`](https://pgbackrest.org/configuration.html#section-general/option-delta) -[`log-level-console`](https://pgbackrest.org/configuration.html#section-log/option-log-level-console) -[`log-level-file`](https://pgbackrest.org/configuration.html#section-log/option-log-level-file) -[`pg-host`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-host) -[`pg-path`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-path) -[`pg-port`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-port) -[`pg-user`](https://pgbackrest.org/configuration.html#section-stanza/option-pg-user) -[`process-max`](https://pgbackrest.org/configuration.html#section-general/option-process-max) -[`recovery-option`](https://pgbackrest.org/configuration.html#section-restore/option-recovery-option) -[`repo-cipher-pass`](https://pgbackrest.org/configuration.html#section-repository/option-repo-cipher-pass) -[`repo-cipher-type`](https://pgbackrest.org/configuration.html#section-repository/option-repo-cipher-type) -[`repo-host`](https://pgbackrest.org/configuration.html#section-repository/option-repo-host) -[`repo-host-user`](https://pgbackrest.org/configuration.html#section-repository/option-repo-host-user) -[`repo-path`](https://pgbackrest.org/configuration.html#section-repository/option-repo-path) -[`repo-retention-full`](https://pgbackrest.org/configuration.html#section-repository/option-repo-retention-full) -[`start-fast`](https://pgbackrest.org/configuration.html#section-backup/option-start-fast) - -#### PostgreSQL - -[`archive_command`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-ARCHIVE-COMMAND) -[`archive_mode`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-ARCHIVE-MODE) -[`primary_conninfo`](https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-PRIMARY-CONNINFO) diff --git a/temp_pgbackrest/docs/98-appendix.md b/temp_pgbackrest/docs/98-appendix.md deleted file mode 100644 index 1f66cc6362b..00000000000 --- a/temp_pgbackrest/docs/98-appendix.md +++ /dev/null @@ -1,96 +0,0 @@ -## Appendix - -### Concepts - -The following concepts are defined as they are relevant to _pgBackRest_, _Postgres_, and this user guide. - -#### Backup - -A backup is a consistent copy of a database cluster that can be restored to recover from a hardware failure, perform point-in-time recovery, or to bring up a new standby. - -**Full Backup**: _pgBackRest_ copies the entire content of the database cluster to the backup. The first backup of the database cluster is always a full backup. _pgBackRest_ restores a full backup directly. The full backup does not depend on any files outside of the full backup for consistency. - -**Differential Backup**: _pgBackRest_ copies only the database cluster files that have changed since the last full backup. To restore a differential backup, _pgBackRest_ copies all of the files in the chosen differential backup and the appropriate unchanged files from the previous full backup. The advantage of a differential backup is that it requires less disk space than a full backup, however, the differential backup and the full backup must be valid to restore the differential backup. - -**Incremental Backup**: _pgBackRest_ copies only the database cluster files that have changed since the last backup (which can be an incremental backup, a differential backup, or a full backup). Since an incremental backup only includes the files changed since the prior backup, they are generally much smaller than a full or differential backup. An incremental backup requires other backups to be valid before restoring the incremental backup. Since the incremental backup includes only those files that have been changed or added since the last backup, all prior incremental backups (back to the prior differential and the prior full backup) must be valid to restore the incremental backup. If no differential backup exists, then all prior incremental backups (back to the prior full backup and the full backup itself) must be valid to restore the incremental backup. - -#### Restore - -A restore is an act of copying a backup to a system where it will be started as a live database cluster. A restore requires the backup files and one or more WAL segments in order to work correctly. - -#### Write Ahead Log (WAL) - -WAL logging is the mechanism that _Postgres_ uses to ensure that no committed changes are lost. Transactions are written sequentially to the WAL and a transaction is considered to be committed when those writes are flushed to disk. Later, a background process writer writes the changes into the main database cluster files (also known as the heap). In the event of a crash, the WAL is replayed to make the database consistent. - -WAL is conceptually infinite but in practice is broken up into individual 16MB files called segments. WAL segments follow the naming convention 0000000100000A1E000000FE where the first eight hexadecimal digits represent the timeline and the next 16 digits are the log sequence number (LSN). - -#### Encryption - -Encryption is the process of converting data into a format that is unrecognizable unless you provide the appropriate password (also referred to as passphrase). To prevent unauthorized access to data stored within the repository, _pgBackRest_ will encrypt the repository after authentication with a user-provided password. - ---- - -### Configuration Reference - -You can find a complete list of commands and configuration keys in the project documentation: - -- [Command reference](http://www.pgbackrest.org/command.html) for command-line operations. - -- [Configuration reference](http://www.pgbackrest.org/configuration.html) for creating _pgBackRest_ configurations. - -You can use _pgBackRest_ entirely with command-line parameters, but a configuration file is more practical for complex installations when configuring multiple options instantly. The default location for the configuration file is `/etc/pgbackrest/pgbackrest.conf`. If the configuration file does not exist in that location, then the old `/etc/pgbackrest.conf` file will be loaded instead (if it exists). - -It is also recommended to use a configuration file in order to avoid specifying secrets in command-line options. - -#### Global - -Use the global section of the configuration file to set the default values. The stanza-level configuration settings overrides any global configuration setting. - -The global section also allows you to define values that will be used when invoking specific commands. For example, the following configuration setting would specify the compress level for the `archive-push` command: - -``` -[global:archive-push] -compress-level=3 -``` - -#### Stanza - -A **stanza** is a database cluster configuration that defines where the database cluster is located, how to take a backup of the database cluster, available archiving options, etc. Most database servers will only have one database cluster and, therefore, one stanza; whereas backup servers will have a stanza for each database cluster that needs to be backed up. - -Because the stanza name will be used for the primary and all replicas, it is recommended to choose a name that describes the cluster's databases and actual function, such as app or dw, rather than the local instance name, such as main or prod. - -The stanza level settings overrides any global configuration settings. - -#### Command Line Arguments and Environment Variables - -You can also configure options as command line argument or environment variables. - -- To use a non-boolean argument on the command line, simply prefix the option with a double dash. - -- To set a boolean option to false on the command line, use the `--no-` prefix. - -- To set an environment variable, capitalize the option name, prefix it with *PGBACKREST_*, and replace dashes with underscores. - -The following table illustrates how to specify an option using the `pgbackrest.conf` file, command line argument, and environment variable. - -| Configuration File | Command Line Argument | Environment Variable | -|---------------------------|-----------------------|-------------------------------| -| `pg1-host=1.2.3.4` | `--pg1-host=1.2.3.4` | `PGBACKREST_PG1_HOST=1.2.3.4` | -| `compress=y` | `--compress` | `PGBACKREST_COMPRESS=y` | -| `delta=n` | `--no-delta` | `PGBACKREST_DELTA=n` | - -#### Options Precedence - -For all options, the order of precedence (highest to lowest) is as follows: - -- Command line argument -- Environment variable -- `[stanza:command]` -- `[stanza]` -- `[global:command]` -- `[global]` -- Default (internal) - -#### Configuring Multiple Database Hosts in a Stanza - -Each stanza could configure multiple database hosts. As such, you can also configure every `pg1-*` configuration option for host 2 with `pg2-*`, for host 3 with `pg3-*`, etc. This assumes that those database clusters are linked together (e.g. using [Streaming Replication](https://www.postgresql.org/docs/current/warm-standby.html#STREAMING-REPLICATION)). diff --git a/temp_pgbackrest/docs/99-faq.md b/temp_pgbackrest/docs/99-faq.md deleted file mode 100644 index 4268cebc7a1..00000000000 --- a/temp_pgbackrest/docs/99-faq.md +++ /dev/null @@ -1,13 +0,0 @@ -## Frequently Asked Questions - -- Why do we have to specify the `--stanza` option even if only one stanza is defined in the configuration file? - -Except for the repository specific commands (`info`, `start`, `stop`), the `--stanza` option is required so that adding a stanza does not cause the commands that did not have a stanza specified to suddenly throw errors because they do not know which stanza to use. - ---- - -- Is it possible to only restore a specific database from a complete database cluster backup? - -Yes. You can restore a specific database using the [restore `--db-include`](https://pgbackrest.org/command.html#command-restore/category-command/option-db-include) option. After recovery, you can then extract the selected databases with the [`pg_dump`](https://www.postgresql.org/docs/current/app-pgdump.html) command. - -The databases that are not explicitly included with this option will be restored as sparse, zeroed files to save space; however, it still allows _Postgres_ to perform the recovery using less disk space. You can then remove these databases with the [`DROP DATABASE`](https://www.postgresql.org/docs/current/sql-dropdatabase.html) command since they will no longer be accessible. diff --git a/temp_pgbackrest/docs/README.md b/temp_pgbackrest/docs/README.md deleted file mode 100644 index 40852b3eb15..00000000000 --- a/temp_pgbackrest/docs/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# pgBackRest
    Reliable PostgreSQL Backup & Restore Tool - -## Index - -* [Introduction](01-introduction.md) -* [Installation](02-installation.md) -* [Quick Start](03-quick_start.md) -* [Recommended Settings](04-recommended_settings.md) -* [Retention Policy](05-retention_policy.md) -* [Use Case 1](06-use_case_1.md) -* [Use Case 2](07-use_case_2.md) -* [Appendix](97-appendix.md) -* [FAQ](98-faq.md) diff --git a/temp_pgbackrest/docs/images/use_case_1-01.png b/temp_pgbackrest/docs/images/use_case_1-01.png deleted file mode 100644 index 122750a2343..00000000000 --- a/temp_pgbackrest/docs/images/use_case_1-01.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:40bfe3ea7a29d01e4ed7987b58da8a9befc0d698e2cf1f712b8489d5fc488eed -size 38426 diff --git a/temp_pgbackrest/docs/images/use_case_2-01.png b/temp_pgbackrest/docs/images/use_case_2-01.png deleted file mode 100644 index 03143dde21b..00000000000 --- a/temp_pgbackrest/docs/images/use_case_2-01.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5324b599035e1d620719479160cc6bf66cb8f1dc53dd19e87b4025ea4961ce84 -size 47421