Cette rubrique explique comment utiliser la commande pg_restore pour restaurer les données d'un fichier de sauvegarde logique (.dump) vers une instance ApsaraDB RDS for PostgreSQL ou une base de données PostgreSQL locale.
Pour de petits volumes de données, comme ceux d'une seule table, utilisez une sauvegarde logique pour une récupération rapide. Pour de grands volumes de données, nous vous recommandons de restaurer les données à partir d'une sauvegarde physique complète vers une nouvelle instance, puis d'utiliser Data Transmission Service (DTS) pour migrer les données vers l'instance d'origine.
Pour plus d'informations sur les méthodes de récupération des données, consultez la rubrique Récupérer.
Prérequis
Vous avez créé une sauvegarde logique de vos données PostgreSQL.
Notes d'utilisation
Ne vous connectez pas à la base de données par défaut
postgreslors de la restauration des données.La restauration d'une table spécifique ne restaure pas les autres objets de base de données dont cette table dépend. Par conséquent, l'opération peut échouer lors d'une restauration vers une base de données vide.
Restaurer une base de données
-
Connectez-vous à l'instance ECS ou à l'hôte local où sont stockées les données de sauvegarde et exécutez la commande suivante pour restaurer la base de données.
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -c <dumpdir>Paramètre
Description
hostname
Le point de terminaison de l'instance ApsaraDB RDS for PostgreSQL.
Remarque-
Pour vous connecter depuis une instance ECS en utilisant un point de terminaison interne, assurez-vous que l'instance ECS et l'instance ApsaraDB RDS for PostgreSQL utilisent le même type de réseau. Si les deux instances se trouvent dans un VPC, elles doivent résider dans le même VPC.
-
Pour vous connecter depuis un hôte local ou une instance ECS en utilisant un point de terminaison public, assurez-vous qu'un point de terminaison public est activé pour l'instance.
username
Le nom d'utilisateur du compte privilégié de l'instance ApsaraDB RDS for PostgreSQL.
port
Le numéro de port de l'instance ApsaraDB RDS for PostgreSQL.
dbname
Le nom de la base de données à restaurer.
-c (facultatif)
L'option
-csupprime les objets de base de données existants avant de les recréer. Pour plus d'informations sur les autres options, consultez la documentation officielle de pg_restore.dumpdir
Le chemin d'accès et le nom du fichier de sauvegarde.
Exemple :
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump -
-
À l'invite
Password:, saisissez le mot de passe du compte privilégié de l'instance et appuyez sur Entrée.[root@iZbpxxx ~]# pg_restore -h 'pgm-xxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump Password: [root@iZbpxxx ~]#RemarqueVous pouvez ignorer les avertissements concernant l'extension plpgsql intégrée.
Restaurer une table spécifique
-
Connectez-vous à l'instance ECS ou à l'hôte local où sont stockées les données de sauvegarde et exécutez la commande suivante pour restaurer une table spécifique.
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -t <table> -c <dumpdir>Paramètre
Description
hostname
Le point de terminaison de l'instance ApsaraDB RDS for PostgreSQL.
Remarque-
Pour vous connecter depuis une instance ECS en utilisant un point de terminaison interne, assurez-vous que l'instance ECS et l'instance ApsaraDB RDS for PostgreSQL utilisent le même type de réseau. Si les deux instances se trouvent dans un VPC, elles doivent résider dans le même VPC.
-
Pour vous connecter depuis un hôte local ou une instance ECS en utilisant un point de terminaison public, assurez-vous qu'un point de terminaison public est activé pour l'instance.
username
Le nom d'utilisateur du compte privilégié de l'instance ApsaraDB RDS for PostgreSQL.
port
Le numéro de port de l'instance ApsaraDB RDS for PostgreSQL.
dbname
Le nom de la base de données à restaurer.
table
Le nom de la table à restaurer.
-c (facultatif)
L'option
-csupprime les objets de base de données existants avant de les recréer. Pour plus d'informations sur les autres options, consultez la documentation officielle de pg_restore.dumpdir
Le chemin d'accès et le nom du fichier de sauvegarde.
Exemple :
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump -
-
À l'invite
Password:, saisissez le mot de passe du compte privilégié de l'instance et appuyez sur Entrée.[root@iZbpxxx ~]# pg_restore -h 'pgm-bpxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump Password: [root@iZbpxxx ~]#
Restaurer uniquement le schéma d'une base de données
-
Connectez-vous à l'instance ECS ou à l'hôte local où sont stockées les données de sauvegarde et exécutez la commande suivante pour restaurer uniquement le schéma de la base de données.
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -s <dumpdir>Paramètre
Description
hostname
Le point de terminaison de l'instance ApsaraDB RDS for PostgreSQL.
Remarque-
Pour vous connecter depuis une instance ECS en utilisant un point de terminaison interne, assurez-vous que l'instance ECS et l'instance ApsaraDB RDS for PostgreSQL utilisent le même type de réseau. Si les deux instances se trouvent dans un VPC, elles doivent résider dans le même VPC.
-
Pour vous connecter depuis un hôte local ou une instance ECS en utilisant un point de terminaison public, assurez-vous qu'un point de terminaison public est activé pour l'instance.
username
Le nom d'utilisateur du compte privilégié de l'instance ApsaraDB RDS for PostgreSQL.
port
Le numéro de port de l'instance ApsaraDB RDS for PostgreSQL.
dbname
Le nom de la base de données cible.
-s
L'option
-srestaure uniquement le schéma (définition des données), et non les données. Pour plus d'informations sur les autres options, consultez la documentation officielle de pg_restore.dumpdir
Le chemin d'accès et le nom du fichier de sauvegarde.
Exemple :
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump -
-
À l'invite
Password:, saisissez le mot de passe du compte privilégié de l'instance et appuyez sur Entrée.[root@iZbpxxx ~]# pg_restore -h 'pgm-bpxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump Password: [root@iZbpxxx ~]#RemarqueVous pouvez ignorer les avertissements concernant l'extension plpgsql intégrée.