Pratique de réduction des fichiers de données OceanBase

Cet article présente le scénario de réduction des fichiers de données du cluster OceanBase et fournit une solution de réduction à titre de référence.

Auteur : Guan Bingwen, membre de l'équipe DBA d'Aikesheng, responsable du support technique lié aux bases de données, une étape à la fois, deux étapes à la fois, alliant diligence et paresse.

Produit par la communauté open source Aikeson, le contenu original ne peut être utilisé sans autorisation. Veuillez contacter l'éditeur et indiquer la source pour la réimpression.

Cet article compte environ 1 200 mots et sa lecture devrait prendre 4 minutes.

Scénario de rétrécissement

Auparavant, sur l'un des nœuds du cluster OceanBase d'une banque avec une architecture 1-1-1, lorsque le programme OBServer plantait, un fichier core était généré par défaut sur le disque de données /data/1. Généralement, la taille du fichier core correspond à la taille de la mémoire occupée par le programme lors de son exécution, soit environ 400 Go. Cependant, le disque de données a déjà pré-alloué 90 % de l'espace pour le fichier de données (block_file), et l'espace disponible restant n'est pas suffisant pour stocker un fichier aussi volumineux, ce qui entraîne un remplissage du répertoire, ce qui pose deux problèmes /data/1. :

  1. Le fichier principal n'est pas entièrement écrit et un fichier principal incomplet rend difficile l'analyse de la cause de l'échec.
  2. Le disque de données est plein, ce qui empêche directement le nœud de fournir des services externes.

Après avoir restauré le service OBServer, après discussions avec l'équipe du projet, il a été décidé de réduire les fichiers de données du cluster à 80 % de la taille totale du disque de données pour éviter la même situation lorsque la panne se reproduirait à l'avenir.

Les images de cet article et les informations sur le serveur (adresse IP, nom du cluster, nom du locataire) affichées dans le code concernent l'environnement de simulation créé par des individus et ne sont utilisées que pour aider à expliquer les étapes spécifiques.

opération de rétrécissement

Information sur la version

  • Version du serveur OB : 3.2.3
  • Version OCP : 3.3.3

Paramètres associés

taille_fichier_données

Utilisé pour définir la taille des fichiers de données. Si vous souhaitez réduire datafile_size,vous pouvez supprimer ce nœud du cluster et reconstruire ce nœud. La valeur actuelle du cluster est 0.

fichier_disque_percentage de données

Indique le pourcentage de l'espace disque total occupé par data_dir. La valeur actuelle du cluster est 90.

1 Ajuster les paramètres

Cluster->Parameter Management , ajustez datafile_disk_percentagela valeur à 80, c'est-à-dire que block_filele taux d'occupation du disque est de 80 %.

2 Réduire les réplicas de locataires

Cluster->Tenant Management , sélectionnez le locataire (y compris sysle locataire), sélectionnez la zone dans les détails du réplica, supprimez le réplica (par exemple : zone3) et attendez la fin de la tâche.

3 OBServeur hors ligne

Cluster->Overview , supprimer l'OBServer de la zone3 de la liste OBServer équivaut à désinstaller le service OBServer sur ce nœud et à attendre la fin de la tâche.

4 OBServeur en ligne

À l'heure actuelle, le package d'installation OceanBase du nœud a été désinstallé et l'espace du répertoire associé a également été vidé. Si vous souhaitez utiliser cet OBServer pour vous remettre en ligne, vous devez installer le package RPM d'OceanBase et initialiser les répertoires associés et d'autres opérations.

Étant donné qu'actuellement (version 3.3.3) OCP ne peut pas spécifier de paramètres supplémentaires lors du démarrage du processus OBServer, une opération de ligne de commande sur écran noir est utilisée pour cette étape.

4.1 Installer le package RPM

Utilisez l'utilisateur root.

rpm -ivh oceanbase-3.2.3.3-107050022023040817.el7.x86_64.rpm

4.2 Répertoire d'initialisation

Utilisez l'utilisateur administrateur.

export cluster_name=sit 

mkdir -p /data/1/$cluster_name/{etc3,sort_dir,sstable} 
mkdir -p /data/log1/$cluster_name/{clog,etc2,ilog,slog,oob_clog} 
mkdir -p /home/admin/oceanbase/store/$cluster_name 

chown -R admin:admin /data/1/$cluster_name && chown -R admin:admin /home/admin/oceanbase && chown -R admin:admin /data/log1/$cluster_name 

for t in {etc3,sort_dir,sstable};do ln -sf /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done 
for t in {clog,etc2,ilog,slog,oob_clog}; do ln -sf /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done

4.3 Spécifier les paramètres pour démarrer le processus OBServer

Utilisez l'utilisateur administrateur.

cd /home/admin/oceanbase 
ulimit -s 10240  ##堆栈的最大值
ulimit -c unlimited   ##当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用),这种文件就被称为核心文件(core file)

Démarrez le processus OBServer.

cd /home/admin/oceanbase

/bin/observer -i eth0 -p 2881 -P 2882 -n sit -z zone3 -d /home/admin/oceanbase/store/sit -r '10.186.65.8:2882:2881;10.186.65.123:2882:2881;10.186.65.56:2882:2881' -l info -o 'obconfig_url=http://10.186.65.11:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=ocpmaster&ObRegion=sit,config_additional_dir=/data/1/sit/etc3;/data/log1/sit/etc2,cluster_id=16777777,datafile_disk_percentage=80,cpu_count=16,system_memory=5G'

Valeur de référence du paramètre :

  • -iSpécifiez le nom de la carte réseau, qui peut ifconfigêtre visualisé via la commande.
  • -pSpécifiez le numéro de port de service, généralement 2881.
  • -PSpécifiez le numéro de port RPC, généralement 2882.
  • -nSpécifiez le nom du cluster et gardez-le cohérent avec celui d'origine.
  • -zSpécifiez la zone à laquelle appartient le processus OBServer démarré et gardez-la cohérente avec celle d'origine.
  • -dSpécifiez le répertoire de base du cluster et laissez-le inchangé, à l'exception du nom du cluster.
  • -rPour spécifier la liste RS, vous pouvez afficher le paramètre rootservice_list du cluster actuel.
  • -lSpécifiez le niveau de journalisation, la valeur par défaut est INFO, c'est-à-dire que seules les données de journal des niveaux INFO et supérieurs seront imprimées dans les fichiers journaux observer.log, Election.log et rootservice.log.
  • -oSpécifiez les paramètres de démarrage du cluster, qui doivent être définis en fonction de la situation réelle.
    • obconfig_url: Utilisé pour définir l'adresse URL du service OBConfig, qui doit être cohérente avec celle d'origine.
    • config_additional_dir: Utilisé pour définir plusieurs répertoires pour le stockage local des fichiers de configuration afin de stocker plusieurs fichiers de configuration à des fins de redondance.
    • cluster_id: Spécifiez l'ID du cluster, qui doit être cohérent avec celui d'origine.
    • datafile_disk_percentage: Définit le pourcentage de disque occupé par les données après rétrécissement.
    • cpu_count: Spécifiez le nombre de processeurs, qui est cohérent avec l'original.
    • system_memory: Spécifie la mémoire réservée interne d'OceanBase, qui est cohérente avec l'original.

4.4 Connectez-vous au locataire système du cluster et ajoutez OBServer

alter system add server '10.186.65.56:2882' zone 'zone3';

La page de présentation du cluster OCP actualise la liste OBServer.

4.5 Autres opérations de copie

Répétez les étapes ci-dessus pour réduire les copies des locataires une par une, hors ligne/en ligne sur les autres serveurs OBServers, et terminer les copies des locataires. À ce stade, OceanBase /data/1a terminé la réduction block_file du disque de données.

4.6 Redémarrer le cluster

Enfin, redémarrez le cluster et vérifiez qu'il fonctionne correctement.

Résumer

Cette opération de réduction des fichiers de données équivaut à réinstaller le service OBServer sur chaque nœud du cluster. Elle comporte certains risques dans l'environnement de production. Il est recommandé de faire un bon travail de sauvegarde. Par conséquent, dans le même scénario de panne que celui de cet article, la priorité est donnée à l'existence d'un autre espace disque local (il existe des restrictions réseau sur la transmission du disque de montage NFS, qui ne seront pas prises en compte pour le moment) qui peut être utilisé pour stocker le core et modifiez son chemin de génération.

De plus, datafile_disk_percentagelorsque datafile_sizeles paramètres doivent être augmentés, ils peuvent être ajustés dynamiquement dans le cluster sans redémarrer le cluster. L'ajustement des paramètres à une valeur plus petite n'aura aucun effet.

Pour des articles plus techniques, veuillez visiter : https://opensource.actionsky.com/

À propos de SQLE

SQLE de la communauté open source Axon est un outil d'audit SQL destiné aux utilisateurs et gestionnaires de bases de données qui prend en charge les audits multi-scénarios, les processus en ligne standardisés, la prise en charge native des audits MySQL et les types de bases de données évolutives.

SQLE obtenir

taper adresse
Dépôt https://github.com/actiontech/sqle
document https://actiontech.github.io/sqle-docs/
publier des nouvelles https://github.com/actiontech/sqle/releases
Documentation de développement du plug-in d'audit des données https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
JetBrains lance Rust IDE : RustRover Java 21 / JDK 21 (LTS) GA Avec autant de développeurs Java en Chine, un cadre de développement d'applications au niveau écologique .NET 8 devrait naître. Les performances sont grandement améliorées et elles sont bien en avance sur . NET 7. PostgreSQL 16 est publié par un ancien membre de l'équipe Rust que je regrette profondément et qui a demandé d'annuler mon nom. J'ai terminé la suppression de Nue JS sur le front-end hier. L'auteur a déclaré que je créerais un nouvel écosystème Web. NetEase Fuxi a répondu au décès d'un employé "menacé par les RH à cause d'un BUG". Ren Zhengfei : Nous sommes sur le point d'entrer dans la quatrième révolution industrielle, Apple Est le nouveau produit "v0" de Vercel, professeur de Huawei : Générer un code d'interface d'interface utilisateur basé sur texte
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/actiontechoss/blog/10112046
conseillé
Classement