Documentation > Guide de l'administrateur
SynSql a été conçu pour gérer une grande quantité de données; la sauvegarde complète d'un cluster aurait peu de sens. Ainsi, nous avons uniquement implémenté une sauvegarde par table.
Les opérations de sauvegarde et de récupération sont asynchrones. Ils sont exécutés par différents serveurs sur différents databrokers. Ils ne peuvent pas être isolés comme une transaction habituelle.
Pour assurer la cohérence, les opérations de sauvegarde et de restauration imposent de verrouiller la table concernée. Cependant, une fois l'opération lancée, rien n'empêche un utilisateur de déverrouiller la table et de compromettre l'opération.
Au lieu de verrouiller les tables, vous pouvez verrouiller l'ensemble du cluster. Cela réduira le risque précédent, car seuls les administrateurs peuvent verrouiller/déverrouiller le cluster.
Il n'existe aucun mécanisme pour déverrouiller automatiquement les tables ou le cluster une fois la sauvegarde terminée. L'utilisateur doit vérifier les résultats à l'aide de la commande show backup (cf §3.3 ci-dessous) et déverrouiller une fois l'opération terminée.
Un synsql broker qui reçoit une demande de sauvegarde essaie toujours de distribuer les opérations. S'il est le seul à s'exécuter dans le cluster, il effectuera l'intégralité de la sauvegarde.
- S'il y a d'autres serveurs en cours d'exécution, il détermine le nombre de partitions de la table à sauvegarder et compte le nombre d'autres synsql brokers en ligne. En divisant le nombre de partitions par le nombre d'autres brokers en ligne, il calcule le nombre de partitions que chaque autre broker doit sauvegarder.
- Ensuite, il connecte les autres synsql brokers un par un et leur demande s'ils sont prêts à sauvegarder leur quota de partition.
- Si un autre serveur ne répond pas, le broker initial calcule un nouveau quota et distribue les partitions restantes sur les brokers restants. Le synsql broker qui n'a pas répondu est marqué comme hors ligne dans la liste des serveurs.
- Au final, si le dernier des autres synsql brokers ne répond pas, le serveur initial prend en charge la sauvegarde des partitions qui lui étaient dévolues.
Cette deuxième phase est une copie de la précédente sauf qu'au lieu de demander aux autres serveurs s'ils sont prêts à sauvegarder les partitions, la demande est de faire la sauvegarde. Chaque autre serveur répondra à son tour « sauvegarde démarrée » avant de procéder à la sauvegarde des partitions. Là encore, si un serveur disparaît, il y a le même processus qu'avant pour recalculer le quota et marquer le serveur hors ligne.
Dès qu'un synsql broker reçoit l'instruction de sauvegarder des partitions, il répond « Sauvegarde démarrée ». et commence à sauvegarder les partitions une par une. Il n'y a pas de synchronisation avec le serveur initial.
Dès que tous les autres serveurs ont répondu « sauvegarde démarrée » au broker initial, celui-ci envoie le message « sauvegarde démarrée » à son client.
Si le dernier « autre serveur » ne répond pas « sauvegarde démarrée », le serveur initial répond d'abord à son client « sauvegarde démarrée », puis commence à sauvegarder les dernières partitions.
Ainsi, lorsque le processus client qui a demandé la sauvegarde de la table a reçu l'information « sauvegarde démarrée », la sauvegarde est démarrée par différents synsql brokers sur les data brokers concernés. Les opérations de sauvegarde sont asynchrones.
Pour sauvegarder une table, vous exécutez simplement la requête suivante :
backup table NomDeLaTable ;
Remarque : les mots 'backup' et 'dump' sont des synonymes. Utilisez celui que vous souhaitez !
Une fois la demande soumise, le serveur répartira les opérations entre les autres synsql brokers. Chaque synsql broker impliqué rapporte son activité dans une table dédiée dans le dictionnaire de données SynSql. À l'aide de cette table, n'importe quel synsql broker peut déterminer l'état de la sauvegarde.
Chaque sauvegarde de table est repérable par un identifiant unique. Sous réserve de l'espace disque, vous pouvez stocker autant de sauvegardes que vous le souhaitez.
Chaque synsql broker utilise un répertoire spécifique pour stocker les fichiers de sauvegarde. L'information est disponible dans le fichier des paramètres du broker (etc/SynSql.conf) où l'on trouve /var/tmp par défaut. Vous pouvez modifier cette valeur en modifiant le fichier et en redémarrant le serveur. Si vous le faites, voyez si vous devez déplacer les fichiers des sauvegardes antérieurs.
Dans le répertoire cible, les noms des fichiers de sauvegarde sont fixes. Vous ne pouvez pas les personnaliser. Ils sont formés avec le nom de la table, la valeur de la clé de hachage et l'identifiant de la sauvegarde. Comme ceci : fileName = tableName_hashKeyValue_backupId.sql
Pour lister toutes les sauvegardes concernant une table, utilisez cette requête :
show backups for [table] Table_Name ;
Pour voir les détails concernant la dernière sauvegarde d'une table, utilisez :
show [last] backup for [table] NomDeLaTable ;
Pour voir les détails concernant une sauvegarde spécifique, affichez la liste de sauvegarde pour obtenir son Backup_Id et utilisez :
show backup for [table] NomDeLaTable with id Backup_Id ;
La commande pour restaurer une table est la suivante :
restore table NomDeLaTable [ with id Backup_Id] ;
Sans les arguments facultatifs, le serveur tentera de restaurer la table en utilisant la dernière sauvegarde. Sinon, le serveur tentera de restaurer la table en utilisant la sauvegarde ayant l'identifiant Backup_Id.
Le processus de restauration est similaire au processus de sauvegarde. Il repose sur les mêmes 3 phases. Dans la première phase, le serveur initial connecte tous les serveurs impliqués dans l'opération de sauvegarde pour vérifier s'ils peuvent être restaurés. Si un serveur ne répond pas ou refuse de restaurer car il lui manque un ou plusieurs fichiers de sauvegarde, la restauration échoue. Sinon dans une seconde boucle, le serveur initial connecte les autres serveurs pour leur dire de lancer la restauration. La restauration elle-même s'effectue dans une troisième phase asynchrone.
Remarque. Lors d'une demande de suppression de table, le serveur supprime toutes les informations de table du dictionnaire. Ainsi, vous ne pouvez pas restaurer une table supprimée.
| 15 Jan 2026 07:13:13 | English version |