Commit 3231c944 authored by Dustin Collins's avatar Dustin Collins Committed by Achilleas Pipinellis

Update documentation for the PostgreSQL 9.6 and 10 removals

parent b8a955f5
...@@ -82,7 +82,7 @@ GitLab is a Ruby on Rails application that runs on the following software: ...@@ -82,7 +82,7 @@ GitLab is a Ruby on Rails application that runs on the following software:
- Ruby (MRI) 2.6.5 - Ruby (MRI) 2.6.5
- Git 2.8.4+ - Git 2.8.4+
- Redis 2.8+ - Redis 2.8+
- PostgreSQL 9.6+ - PostgreSQL 11+
For more information please see the [architecture](https://docs.gitlab.com/ee/development/architecture.html) and [requirements](https://docs.gitlab.com/ee/install/requirements.html) documentation. For more information please see the [architecture](https://docs.gitlab.com/ee/development/architecture.html) and [requirements](https://docs.gitlab.com/ee/install/requirements.html) documentation.
......
...@@ -26,9 +26,9 @@ sent to the primary (unless necessary), the primary (`db3`) hardly has any load. ...@@ -26,9 +26,9 @@ sent to the primary (unless necessary), the primary (`db3`) hardly has any load.
## Requirements ## Requirements
For load balancing to work you will need at least PostgreSQL 9.2 or newer, For load balancing to work you will need at least PostgreSQL 11 or newer,
[**MySQL is not supported**](../install/requirements.md#database). You also need to make sure that you have [**MySQL is not supported**](../install/requirements.md#database). You also need to make sure that you have
at least 1 secondary in [hot standby](https://www.postgresql.org/docs/9.6/hot-standby.html) mode. at least 1 secondary in [hot standby](https://www.postgresql.org/docs/11/hot-standby.html) mode.
Load balancing also requires that the configured hosts **always** point to the Load balancing also requires that the configured hosts **always** point to the
primary, even after a database failover. Furthermore, the additional hosts to primary, even after a database failover. Furthermore, the additional hosts to
......
...@@ -33,9 +33,9 @@ recover. See below for more details. ...@@ -33,9 +33,9 @@ recover. See below for more details.
The following guide assumes that: The following guide assumes that:
- You are using Omnibus and therefore you are using PostgreSQL 9.6 or later - You are using Omnibus and therefore you are using PostgreSQL 11 or later
which includes the [`pg_basebackup` tool](https://www.postgresql.org/docs/9.6/app-pgbasebackup.html) and improved which includes the [`pg_basebackup` tool](https://www.postgresql.org/docs/11/app-pgbasebackup.html) and improved
[Foreign Data Wrapper](https://www.postgresql.org/docs/9.6/postgres-fdw.html) support. [Foreign Data Wrapper](https://www.postgresql.org/docs/11/postgres-fdw.html) support.
- You have a **primary** node already set up (the GitLab server you are - You have a **primary** node already set up (the GitLab server you are
replicating from), running Omnibus' PostgreSQL (or equivalent version), and replicating from), running Omnibus' PostgreSQL (or equivalent version), and
you have a new **secondary** server set up with the same versions of the OS, you have a new **secondary** server set up with the same versions of the OS,
...@@ -160,7 +160,7 @@ There is an [issue where support is being discussed](https://gitlab.com/gitlab-o ...@@ -160,7 +160,7 @@ There is an [issue where support is being discussed](https://gitlab.com/gitlab-o
`postgresql['md5_auth_cidr_addresses']` and `postgresql['listen_address']`. `postgresql['md5_auth_cidr_addresses']` and `postgresql['listen_address']`.
The `listen_address` option opens PostgreSQL up to network connections with the interface The `listen_address` option opens PostgreSQL up to network connections with the interface
corresponding to the given address. See [the PostgreSQL documentation](https://www.postgresql.org/docs/9.6/runtime-config-connection.html) corresponding to the given address. See [the PostgreSQL documentation](https://www.postgresql.org/docs/11/runtime-config-connection.html)
for more details. for more details.
Depending on your network configuration, the suggested addresses may not Depending on your network configuration, the suggested addresses may not
...@@ -213,7 +213,7 @@ There is an [issue where support is being discussed](https://gitlab.com/gitlab-o ...@@ -213,7 +213,7 @@ There is an [issue where support is being discussed](https://gitlab.com/gitlab-o
``` ```
You may also want to edit the `wal_keep_segments` and `max_wal_senders` to match your You may also want to edit the `wal_keep_segments` and `max_wal_senders` to match your
database replication requirements. Consult the [PostgreSQL - Replication documentation](https://www.postgresql.org/docs/9.6/runtime-config-replication.html) database replication requirements. Consult the [PostgreSQL - Replication documentation](https://www.postgresql.org/docs/11/runtime-config-replication.html)
for more information. for more information.
1. Save the file and reconfigure GitLab for the database listen changes and 1. Save the file and reconfigure GitLab for the database listen changes and
...@@ -442,7 +442,7 @@ data before running `pg_basebackup`. ...@@ -442,7 +442,7 @@ data before running `pg_basebackup`.
(e.g., you know the network path is secure, or you are using a site-to-site (e.g., you know the network path is secure, or you are using a site-to-site
VPN). This is **not** safe over the public Internet! VPN). This is **not** safe over the public Internet!
- You can read more details about each `sslmode` in the - You can read more details about each `sslmode` in the
[PostgreSQL documentation](https://www.postgresql.org/docs/9.6/libpq-ssl.html#LIBPQ-SSL-PROTECTION); [PostgreSQL documentation](https://www.postgresql.org/docs/11/libpq-ssl.html#LIBPQ-SSL-PROTECTION);
the instructions above are carefully written to ensure protection against the instructions above are carefully written to ensure protection against
both passive eavesdroppers and active "man-in-the-middle" attackers. both passive eavesdroppers and active "man-in-the-middle" attackers.
- Change the `--slot-name` to the name of the replication slot - Change the `--slot-name` to the name of the replication slot
...@@ -464,7 +464,7 @@ high-availability configuration with a cluster of nodes supporting a Geo ...@@ -464,7 +464,7 @@ high-availability configuration with a cluster of nodes supporting a Geo
information, see [High Availability with Omnibus GitLab](../../high_availability/database.md#high-availability-with-omnibus-gitlab-premium-only). information, see [High Availability with Omnibus GitLab](../../high_availability/database.md#high-availability-with-omnibus-gitlab-premium-only).
For a Geo **secondary** node to work properly with PgBouncer in front of the database, For a Geo **secondary** node to work properly with PgBouncer in front of the database,
it will need a separate read-only user to make [PostgreSQL FDW queries](https://www.postgresql.org/docs/9.6/postgres-fdw.html) it will need a separate read-only user to make [PostgreSQL FDW queries](https://www.postgresql.org/docs/11/postgres-fdw.html)
work: work:
1. On the **primary** Geo database, enter the PostgreSQL on the console as an 1. On the **primary** Geo database, enter the PostgreSQL on the console as an
......
...@@ -157,7 +157,7 @@ when `roles ['geo_secondary_role']` is set. For high availability, ...@@ -157,7 +157,7 @@ when `roles ['geo_secondary_role']` is set. For high availability,
refer to [Geo High Availability](../../reference_architectures/index.md). refer to [Geo High Availability](../../reference_architectures/index.md).
If you want to run this database external to Omnibus, please follow the instructions below. If you want to run this database external to Omnibus, please follow the instructions below.
The tracking database requires an [FDW](https://www.postgresql.org/docs/9.6/postgres-fdw.html) The tracking database requires an [FDW](https://www.postgresql.org/docs/11/postgres-fdw.html)
connection with the **secondary** replica database for improved performance. connection with the **secondary** replica database for improved performance.
If you have an external database ready to be used as the tracking database, If you have an external database ready to be used as the tracking database,
...@@ -211,7 +211,7 @@ the tracking database on port 5432. ...@@ -211,7 +211,7 @@ the tracking database on port 5432.
gitlab-rake geo:db:migrate gitlab-rake geo:db:migrate
``` ```
1. Configure the [PostgreSQL FDW](https://www.postgresql.org/docs/9.6/postgres-fdw.html) 1. Configure the [PostgreSQL FDW](https://www.postgresql.org/docs/11/postgres-fdw.html)
connection and credentials: connection and credentials:
Save the script below in a file, ex. `/tmp/geo_fdw.sh` and modify the connection Save the script below in a file, ex. `/tmp/geo_fdw.sh` and modify the connection
......
...@@ -110,7 +110,7 @@ The following are required to run Geo: ...@@ -110,7 +110,7 @@ The following are required to run Geo:
The following operating systems are known to ship with a current version of OpenSSH: The following operating systems are known to ship with a current version of OpenSSH:
- [CentOS](https://www.centos.org) 7.4+ - [CentOS](https://www.centos.org) 7.4+
- [Ubuntu](https://ubuntu.com) 16.04+ - [Ubuntu](https://ubuntu.com) 16.04+
- PostgreSQL 9.6+ with [FDW](https://www.postgresql.org/docs/9.6/postgres-fdw.html) support and [Streaming Replication](https://wiki.postgresql.org/wiki/Streaming_Replication) - PostgreSQL 11+ with [FDW](https://www.postgresql.org/docs/11/postgres-fdw.html) support and [Streaming Replication](https://wiki.postgresql.org/wiki/Streaming_Replication)
- Git 2.9+ - Git 2.9+
- All nodes must run the same GitLab version. - All nodes must run the same GitLab version.
......
...@@ -177,7 +177,7 @@ from [owasp.org](https://owasp.org/). ...@@ -177,7 +177,7 @@ from [owasp.org](https://owasp.org/).
### What databases and application servers support the application? ### What databases and application servers support the application?
- PostgreSQL >= 9.6, Redis, Sidekiq, Puma. - PostgreSQL >= 11, Redis, Sidekiq, Puma.
### How will database connection strings, encryption keys, and other sensitive components be stored, accessed, and protected from unauthorized detection? ### How will database connection strings, encryption keys, and other sensitive components be stored, accessed, and protected from unauthorized detection?
......
...@@ -56,7 +56,7 @@ for improvements including ...@@ -56,7 +56,7 @@ for improvements including
The minimum recommended configuration for a Gitaly Cluster requires: The minimum recommended configuration for a Gitaly Cluster requires:
- 1 highly available load balancer - 1 highly available load balancer
- 1 highly available PostgreSQL server (PostgreSQL 9.6 or newer) - 1 highly available PostgreSQL server (PostgreSQL 11 or newer)
- 3 Praefect nodes - 3 Praefect nodes
- 3 Gitaly nodes (1 primary, 2 secondary) - 3 Gitaly nodes (1 primary, 2 secondary)
...@@ -82,7 +82,7 @@ package (highly recommended), follow the steps below: ...@@ -82,7 +82,7 @@ package (highly recommended), follow the steps below:
Before beginning, you should already have a working GitLab instance. [Learn how Before beginning, you should already have a working GitLab instance. [Learn how
to install GitLab](https://about.gitlab.com/install/). to install GitLab](https://about.gitlab.com/install/).
Provision a PostgreSQL server (PostgreSQL 9.6 or newer). Configuration through Provision a PostgreSQL server (PostgreSQL 11 or newer). Configuration through
the Omnibus GitLab distribution is not yet supported. Follow this the Omnibus GitLab distribution is not yet supported. Follow this
[issue](https://gitlab.com/gitlab-org/gitaly/issues/2476) for updates. [issue](https://gitlab.com/gitlab-org/gitaly/issues/2476) for updates.
...@@ -138,7 +138,7 @@ of GitLab and should not be replicated. ...@@ -138,7 +138,7 @@ of GitLab and should not be replicated.
To complete this section you will need: To complete this section you will need:
- 1 Praefect node - 1 Praefect node
- 1 PostgreSQL server (PostgreSQL 9.6 or newer) - 1 PostgreSQL server (PostgreSQL 11 or newer)
- An SQL user with permissions to create databases - An SQL user with permissions to create databases
During this section, we will configure the PostgreSQL server, from the Praefect During this section, we will configure the PostgreSQL server, from the Praefect
......
...@@ -969,7 +969,7 @@ repmgr['trust_auth_cidr_addresses'] = %w(192.168.1.44/32 db2.example.com) ...@@ -969,7 +969,7 @@ repmgr['trust_auth_cidr_addresses'] = %w(192.168.1.44/32 db2.example.com)
##### MD5 Authentication ##### MD5 Authentication
If you are running on an untrusted network, repmgr can use md5 authentication If you are running on an untrusted network, repmgr can use md5 authentication
with a [`.pgpass` file](https://www.postgresql.org/docs/9.6/libpq-pgpass.html) with a [`.pgpass` file](https://www.postgresql.org/docs/11/libpq-pgpass.html)
to authenticate. to authenticate.
You can specify by IP address, FQDN, or by subnet, using the same format as in You can specify by IP address, FQDN, or by subnet, using the same format as in
......
...@@ -215,7 +215,7 @@ To start a session, run ...@@ -215,7 +215,7 @@ To start a session, run
```shell ```shell
# gitlab-ctl pgb-console # gitlab-ctl pgb-console
Password for user pgbouncer: Password for user pgbouncer:
psql (9.6.8, server 1.7.2/bouncer) psql (11.7, server 1.7.2/bouncer)
Type "help" for help. Type "help" for help.
pgbouncer=# pgbouncer=#
......
...@@ -209,7 +209,7 @@ default: ...@@ -209,7 +209,7 @@ default:
image: ruby:2.6 image: ruby:2.6
services: services:
- postgres:9.3 - postgres:11.7
before_script: before_script:
- bundle install - bundle install
...@@ -235,14 +235,14 @@ default: ...@@ -235,14 +235,14 @@ default:
test:2.6: test:2.6:
image: ruby:2.6 image: ruby:2.6
services: services:
- postgres:9.3 - postgres:11.7
script: script:
- bundle exec rake spec - bundle exec rake spec
test:2.7: test:2.7:
image: ruby:2.7 image: ruby:2.7
services: services:
- postgres:9.4 - postgres:12.2
script: script:
- bundle exec rake spec - bundle exec rake spec
``` ```
...@@ -257,7 +257,7 @@ default: ...@@ -257,7 +257,7 @@ default:
entrypoint: ["/bin/bash"] entrypoint: ["/bin/bash"]
services: services:
- name: my-postgres:9.4 - name: my-postgres:11.7
alias: db-postgres alias: db-postgres
entrypoint: ["/usr/local/bin/db-postgres"] entrypoint: ["/usr/local/bin/db-postgres"]
command: ["start"] command: ["start"]
...@@ -289,7 +289,7 @@ variables: ...@@ -289,7 +289,7 @@ variables:
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --data-checksums" POSTGRES_INITDB_ARGS: "--encoding=UTF8 --data-checksums"
services: services:
- name: postgres:9.4 - name: postgres:11.7
alias: db alias: db
entrypoint: ["docker-entrypoint.sh"] entrypoint: ["docker-entrypoint.sh"]
command: ["postgres"] command: ["postgres"]
......
...@@ -80,7 +80,7 @@ it did not improve query performance. ...@@ -80,7 +80,7 @@ it did not improve query performance.
## Attempt B: Denormalize using an array column ## Attempt B: Denormalize using an array column
Having [removed MySQL support in GitLab 12.1](https://about.gitlab.com/blog/2019/06/27/removing-mysql-support/), Having [removed MySQL support in GitLab 12.1](https://about.gitlab.com/blog/2019/06/27/removing-mysql-support/),
using [PostgreSQL's arrays](https://www.postgresql.org/docs/9.6/arrays.html) became more using [PostgreSQL's arrays](https://www.postgresql.org/docs/11/arrays.html) became more
tractable as we didn't have to support two databases. We discussed denormalizing tractable as we didn't have to support two databases. We discussed denormalizing
the `label_links` table for querying in the `label_links` table for querying in
[issue #49651](https://gitlab.com/gitlab-org/gitlab-foss/issues/49651), [issue #49651](https://gitlab.com/gitlab-org/gitlab-foss/issues/49651),
...@@ -91,7 +91,7 @@ and `epics`: `issues.label_ids` would be an array column of label IDs, and ...@@ -91,7 +91,7 @@ and `epics`: `issues.label_ids` would be an array column of label IDs, and
`issues.label_titles` would be an array of label titles. `issues.label_titles` would be an array of label titles.
These array columns can be complemented with [GIN These array columns can be complemented with [GIN
indexes](https://www.postgresql.org/docs/9.6/gin-intro.html) to improve indexes](https://www.postgresql.org/docs/11/gin-intro.html) to improve
matching. matching.
### Attempt B1: store label IDs for each object ### Attempt B1: store label IDs for each object
......
...@@ -216,15 +216,11 @@ bundle exec rake geo:db:migrate ...@@ -216,15 +216,11 @@ bundle exec rake geo:db:migrate
Foreign Data Wrapper ([FDW](#fdw)) is used by the [Geo Log Cursor](#geo-log-cursor) and improves Foreign Data Wrapper ([FDW](#fdw)) is used by the [Geo Log Cursor](#geo-log-cursor) and improves
the performance of many synchronization operations. the performance of many synchronization operations.
FDW is a PostgreSQL extension ([`postgres_fdw`](https://www.postgresql.org/docs/current/postgres-fdw.html)) that is enabled within FDW is a PostgreSQL extension ([`postgres_fdw`](https://www.postgresql.org/docs/11/postgres-fdw.html)) that is enabled within
the Geo Tracking Database (on a **secondary** node), which allows it the Geo Tracking Database (on a **secondary** node), which allows it
to connect to the readonly database replica and perform queries and filter to connect to the readonly database replica and perform queries and filter
data from both instances. data from both instances.
While FDW is available in older versions of PostgreSQL, we needed to
raise the minimum required version to 9.6 as this includes many
performance improvements to the FDW implementation.
This persistent connection is configured as an FDW server This persistent connection is configured as an FDW server
named `gitlab_secondary`. This configuration exists within the database's user named `gitlab_secondary`. This configuration exists within the database's user
context only. To access the `gitlab_secondary`, GitLab needs to use the context only. To access the `gitlab_secondary`, GitLab needs to use the
......
...@@ -38,7 +38,7 @@ alternative method. ...@@ -38,7 +38,7 @@ alternative method.
### Attempt A: PostgreSQL materialized view ### Attempt A: PostgreSQL materialized view
Model can be updated through a refresh strategy based on a project routes SQL and a [materialized view](https://www.postgresql.org/docs/9.6/rules-materializedviews.html): Model can be updated through a refresh strategy based on a project routes SQL and a [materialized view](https://www.postgresql.org/docs/11/rules-materializedviews.html):
```sql ```sql
SELECT split_part("rs".path, '/', 1) as root_path, SELECT split_part("rs".path, '/', 1) as root_path,
......
...@@ -12,7 +12,7 @@ To facilitate this we have the following methods that you can use: ...@@ -12,7 +12,7 @@ To facilitate this we have the following methods that you can use:
This allows you to write code such as: This allows you to write code such as:
```ruby ```ruby
if Gitlab::Database.version.to_f >= 9.6 if Gitlab::Database.version.to_f >= 11.7
run_really_fast_query run_really_fast_query
else else
run_fast_query run_fast_query
......
...@@ -174,7 +174,7 @@ If you are using [GitLab Geo](../development/geo.md): ...@@ -174,7 +174,7 @@ If you are using [GitLab Geo](../development/geo.md):
- The - The
[tracking database](../development/geo.md#using-the-tracking-database) [tracking database](../development/geo.md#using-the-tracking-database)
requires the requires the
[postgres_fdw](https://www.postgresql.org/docs/9.6/postgres-fdw.html) [postgres_fdw](https://www.postgresql.org/docs/11/postgres-fdw.html)
extension. extension.
```sql ```sql
......
...@@ -353,7 +353,7 @@ The following table lists variables related to the database. ...@@ -353,7 +353,7 @@ The following table lists variables related to the database.
| `POSTGRES_USER` | The PostgreSQL user. Defaults to `user`. Set it to use a custom username. | | `POSTGRES_USER` | The PostgreSQL user. Defaults to `user`. Set it to use a custom username. |
| `POSTGRES_PASSWORD` | The PostgreSQL password. Defaults to `testing-password`. Set it to use a custom password. | | `POSTGRES_PASSWORD` | The PostgreSQL password. Defaults to `testing-password`. Set it to use a custom password. |
| `POSTGRES_DB` | The PostgreSQL database name. Defaults to the value of [`$CI_ENVIRONMENT_SLUG`](../../ci/variables/README.md#predefined-environment-variables). Set it to use a custom database name. | | `POSTGRES_DB` | The PostgreSQL database name. Defaults to the value of [`$CI_ENVIRONMENT_SLUG`](../../ci/variables/README.md#predefined-environment-variables). Set it to use a custom database name. |
| `POSTGRES_VERSION` | Tag for the [`postgres` Docker image](https://hub.docker.com/_/postgres) to use. Defaults to `9.6.2`. | | `POSTGRES_VERSION` | Tag for the [`postgres` Docker image](https://hub.docker.com/_/postgres) to use. Defaults to `11.7`. |
### Disable jobs ### Disable jobs
......
...@@ -346,7 +346,7 @@ version of the PostgreSQL chart that supports Kubernetes 1.16 and higher: ...@@ -346,7 +346,7 @@ version of the PostgreSQL chart that supports Kubernetes 1.16 and higher:
1. Set the: 1. Set the:
- `AUTO_DEVOPS_POSTGRES_CHANNEL` variable to `2`. - `AUTO_DEVOPS_POSTGRES_CHANNEL` variable to `2`.
- `POSTGRES_VERSION` variable to `9.6.16` or higher. - `POSTGRES_VERSION` variable to `11.7` or higher.
DANGER: **Danger:** Opting into `AUTO_DEVOPS_POSTGRES_CHANNEL` version `2` deletes DANGER: **Danger:** Opting into `AUTO_DEVOPS_POSTGRES_CHANNEL` version `2` deletes
the version `1` PostgreSQL database. Follow the the version `1` PostgreSQL database. Follow the
......
...@@ -173,7 +173,7 @@ TIP: **Tip:** You can also ...@@ -173,7 +173,7 @@ TIP: **Tip:** You can also
PostgreSQL. PostgreSQL.
1. Set `AUTO_DEVOPS_POSTGRES_DELETE_V1` to a non-empty value. This flag is a 1. Set `AUTO_DEVOPS_POSTGRES_DELETE_V1` to a non-empty value. This flag is a
safeguard to prevent accidental deletion of databases. safeguard to prevent accidental deletion of databases.
1. Set `POSTGRES_VERSION` to `9.6.16`. This is the minimum PostgreSQL 1. Set `POSTGRES_VERSION` to `11.7`. This is the minimum PostgreSQL
version supported. version supported.
1. Set `PRODUCTION_REPLICAS` to `0`. For other environments, use 1. Set `PRODUCTION_REPLICAS` to `0`. For other environments, use
`REPLICAS` with an [environment scope](../../ci/environments.md#scoping-environments-with-specs). `REPLICAS` with an [environment scope](../../ci/environments.md#scoping-environments-with-specs).
......
...@@ -167,7 +167,7 @@ metadata: ...@@ -167,7 +167,7 @@ metadata:
specTemplate: specTemplate:
writeConnectionSecretsToNamespace: gitlab-managed-apps writeConnectionSecretsToNamespace: gitlab-managed-apps
forProvider: forProvider:
databaseVersion: POSTGRES_9_6 databaseVersion: POSTGRES_11_7
region: $REGION region: $REGION
settings: settings:
tier: db-custom-1-3840 tier: db-custom-1-3840
...@@ -189,7 +189,7 @@ metadata: ...@@ -189,7 +189,7 @@ metadata:
specTemplate: specTemplate:
writeConnectionSecretsToNamespace: gitlab-managed-apps writeConnectionSecretsToNamespace: gitlab-managed-apps
forProvider: forProvider:
databaseVersion: POSTGRES_9_6 databaseVersion: POSTGRES_11_7
region: $REGION region: $REGION
settings: settings:
tier: db-custom-1-3840 tier: db-custom-1-3840
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment