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
. :
- Le fichier principal n'est pas entièrement écrit et un fichier principal incomplet rend difficile l'analyse de la cause de l'échec.
- 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_percentage
la valeur à 80, c'est-à-dire que block_file
le 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 sys
le 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 :
-i
Spécifiez le nom de la carte réseau, qui peutifconfig
être visualisé via la commande.-p
Spécifiez le numéro de port de service, généralement 2881.-P
Spécifiez le numéro de port RPC, généralement 2882.-n
Spécifiez le nom du cluster et gardez-le cohérent avec celui d'origine.-z
Spécifiez la zone à laquelle appartient le processus OBServer démarré et gardez-la cohérente avec celle d'origine.-d
Spécifiez le répertoire de base du cluster et laissez-le inchangé, à l'exception du nom du cluster.-r
Pour spécifier la liste RS, vous pouvez afficher le paramètre rootservice_list du cluster actuel.-l
Spé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.-o
Spé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/1
a 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_percentage
lorsque datafile_size
les 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 |