Tous les produits
Search
Centre de documentation

MaxCompute:Local backup

Dernière mise à jour :Aug 21, 2026

MaxCompute sauvegarde automatiquement les données à chaque modification et conserve ces sauvegardes pendant une période configurable. Si des données sont accidentellement supprimées ou écrasées, vous pouvez les restaurer vers n'importe quelle version antérieure dans la limite de la période de rétention.

Backup and restoration

Fonctionnement

  • Toujours activé -- Activé par défaut avec une période de rétention de 24 heures. Aucun stockage externe n'est requis et aucun coût supplémentaire n'est facturé.

  • Continu -- Chaque modification déclenche une sauvegarde, ce qui garantit qu'aucune modification de données n'est manquée entre les fenêtres planifiées.

  • Restauration rapide -- Les opérations de restauration ne consomment pas de ressources de calcul supplémentaires. Une seule commande suffit pour restaurer une table, une partition ou une version spécifique.

Limitations

  • Les vues matérialisées, les tables d'objets et les tables externes ne sont pas prises en charge.

  • La restauration des tables clusterisées n'est pas possible.

  • Après l'exécution de PURGE TABLE sur une table, les données purgées ne peuvent pas être restaurées.

  • Une table ou une partition supprimée (y compris les tables Delta) ne peut pas être restaurée directement vers un numéro de séquence de journalisation (LSN) spécifique. Restaurez d'abord la table, puis restaurez-la vers le LSN cible.

Limitations des tables Delta

  • Une table ou une partition Delta supprimée peut être entièrement restaurée, mais pas vers une version mineure spécifique. Pour interroger une version mineure spécifique, utilisez la fonctionnalité time travel.

  • Après la restauration d'une table supprimée :

    • L'interrogation de la table à un moment antérieur à la suppression renvoie les données comme si la suppression n'avait jamais eu lieu.

    • L'interrogation à un moment compris entre la suppression et la restauration ne renvoie aucune donnée (le système la considère comme supprimée).

    • L'interrogation à un moment postérieur à la restauration renvoie les données comme si ni la suppression ni la restauration n'avaient eu lieu. Les données restaurées ne sont pas traitées comme des données incrémentielles.

    • L'interrogation d'une partition supprimée avant sa restauration ne renvoie aucun résultat (comme pour une requête normale sur une partition inexistante), plutôt qu'une erreur.

  • Chaque cycle de suppression et de restauration génère de nouveaux horodatages de validation et numéros de version. Lorsqu'une table partitionnée est restaurée, une version distincte est créée pour chaque partition.

Configurer la période de rétention

Définissez le nombre de jours pendant lesquels MaxCompute conserve les données de sauvegarde. La plage valide est de 0 à 30. La valeur par défaut est 1 (24 heures). La définition de la valeur 0 désactive la sauvegarde.

-- Set the retention period to 7 days
setproject odps.timemachine.retention.days=7;
Seuls les comptes Alibaba Cloud ou les administrateurs de projet peuvent modifier la période de rétention.

Comportement après modification de la période de rétention :

Modification

Effet

Prolongation de la période

Prise d'effet le jour même

Réduction de la période

MaxCompute supprime automatiquement les données de sauvegarde qui dépassent la nouvelle période

Pour afficher le paramètre actuel, exécutez setproject; sur le client MaxCompute (odpscmd) et vérifiez la valeur odps.timemachine.retention.days.

Afficher l'historique des sauvegardes

Répertorier toutes les tables, y compris les tables supprimées

SHOW HISTORY FOR tables;

Filtrer par nom :

SHOW HISTORY FOR tables LIKE test_restore_1;

Exemple de sortie :

Name                	Id                              	Type            	IsPartitioned 	CreateTime         	DropTime
test_restore_1      	a0b06367bd054d17a55505aa31601b89	MANAGED_TABLE   	FALSE         	2025-07-18 16:32:13
Requiert l'autorisation List sur le projet. Consultez les autorisations MaxCompute .

Afficher l'historique des versions d'une table

SHOW HISTORY FOR TABLE <table_name> [LIMIT <n>] [LSN '<lsn>' | OFFSET <offset>];

Exemple :

SHOW HISTORY FOR TABLE test_restore_1;

Exemple de sortie :

ObjectType	ObjectId                        	ObjectName          	VERSION(LSN)    	Time               	Operation
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000001	2025-07-18 16:32:14	CREATE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000002	2025-07-18 16:52:08	OVERWRITE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000003	2025-07-18 16:52:12	OVERWRITE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000004	2025-07-18 16:52:14	OVERWRITE
TABLE     	a0b06367bd054d17a55505aa31601b89	test_restore_1      	0000000000000005	2025-07-18 16:52:17	OVERWRITE

Requiert l'autorisation ShowHistory sur la table. Si la table a été supprimée, cette commande renvoie une erreur. Utilisez plutôt SHOW HISTORY FOR tables LIKE <table_name>;.

Afficher l'historique des versions d'une table supprimée

Utilisez l'ID de table obtenu via SHOW HISTORY FOR tables :

SHOW HISTORY FOR TABLE test_restore_2 ('id'='437b29466ba948b392b2090ec0a60fc2');

Requiert l'autorisation List sur le projet.

Afficher l'historique des versions d'une partition

-- By partition spec
SHOW HISTORY FOR TABLE test_restore_part_1 PARTITION(ds='20250701');

-- By partition ID (for dropped partitions)
SHOW HISTORY FOR TABLE test_restore_part_1 PARTITION('id'='271aebf3e17a4a8e9f6b35733bf63db4');

Requiert l'autorisation ShowHistory sur la table.

Pour afficher plusieurs partitions simultanément :

SHOW HISTORY FOR TABLE test_restore_part_1 ('id'='fbee66b56cf544d2a9999d5d0ce5d352')
  PARTITION(ds='20250701') PARTITION(ds='20250702');

Restaurer une table non partitionnée

Restaurer une table supprimée

RESTORE TABLE <table_name> ('id'='<table_id>');
Le nom de la table ne doit pas entrer en conflit avec une table existante. Renommez la table existante au préalable si nécessaire.

Exemple :

-- Rename the conflicting table
ALTER TABLE test_restore_2 RENAME TO test_restore_2_rename;

-- Restore the dropped table
RESTORE TABLE test_restore_2 ('id'='437b29466ba948b392b2090ec0a60fc2');

Autorisations :

  • Table existante : autorisation Update sur la table.

  • Table inexistante : autorisation CreateTable sur le projet.

Restaurer une table vers une version spécifique

RESTORE TABLE <table_name> TO LSN '<lsn>';

Exemple :

RESTORE TABLE test_restore_1 TO LSN '0000000000000004';

SELECT * FROM test_restore_1;
-- Returns:
-- +------------+
-- | colname    |
-- +------------+
-- | 2          |
-- +------------+

Restaurer une table vers une version spécifique en tant que nouvelle table

RESTORE TABLE <table_name> TO LSN '<lsn>' AS <new_table_name>;

Cette commande présente trois comportements selon la table cible :

Scénario

Comportement

La table cible n'existe pas

Crée la nouvelle table avec les données restaurées

La table cible existe avec le même schéma

Écrase les données de la table cible

La table cible existe avec un schéma différent

Échec avec l'erreur ODPS-0110061

Exemple -- restauration et renommage :

RESTORE TABLE test_restore_2 TO LSN '0000000000000003' AS test_restore_new;

SELECT * FROM test_restore_new;
-- Returns:
-- +------------+
-- | colname    |
-- +------------+
-- | 1          |
-- +------------+

Restaurer une table partitionnée

Restaurer une table partitionnée supprimée

RESTORE TABLE <table_name> ('id'='<table_id>');

Toutes les partitions existantes au moment de la suppression sont restaurées.

Restaurer des partitions supprimées

Restaurez une ou plusieurs partitions supprimées vers une table existante :

RESTORE TABLE <table_name> PARTITION('id'='<partition_id>') [PARTITION('id'='<partition_id>')];
La table doit exister. Si la table a également été supprimée, restaurez-la d'abord.

Exemple :

-- View partition IDs
SHOW HISTORY FOR TABLE test_restore_part_y;

-- Restore two dropped partitions
RESTORE TABLE test_restore_part_y
  PARTITION('id'='a14d6cb4ab0c46378a6e284b257bbfaa')
  PARTITION('id'='8c85184ec0b44fba8198274401df2519');

Restaurer des partitions vers une version spécifique

RESTORE TABLE <table_name>
  PARTITION(<partition_spec>) [PARTITION(<partition_spec>)]
  TO LSN '<lsn>';

Lors de la restauration de plusieurs partitions vers un même LSN, chaque partition est restaurée vers le LSN spécifié si celui-ci existe exactement pour cette partition. Dans le cas contraire, elle est restaurée vers le LSN antérieur le plus proche.

Exemple : La partition pt1 possède les LSN 100, 102, 104 et 106. La partition pt2 possède les LSN 101, 103, 104 et 105. La restauration des deux partitions vers le LSN 102 permet de restaurer pt1 vers 102 et pt2 vers 101.

RESTORE TABLE test_restore_part_y
  PARTITION(ds='20250701') PARTITION(ds='20250702')
  TO LSN '0000000000000010';

Restaurer des partitions vers une version spécifique en tant que nouvelle table

RESTORE TABLE <table_name>
  PARTITION(<partition_spec>) [PARTITION(<partition_spec>)]
  TO LSN '<lsn>' AS <new_table_name>;

Exemples de tables Delta

Créer une table Delta, insérer des données, puis supprimer et restaurer

-- Create a Delta table
CREATE TABLE mf_dt (pk BIGINT NOT NULL PRIMARY KEY,
                    val BIGINT NOT NULL)
                    PARTITIONED BY (dd STRING, hh STRING)
                    TBLPROPERTIES ("transactional"="true");

-- Insert data
INSERT OVERWRITE TABLE mf_dt PARTITION(dd='01', hh='01')
  VALUES (1, 1), (2, 2), (3, 3);

INSERT INTO TABLE mf_dt PARTITION(dd='01', hh='01')
  VALUES (3, 30), (4, 4), (5, 5);

SELECT * FROM mf_dt WHERE dd='01' AND hh='01';
-- Returns:
-- +----+-----+----+----+
-- | pk | val | dd | hh |
-- +----+-----+----+----+
-- | 1  | 1   | 01 | 01 |
-- | 4  | 4   | 01 | 01 |
-- | 5  | 5   | 01 | 01 |
-- | 2  | 2   | 01 | 01 |
-- | 3  | 30  | 01 | 01 |
-- +----+-----+----+----+

Obtenir l'ID de la table pour la restauration

Exécutez DESC EXTENDED mf_dt; et repérez le champ TableID dans la section Extended Info :

TableID:  cd607cd938dc4ca6886dd12212995604

Supprimer et restaurer la table

DROP TABLE mf_dt;

RESTORE TABLE mf_dt ('id' = 'cd607cd938dc4ca6886dd12212995604');

-- Verify the data
SELECT * FROM mf_dt WHERE dd='01' AND hh='01';
-- Returns the same data as before the drop.

Supprimer et restaurer une partition

-- Get partition IDs
SHOW HISTORY FOR TABLE mf_dt;

-- Drop the partition
ALTER TABLE mf_dt DROP PARTITION (dd = '01', hh = '01');

-- Restore the partition
RESTORE TABLE mf_dt PARTITION('id' = '51d38cc9ded344cf99188cd1a806e5d2');

-- Verify the data
SELECT * FROM mf_dt WHERE dd='01' AND hh='01';
-- Returns the same data as before the drop.

Time travel sur une table restaurée

Après la restauration d'une table Delta, les requêtes de type time travel restent fonctionnelles :

-- Query a specific version
SELECT * FROM mf_dt version AS OF 2 WHERE dd = '01' AND hh = '01';
-- Returns:
-- +----+-----+----+----+
-- | pk | val | dd | hh |
-- +----+-----+----+----+
-- | 1  | 1   | 01 | 01 |
-- | 3  | 3   | 01 | 01 |
-- | 2  | 2   | 01 | 01 |
-- +----+-----+----+----+

-- Query the latest version
SELECT * FROM mf_dt version AS OF get_latest_version('mf_dt')
  WHERE dd = '01' AND hh = '01';
-- Returns the current data.

Nettoyage des fichiers de données (tables Delta)

Les tables Delta conservent les données historiques durant la période de time travel, ce qui engendre des coûts de stockage supplémentaires. Le système supprime automatiquement les données historiques inutiles sous un délai d'un jour lorsque toutes les conditions suivantes sont réunies :

  • Les données sont plus anciennes que la période de time travel. (Si le time travel est désactivé pour la table, toutes les données historiques sont éligibles à la suppression.)

  • Les données ont dépassé leur cycle de vie ou ont été supprimées, et ont également excédé la durée de protection des sauvegardes.

Les « données historiques » désignent les fichiers de données déplacés vers le répertoire de la corbeille. Des opérations telles que le dépassement du cycle de vie, l'exécution d'une suppression, le compactage ou l'utilisation de INSERT OVERWRITE déplacent toutes les fichiers de données vers la corbeille.

Forcer le nettoyage avec PURGE

Dans le cadre d'une utilisation normale, laissez le système gérer le nettoyage automatiquement. N'utilisez PURGE TABLE qu'en cas d'urgence, par exemple lorsqu'un nombre excessif de fichiers provoque une instabilité du disque ou lorsque les données historiques entraînent une augmentation inattendue des coûts.

PURGE TABLE <table_name>;
Avertissement

Après l'exécution de cette commande, les requêtes de type time travel peuvent ne plus renvoyer les données historiques.

Exemple :

CREATE TABLE mf_ttt (pk BIGINT NOT NULL PRIMARY KEY,
                     val BIGINT NOT NULL)
                     TBLPROPERTIES ("transactional"="true");

INSERT INTO TABLE mf_ttt VALUES (1, 1), (2, 2);
INSERT INTO TABLE mf_ttt VALUES (2, 20), (3, 3);

-- Time travel returns version 2 data
SELECT * FROM mf_ttt version AS OF 2;
-- +----+-----+
-- | pk | val |
-- +----+-----+
-- | 1  | 1   |
-- | 2  | 2   |
-- +----+-----+

-- Run compaction, then time travel still works
ALTER TABLE mf_ttt compact major;
SELECT * FROM mf_ttt version AS OF 2;
-- Same result as above

-- After purge, time travel returns different data
PURGE TABLE mf_ttt;
SELECT * FROM mf_ttt version AS OF 2;
-- +----+-----+
-- | pk | val |
-- +----+-----+
-- | 1  | 1   |
-- | 3  | 3   |
-- | 2  | 20  |
-- +----+-----+

Référence des commandes

Scénario

Commande

Description

Configurer la rétention

setproject odps.timemachine.retention.days=<days>;

Définissez la période de rétention (de 0 à 30 jours). Valeur par défaut : 1.

setproject;

Consultez les paramètres actuels du projet, y compris la période de rétention.

Afficher l'historique des sauvegardes

SHOW HISTORY FOR tables [LIKE <name>];

Répertoriez toutes les tables, y compris celles supprimées. L'autorisation List est requise.

SHOW HISTORY FOR TABLE <name> [LIMIT <n>] [LSN '<lsn>' | OFFSET <n>];

Consultez l'historique des versions d'une table. L'autorisation ShowHistory est requise.

SHOW HISTORY FOR TABLE <name> ('id'='<id>');

Consultez l'historique des versions d'une table supprimée via son ID. L'autorisation List est requise.

SHOW HISTORY FOR TABLE <name> <partition_spec>;

Consultez l'historique des versions d'une partition. L'autorisation ShowHistory est requise.

SHOW HISTORY FOR TABLE <name> PARTITION('id'='<id>');

Consultez l'historique des versions d'une partition supprimée via son ID.

Restaurer les données

RESTORE TABLE <name> ('id'='<id>');

Restaurez une table ou une partition supprimée.

RESTORE TABLE <name> TO LSN '<lsn>';

Restaurez une table vers une version spécifique.

RESTORE TABLE <name> TO LSN '<lsn>' AS <new_name>;

Restaurez une table vers une version et enregistrez-la en tant que nouvelle table (ou table existante).

RESTORE TABLE <name> PARTITION('id'='<id>') [...];

Restaurez une ou plusieurs partitions supprimées.

RESTORE TABLE <name> <partition_spec> [...] TO LSN '<lsn>';

Restaurez des partitions vers une version spécifique.

RESTORE TABLE <name> <partition_spec> [...] TO LSN '<lsn>' AS <new_name>;

Restaurez des partitions vers une version et enregistrez-les en tant que nouvelle table.

Nettoyage

PURGE TABLE <name>;

Supprimez définitivement les données historiques présentes dans la corbeille.

Notes d'utilisation

  • Utilisez la dernière version du client MaxCompute pour accéder à toutes les commandes de sauvegarde et de restauration.

  • Les tables de sauvegarde sont créées uniquement lors de la modification des données. En l'absence de modification, aucune entrée de sauvegarde n'est générée.

  • Les données de sauvegarde qui dépassent la période de rétention sont automatiquement supprimées et ne peuvent plus être restaurées ni interrogées.

  • Pour plus d'informations sur les autorisations requises, consultez la page Autorisations MaxCompute.