La fonctionnalité de gestion du cycle de vie des données (DLM) réduit les coûts de stockage et améliore l'efficacité. Elle archive automatiquement et périodiquement les données froides peu consultées de PolarStore vers un support de stockage économique, tel que Object Storage Service (OSS).
Prérequis
-
Votre cluster doit exécuter PolarDB for MySQL 8.0.2, révision 8.0.2.2.34.1 ou ultérieure.
RemarquePour vérifier la version de votre cluster, consultez Interroger la version du moteur.
Si votre cluster exécute PolarDB for MySQL 8.0.2, révision 8.0.2.2.11.1 ou ultérieure, la fonctionnalité DLM n'enregistre pas les opérations dans le journal binaire.
-
Activez l'archivage des données froides avant d'utiliser les politiques DLM. Pour plus d'informations, consultez Activer l'archivage des données froides.
RemarqueSi vous n'activez pas la fonctionnalité d'archivage des données froides, l'erreur suivante s'affiche :
ERROR 8158 (HY000): [Data Lifecycle Management] DLM storage engine is not support. The value of polar_dlm_storage_mode is OFF.
Limites
La fonctionnalité DLM prend uniquement en charge les tables partitionnées sans sous-partitions. La méthode de partitionnement doit être RANGE COLUMN.
Vous ne pouvez pas utiliser la fonctionnalité DLM sur une table partitionnée possédant un index secondaire global (GSI).
PolarDB for MySQL ne permet pas de modifier une politique DLM. Pour changer une politique, supprimez d'abord la politique existante, puis créez-en une nouvelle.
Si une table possède une politique DLM, évitez d'exécuter des opérations DDL entraînant des incohérences de schéma entre la table source et la table d'archive (ajout ou suppression de colonnes, modification des types de données). De telles incohérences peuvent empêcher l'analyse des données archivées ultérieurement. Avant d'exécuter ces opérations DDL, supprimez la politique DLM de la table. Pour reprendre l'archivage automatique, créez une nouvelle politique DLM et spécifiez un nouveau nom pour la table d'archive. Ce nom doit différer de tous les noms de tables d'archive précédemment utilisés.
-
Utilisez le partitionnement INTERVAL RANGE pour étendre automatiquement les partitions et la fonctionnalité DLM afin d'archiver les données des partitions peu utilisées vers OSS.
RemarqueLe partitionnement INTERVAL RANGE est pris en charge uniquement pour les clusters exécutant PolarDB for MySQL 8.0.2, révision 8.0.2.2.0 ou ultérieure.
Spécifiez une politique DLM lors de l'exécution de l'instruction
CREATE TABLEouALTER TABLE.L'instruction
SHOW CREATE TABLEn'affiche pas les politiques DLM. Consultez la table mysql.dlm_policies pour afficher toutes les politiques DLM.
Précautions
Une fois les données froides archivées, la table d'archive dans OSS devient accessible en lecture seule et les performances des requêtes peuvent diminuer. Effectuez des tests préalables pour vous assurer que les performances répondent à vos exigences.
Après l'archivage d'une partition vers OSS, les données de cette partition deviennent accessibles en lecture seule. Les opérations DDL sur la table partitionnée ne sont plus possibles.
Les sauvegardes n'incluent pas les données archivées vers OSS. Les données stockées dans OSS ne permettent pas la restauration à un point précis dans le temps.
Syntaxe
Créer une politique
-
Créer une politique DLM avec CREATE TABLE
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options] [dlm_add_options] dlm_add_options: DLM ADD [(dlm_policy_definition [, dlm_policy_definition] ...)] dlm_policy_definition: POLICY policy_name [TIER TO TABLE/TIER TO PARTITION/TIER TO NONE] [ENGINE [=] engine_name] [STORAGE SCHEMA_NAME [=] storage_schema_name] [STORAGE TABLE_NAME [=] storage_table_name] [STORAGE [=] OSS] [READ ONLY] [COMMENT 'comment_string'] [EXTRA_INFO 'extra_info'] ON [(PARTITIONS OVER num)] -
Créer une politique DLM avec ALTER TABLE
ALTER TABLE tbl_name [alter_option [, alter_option] ...] [partition_options] [dlm_add_options] dlm_add_options: DLM ADD [(dlm_policy_definition [, dlm_policy_definition] ...)] dlm_policy_definition: POLICY policy_name [TIER TO TABLE/TIER TO PARTITION/TIER TO NONE] [ENGINE [=] engine_name] [STORAGE SCHEMA_NAME [=] storage_schema_name] [STORAGE TABLE_NAME [=] storage_table_name] [STORAGE [=] OSS] [READ ONLY] [COMMENT 'comment_string'] [EXTRA_INFO 'extra_info'] ON [(PARTITIONS OVER num)]
Paramètres de la politique DLM
Paramètre | Obligatoire | Description |
tbl_name | Oui | Nom de la table. |
policy_name | Oui | Nom de la politique. |
TIER TO TABLE | Oui | Archive les données vers une nouvelle table externe OSS. |
TIER TO PARTITION | Oui | Convertit les partitions de données chaudes en partitions de données froides stockées dans OSS au sein de la même table, créant ainsi une table partitionnée hybride. Remarque
|
TIER TO NONE | Oui | Supprime les données des partitions les plus anciennes au lieu de les archiver. |
engine_name | Non | Moteur de stockage pour les données archivées. Actuellement, seul le moteur CSV est pris en charge pour l'archivage. |
storage_schema_name | Non | Base de données pour la table d'archive. Par défaut, il s'agit de la base de données de la table source. |
storage_table_name | Non | Nom de la table d'archive. S'il n'est pas spécifié, la valeur par défaut est |
STORAGE [=] OSS | Non | Stocke les données archivées dans OSS. Il s'agit de la valeur par défaut. |
READ ONLY | Non | Rend les données archivées accessibles en lecture seule. Il s'agit de la valeur par défaut. |
comment_string | Non | Commentaire associé à la politique DLM. |
extra_info | Non | Spécifie les informations OSS_FILE_FILTER pour la table OSS de destination. Remarque
Le format de |
ON (PARTITIONS OVER num) | Oui | Archive les données lorsque le nombre de partitions est supérieur à |
Gérer une politique
-
Activez une politique DLM.
ALTER TABLE table_name DLM ENABLE POLICY [(dlm_policy_name [, dlm_policy_name] ...)] -
Désactivez une politique DLM.
ALTER TABLE table_name DLM DISABLE POLICY [(dlm_policy_name [, dlm_policy_name] ...)] -
Supprimez une politique DLM.
ALTER TABLE table_name DLM DROP POLICY [(dlm_policy_name [, dlm_policy_name] ...)]
Dans ces instructions, table_name correspond au nom de la table, et dlm_policy_name au nom de la politique à gérer. Vous pouvez spécifier plusieurs noms de politiques.
Exécuter une politique
-
Exécutez toutes les politiques DLM sur toutes les tables du cluster actuel.
CALL dbms_dlm.execute_all_dlm_policies(); -
Exécutez les politiques DLM sur une seule table.
CALL dbms_dlm.execute_table_dlm_policies('database_name', 'table_name');Dans cette instruction,
database_namedésigne le nom de la base de données contenant la table, ettable_namele nom de la table.
La fonctionnalité MySQL event permet d'exécuter des politiques DLM pendant la fenêtre de maintenance de votre cluster. Cette méthode évite d'impacter les performances de la base de données pendant les heures de pointe et permet de déplacer périodiquement les données expirées pour réduire les coûts de stockage. Utilisez la syntaxe suivante pour exécuter une politique DLM avec un événement :
CREATE
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[COMMENT 'comment']
DO event_body;
schedule: {
EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
}
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
event_body: {
CALL dbms_dlm.execute_all_dlm_policies();
| CALL dbms_dlm.execute_table_dlm_policies('database_name', 'table_name');
}
Le tableau suivant décrit les paramètres.
Paramètre | Obligatoire | Description |
event_name | Oui | Nom de l'événement. |
schedule | Oui | Heure et fréquence d'exécution de l'événement. |
comment | Non | Commentaire associé à l'événement. |
event_body | Oui | Contenu exécuté par l'événement. Il doit s'agir d'une instruction exécutant une politique DLM. Remarque
|
interval | Oui | Fréquence d'exécution de l'événement. |
timestamp | Oui | Heure de début d'exécution de l'événement. |
database_name | Oui | Nom de la base de données. |
table_name | Oui | Nom de la table. |
Pour plus d'informations sur la fonctionnalité MySQL EVENT, consultez la documentation officielle MySQL pour CREATE EVENT.
Pour des exemples d'utilisation, consultez Exemples d'archivage de données froides vers OSS.
Exemples
Archiver des données vers une table externe
Archiver des partitions vers OSS
Supprimer des données froides
Gérer les politiques avec ALTER TABLE
Résoudre les erreurs d'exécution
Des problèmes de configuration peuvent entraîner l'échec de l'exécution des politiques DLM. Les enregistrements d'erreurs sont stockés dans la table mysql.dlm_progress. Exécutez la commande suivante pour consulter les enregistrements d'erreurs :
SELECT * FROM mysql.dlm_progress WHERE Archive_stage = "ARCHIVE_ERROR";
Recherchez les détails de l'erreur dans le champ Extra_info. Après avoir identifié et résolu la cause de l'erreur, supprimez l'enregistrement ou mettez à jour son Archive_stage à ARCHIVE_COMPLETE. Exécutez ensuite la commande call dbms_dlm.execute_all_dlm_policies; pour exécuter manuellement la politique, ou attendez la prochaine exécution planifiée.
Pour des raisons de sécurité des données, si un enregistrement d'exécution de politique présente l'état ARCHIVE_ERROR, le planificateur n'exécutera plus la politique automatiquement. Une fois la cause de l'échec confirmée et l'enregistrement mis à jour, la politique reprend son exécution planifiée.