La migration avancée est une solution permettant de migrer des données pour des bases de données volumineuses avec moins de temps d'arrêt. Cette fonctionnalité n'est disponible que pour PostgreSQL.
Exigences concernant la source de migration
Pour configurer votre source de migration, vous devez configurer à la fois l'instance source et les bases de données sources sous-jacentes.
Versions compatibles
Les versions PostgreSQL autogérées compatibles sont les suivantes :
- PostgreSQL : 9.4, 9.5, 9.6, 10, 11, 12, 13, 14 et 15
- AlloyDB Omni: 15
Configuration de l'instance source
Votre instance source doit inclure la base de données postgres par défaut. Si elle n'existe pas, vous devez la créer.
La bibliothèque pglogical doit être installée sur la source et incluse dans la variable de configuration shared_preload_libraries.
Configuration de la base de données source
La migration migre toutes les bases de données de l'instance source, à l'exception des bases de données de modèle (template0 et template1 pour les sources sur site). Pour chaque base de données à migrer, vous devez suivre ces étapes :
- Installer l'extension : vous devez exécuter
CREATE EXTENSION IF NOT EXISTS pglogicalpour installer l'extension dans la base de données. - Contrainte de clé primaire : les données ne sont migrées que pour les tables dotées de clés primaires. Pour les tables sans clés primaires, la migration ne copie que le schéma de table, et non les données. De plus, pour les tables sans clés primaires, cette migration n'accepte que l'instantané initial et les instructions
INSERTpendant la phase de capture des données modifiées (CDC, Change Data Capture). Vous devez gérer manuellement les instructionsUPDATEetDELETE. Droits utilisateur : l'utilisateur de base de données que vous utilisez pour vous connecter à l'instance source doit disposer de droits suffisants sur la base de données postgres par défaut, le schéma
pglogicalet tous les schémas de migration (à l'exception des schémas d'informations et des schémas commençant parpg_). Plus précisément, pour PostgreSQL, vous devez accorder les droits suivants :GRANT USAGE on SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL TABLES in SCHEMA pglogical to <USER>; GRANT SELECT on ALL TABLES in SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL SEQUENCES in SCHEMA <SCHEMA> to <USER>; ALTER USER <USER> with REPLICATION role;
Compatibilité LDD
Seules les modifications LMD (langage de manipulation de données) sont automatiquement synchronisées lors de la migration. Le LDD (langage de définition de données) doit être géré manuellement pour garantir que les bases de données source et de destination restent compatibles pendant la migration. Nous vous recommandons d'utiliser pglogical.replicate_ddl_command pour exécuter le LDD sur la source et la destination en un point cohérent.
Connectivité et autorisation
Vous devez ouvrir votre pare-feu de réseau et configurer votre fichier pg_hba.conf pour accepter les connexions entrantes à partir de l'adresse IP sortante de destination (le point de terminaison de migration), qui est fournie dans la console GDC.
Gérer la migration
Un utilisateur disposant du rôle Administrateur de base de données du projet doit suivre les étapes ci-dessous. Utilisez la console GDC ou la CLI Distributed Cloud pour gérer les migrations :
Console
- Dans le menu principal, sélectionnez Service de base de données.
- Cliquez sur Créer une migration.
- Dans la boîte de dialogue Premiers pas, consultez les exigences concernant la source et la connectivité.
- Dans la boîte de dialogue Spécifiez votre base de données source , spécifiez le nom d'hôte ou l'adresse IP de la base de données source, le nom d'utilisateur, le mot de passe, le type de chiffrement et le certificat.
- Dans la boîte de dialogue Configurer votre cluster , spécifiez l'ID du cluster, le mot de passe, la version de la base de données, le processeur, la mémoire et la capacité de stockage du cluster de base de données cible. Assurez-vous de choisir suffisamment de mémoire pour accueillir votre table la plus volumineuse.
- Cliquez sur Créer. La création de la migration et du cluster de base de données cible peut prendre quelques minutes.
L'état passe de
ReconcilingàReadylorsque le cluster est prêt. L'état de la migration passe àUnsyncedlorsque la migration est configurée correctement. Utilisez les options suivantes pour gérer votre migration :- Démarrer : démarre la migration et fait passer son état à
Running. - Arrêter : arrête la migration et fait passer son état à
Stopped. - Promouvoir : promeut le cluster de base de données cible en base de données autonome.
- Supprimer : supprime la migration et le cluster de base de données cible créés pour cette migration.
- Démarrer : démarre la migration et fait passer son état à
Modifiez régulièrement le mot de passe de l'utilisateur de réplication de la base de données source en procédant comme suit :
- Accédez à Base de données source , puis cliquez sur modifier Modifier.
- Apportez les modifications nécessaires pour modifier le mot de passe de l'utilisateur de réplication.
- Cliquez sur Enregistrer pour appliquer les modifications.
Une fois la modification appliquée, le backend de migration utilise le nouveau mot de passe.
gdcloud
Avant d'utiliser la CLI Distributed Cloud, installez-la et initialisez-la. Ensuite, authentifiez-vous auprès de votre organisation.
Créez une migration :
gdcloud database connection-profiles create DB_ENGINE_TYPE SOURCE_CONNECTION_PROFILE \ --username REPLICATION_USERNAME \ --password REPLICATION_PASSWORD \ --ca-certificate CA_CERT_FILE_PATH gdcloud database migrations create MIGRATION_NAME \ --source SOURCE_CONNECTION_PROFILE \ --destination DESTINATION_DBCLUSTER gdcloud database clusters create DESTINATION_DBCLUSTER \ --database-version DB_VERSION \ --admin-password ADMIN_PASSWORDRemplacez les variables suivantes :
DB_ENGINE_TYPE: type de moteur de base de données pour la migration. Les valeurs compatibles sont les suivantes :postgresql.SOURCE_CONNECTION_PROFILE: nom du nouveau profil de connexion.REPLICATION_USERNAME: nom de l'utilisateur de réplication de la base de données source.REPLICATION_PASSWORD: mot de passe de l'utilisateur de réplication de la base de données source.CA_CERT_FILE_PATH: chemin d'accès au certificat CA de la base de données source.MIGRATION_NAME: nom de la nouvelle migration.DESTINATION_DBCLUSTER: nom du cluster de base de données cible.DB_VERSION: chaîne de version du nouveau cluster. Exemple :POSTGRESQL_13.ADMIN_PASSWORD: mot de passe de l'utilisateur administrateur du nouveau cluster.
Démarrez une migration :
gdcloud database migrations start MIGRATION_NAMEArrêtez une migration :
gdcloud database migrations stop MIGRATION_NAMEPromouvez une migration :
gdcloud database migrations promote MIGRATION_NAMERépertoriez les profils de connexion existants :
gdcloud database connection-profiles list DB_ENGINE_TYPERépertoriez la migration existante :
gdcloud database migrations list --destination DESTINATION_DBCLUSTER
API
Pour les bases de données sources PostgreSQL :
Créez un secret pour stocker le certificat CA de la base de données source :
apiVersion: v1
data:
ca.crt: SOURCE_DB_CA_CERT
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Créez un secret pour stocker le mot de passe de l'utilisateur de migration de la base de données source :
apiVersion: v1
data:
password: SOURCE_DB_USER_PASSWORD
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Créez un externalserver :
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
metadata:
name: EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
spec:
host: SOURCE_DB_HOST
port: 5432
username: SOURCE_DB_USERNAME
password:
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
certRef:
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
Créez une migration :
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: Migration
metadata:
name: MIGRATION_NAME
namespace: USER_PROJECT
spec:
source:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
name: EXTERNAL_SERVER_NAME
target:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: DBCluster
name: DBCLUSTER_NAME
control: MIGRATION_CONTROL
Remplacez les variables suivantes :
EXTERNAL_SERVER_NAME: nom de l'externalserver représentant la base de données source.USER_PROJECT: nom du projet utilisateur dans lequel l'externalserver est créé.DBENGINE_NAME: nom du moteur de base de données. Les valeurs compatibles sont les suivantes :postgresql.SOURCE_DB_CA_CERT: certificat d'autorité de certification de la base de données source.SOURCE_DB_USER_PASSWORD: mot de passe de l'utilisateur de migration de la base de données source.SOURCE_DB_USERNAME: nom d'utilisateur de migration de la base de données source.SOURCE_DB_HOST: adresse de l'hôte de migration de la base de données source.MIGRATION_NAME: nom de l'opération de migration.DBCLUSTER_NAME: nom du cluster de base de données cible de la migration.MIGRATION_CONTROL: commandes de l'opération de migration. Il doit s'agir destartoustoplors de la création de la migration. Il doit s'agir depromotepour promouvoir le cluster de base de données cible de la migration.