La fonctionnalité OSSOUTFILE de PolarDB permet d'exporter des tables de base de données au format CSV et de les stocker dans le moteur OSS.
Prérequis
Votre cluster PolarDB doit répondre à l'une des conditions suivantes :
La version du noyau est MySQL 8.0.1 et la version de révision est 8.0.1.1.30 ou ultérieure.
La version du noyau est MySQL 8.0.2 et la version de correctif est 8.0.2.2.8 ou ultérieure.
Pour vérifier la version de votre cluster, consultez la rubrique Rechercher le numéro de version.
Remarques
-
L'exportation de fichiers de données vers le moteur OSS via DMS connecté à PolarDB n'est pas prise en charge. Le message d'erreur correspondant est le suivant :
Can not issue executeUpdate() or executeLargeUpdate() for SELECTsConnectez-vous à PolarDB à l'aide d'un Client ou de la Command Line, puis effectuez l'exportation. Pour plus d'informations, consultez la rubrique Se connecter à un cluster de base de données.
Pour sauvegarder des données de manière incrémentielle vers OSS, créez une planification de sauvegarde et configurez cette planification afin d'activer les sauvegardes incrémentielles vers OSS.
Exécutez les tâches d'exportation sur un nœud en lecture seule. Ajoutez la syntaxe HINT
/*FORCE_SLAVE*/à votre instruction SQL ou connectez-vous directement à un nœud en lecture seule pour exporter les données.
Description des paramètres
|
Paramètre |
Description |
|
loose_oss_outfile_buffer_size |
Taille de mémoire utilisable par chaque thread OSSOUTFILE. Valeurs valides : de 102400 à 536870912. Valeur par défaut : 134217728. Unité : octet. En règle générale, une mémoire plus importante augmente la vitesse d'exportation. |
|
loose_max_oss_outfile_threads |
Nombre de threads OSSOUTFILE que PolarDB peut démarrer simultanément. Valeurs valides : de 1 à 100. Valeur par défaut : 1. Unité : nombre. Utilisez la commande Remarque
Ce paramètre ne s'applique plus aux clusters exécutant PolarDB MySQL Edition version 8.0.1.1.38 ou ultérieure. |
La mémoire totale maximale utilisée par le cluster lors de l'exportation de fichiers CSV vers le moteur OSS via la fonctionnalité OSSOUTFILE se calcule ainsi :
loose_max_oss_outfile_threads * loose_oss_outfile_buffer_size
Veillez à ce que la fonctionnalité OSSOUTFILE n'utilise pas plus de 5 % de la mémoire totale d'un nœud, sous peine d'affecter les autres charges de travail s'exécutant sur ce nœud.
Utilisation
Syntax
SELECT * FROM table_name INTO OSSOUTFILE 'outfile_path' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
COLUMNS TERMINATED BY: définit le séparateur entre les champs.OPTIONALLY ENCLOSED BY: spécifie le caractère englobant les valeurs de champ. Avec l'option OPTIONALLY, seuls les champs de type chaîne sont encadrés. Sans cette option, tous les types de champs le sont.-
NULL_MARKER BY: détermine l'affichage des valeurs NULL dans le fichier de sortie. Les règles suivantes régissent les valeurs de sortie NULL, classées par ordre de priorité décroissante :NULL_MARKER : définit directement la valeur de sortie NULL. Vous pouvez attribuer n'importe quelle valeur à
NULL_MARKER. Cette option possède la priorité la plus élevée.ESCAPED BY : accepte uniquement un caractère unique. La sortie NULL devient ce caractère suivi de N. Par exemple, si
ESCAPED BY '\', NULL apparaît sous la forme \N. Cette option vient en deuxième position.NULL (par défaut) : si aucune des options ci-dessus n'est spécifiée, NULL apparaît sous la forme de la chaîne « NULL ». Cette option a la priorité la plus basse. La chaîne « NULL » n'est pas encadrée par les caractères
ENCLOSED.
LINES TERMINATED BY: indique le séparateur de ligne.
Pour plus d'informations, reportez-vous à la documentation officielle MySQL.
Parameter Description
|
Paramètre |
Description |
|
outfile_path |
Spécifie l'emplacement du fichier dans OSS et comprend les éléments suivants :
Concaténez ces trois parties avec |
|
table_name |
Nom de la table. |
Procédure
Créer un serveur OSS
CREATE SERVER outserver FOREIGN DATA WRAPPER oss OPTIONS ( EXTRA_SERVER_INFO '{"oss_endpoint": "oss-cn-zhangjiakou-internal.aliyuncs.com", "oss_bucket": "polardb", "oss_access_key_id": "*******", "oss_access_key_secret": "********", "oss_prefix":"B_outfile"}');
Cet exemple utilise l'instruction de création de serveur OSS pour les versions récentes. Adaptez l'instruction en fonction de la version Milvus de votre cluster.
Le paramètre
oss_endpointdoit être une adresse réseau interne au formatoss-{xxx}-internal.aliyuncs.com.
Exporter vers OSS
Prenons l'exemple du fichier OSS chargé suivant : oss://polardb/B_outfile/tpch/1t/parallel-lineitem.CSV.
Nom du bucket : polardb.
Chemin et nom de fichier :
B_outfile/tpch/1t/parallel-lineitem.CSV.
SELECT * FROM lineitem INTO OSSOUTFILE 'outserver/tpch/1t/parallel-lineitem.CSV' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
Vérifier l'utilisation de la mémoire et des threads
Si la version Milvus de votre cluster est 8.0.1.1.38 ou ultérieure, utilisez les commandes suivantes pour consulter en temps réel la consommation totale de mémoire et de threads pour la tâche d'exportation en cours.
-
Consultez l'utilisation totale de la mémoire en temps réel, exprimée en octets.
SHOW STATUS LIKE "%Oss_outfile_memory_used%"; -
Consultez le nombre total de threads en temps réel.
SHOW STATUS LIKE "%Oss_outfile_threads_running%";
Si vous exécutez la tâche d'exportation via le Cluster Endpoint, exécutez la commande SHOW STATUS ainsi que la commande d'exportation sur le même nœud afin d'obtenir une vue précise de l'utilisation des ressources mémoire pour ce nœud spécifique.