Maison  >  Article  >  Partage d'expérience : résumé de trois années de DBA chez Ganji.com

Partage d'expérience : résumé de trois années de DBA chez Ganji.com

PHPz
PHPzoriginal
2017-02-15 15:25:372711parcourir

J'ai rejoint Gongji début 2013. A cette époque, j'étais dans une phase de croissance rapide du trafic. J'ai beaucoup gagné au cours de mes trois années de carrière DBA, mais en fait il y a eu plus d'embûches (larmes... Plus tard. , quand je faisais du développement, j'ai progressivement pris conscience du « fonctionnement et maintenance » et Il y a effectivement un problème de communication dans le « développement » : comment le résoudre ? , et vous pouvez trouver immédiatement des points communs

Planification, conception, gestion, migration des systèmes de bases de donnéesMaintenance quotidienne, sauvegarde, optimisation et récupération de la base de données

Construction d'une architecture maître-esclave et maintenance

Support en ligne du système d'entreprise, révision de la conception de la base de données, fourniture de solutions d'architecture

La base de données ne se limite pas à MySQL, Oracle, si elle n'est pas divisée en détails, il y aura également Redis, MongoDB et une série de NoSQL. Le contenu du travail est le même. Le premier est la haute disponibilité et la stabilité. Il ne peut pas être ébranlé aujourd'hui et demain. Le second est la sécurité des données, comme la sauvegarde et la récupération. audit de marché annuel et utilisateurs actifs sur le terminal mobile. Les données sont restaurées à partir de la sauvegarde. On voit que l'efficacité de la sauvegarde est la priorité absolue. La dernière est bien sûr de servir l'entreprise et de répondre aux besoins de l'entreprise. .On ne peut pas faire grève juste parce que notre vie personnelle est interrompue. On m'a appelé juste après avoir regardé un film. Quand je retourne gérer l'alarme DB, j'ai envie de gronder ma mère

Tragique. cas

Laissez-moi vous donner quelques cas tragiques pour faire plaisir aux juges~ Puisque l'entreprise a disparu depuis longtemps

1.

C'est la faute du camarade de classe de voiture d'occasion si le SQL a été mal orthographié sans la condition où, et il y a eu une erreur lors de l'écriture du script hors ligne... Enfin, le DBA a été restauré sur la base de. le binlog de ligne. Au moins 2 fois :(

Réflexion : rd Les débutants se succèdent, et cela ne sert à rien peu importe le nombre de spécifications données. Il n'y a qu'une seule solution la plus complète, se connecter au proxy. , restreindre tous les SQL illégaux De plus, la 3ème vérification en ligne n'est pas en place, et il doit manquer quelque chose dans la révision du code

2 Le problème des gros vendeurs

L'immobilier a ouvert un port franc en 2014. En quelques mois seulement, le tableau des affaires immobilières a explosé à 100G, et certains comptes intermédiaires ont affiché plus de 10W, provoquant une gigue anormale de la base de données. a finalement passé trois mois à affiner la table. , diviser le champ de texte

Réflexion : surveillance insuffisante par DBA des grandes tables

3. 🎜>

Le propriétaire principal du site La bibliothèque a été bloquée par une sous-requête. Après enquête, il a été constaté que ce type de problème était causé par un grand nombre de sous-requêtes dans RD. De nombreux RD ont écrit des requêtes. au maître qui aurait dû lire l'esclave, mais cela n'a pas causé d'accident.

Réflexion : Ganji DB typique 1 maître N esclave, sans protection proxy, de tels problèmes se produisent souvent, qui ne peuvent pas être résolus par le système standard. seul

4. Signaler un problème de bibliothèque olap

RP Kuwo et Wenwu en ont pris la responsabilité, et leur performance à la fin de l'année était au plus bas. Le RD avant la prise de contrôle de Wenwu a développé lui-même le système de reporting des commerçants intermédiaires. Lorsque le port libre a été ouvert, les verrous de lecture-écriture de MyISAM ont provoqué le blocage d'un grand nombre de requêtes. J'ai entendu dire que l'entreprise avait indemnisé les commerçants à hauteur de 300 W en raison de problèmes de reporting continus.

Réflexion : Cet accident doit être vu de haut. Le port franc a été ouvert trop brusquement, et le responsable technique du projet n'a pas terminé le test. Le système de reporting n'a pas été conçu et est entièrement géré par un nouveau RD, qui n'est qu'un diplômé universitaire, Hadoop Spark peut entièrement le gérer. En fin de compte, le DBA n’a pas réussi à suivre la grande table à temps et ne l’a pas découverte à l’avance.

5. 50G Redis

Le secteur immobilier Redis a explosé de 20G à 50G, et il n'a pas été optimisé depuis mon départ. Plus tard, il y a eu une panne et les données ont été effacées ?

Mon travail

Je passe la plupart de mon temps à communiquer avec les développeurs et à discuter de la vie après la mise en ligne d'Automan, peu de gens sont venus me voir ~ Il y a une croissance à chaque fois. Il y a des gens et des choses pour lesquels je suis reconnaissant. Aller au marché me donne une plateforme pour faire les choses qui m'intéressent. Je suis très heureux.

Quand je suis arrivé sur le marché, SQL était encore en ligne sur jira. La semi-automatisation était réalisée par les étudiants en développement d'exploitation et de maintenance. Elle était souvent mentionnée dans le groupe technique de création de table simple ou de DML. être effectué manuellement par le DBA. L'intervention est très ennuyeuse. De plus, de nombreuses instructions de création de table n'étaient pas standardisées et étaient renvoyées au RD pour modification. Ils en étaient très mécontents et pensaient que les modifications n'avaient pas d'importance. Cela entraînait des coûts de communication entre RD et DBA. faites également du développement de bases de données régulièrement et puis rien de plus.

J'ai commencé le développement de la plateforme Automan à la mi-2014, de la page front-end à la file d'attente des messages back-end, en passant par l'analyse de l'analyseur SQL, à partir de zéro, et je l'ai finalement terminé en ligne avec l'aide d'un camarade de classe. Liu Jun Xianhe. La plateforme examine le SQL développé, passe par l'environnement de simulation de simulation, puis effectue automatiquement une sauvegarde en ligne, ce qui est bien plus efficace qu'un travail manuel.

Le principe de ce système est similaire à d'autres outils du marché, avec quelques améliorations majeures. Plus tard, je l'ai partagé une fois lors d'une conférence sur les bases de données et j'avais peur de ne pas être critiqué.

Expérience DBA

Consolider les fondations : La fondation de DB est naturellement stable, stable, puis stable. Lorsqu’il y a trop d’instances, diverses pannes seront rencontrées pratiquement chaque jour. Si le maître échoue, utilisez la commutation MHA (la dernière a gtid). Si l'esclave échoue, lvs supprimera automatiquement le trafic de lecture. Un autre élément est la sauvegarde, les tests de validité de sauvegarde entièrement incrémentiels et réguliers, chaque élément nécessite un investissement humain.

Priorité matérielle : il existe deux manières d'étendre la capacité de la base de données : la mise à l'échelle et la mise à l'échelle. Généralement, la priorité est donnée au matériel. Si le tampon n'est pas suffisant, ajoutez plus de mémoire. Si 128 Go ne suffisent pas, utilisez 192 Go. Si les performances de la carte réseau de disques ne sont pas bonnes, utilisez un SSD. Sinon, utilisez une carte flash. Bref, donnez la priorité aux tests du matériel du filtre et gagnez du temps pour l'optimisation de l'architecture.

Préparez-vous à affronter les mauvais jours : optimisez le SQL lent, publiez régulièrement des rapports pour que RD puisse les régler, généralement le problème est que l'index n'est pas ajouté, 99 % des gros SQL sont comme ça, une petite partie de celui-ci est dû à une conception de table déraisonnable (pas d'auto-incrémentation) clé primaire, ou fréquemment modifiée). Surveiller de grandes tables, alléger si nécessaire, diviser les champs si nécessaire, à la fois horizontalement et verticalement, archiver régulièrement les données expirées, voilà en gros les choses.

Combiné avec le business : certaines optimisations fatiguent à mort le DBA, il vaut donc mieux que le RD modifie une ligne de code. Les administrateurs de base de données devraient également avoir plus de contacts avec l'entreprise et comprendre la mise en œuvre de l'entreprise. Ils n'ont pas besoin de contribuer beaucoup à l'entreprise et ne prennent pas la responsabilité... Je plaisante. Comprendre les affaires vous permet de penser dans une perspective plus élevée, ce qui est très significatif.

Apprenez à dire non : Ce rejet ne consiste pas à faire grève et à ne pas travailler, mais à distinguer le caractère raisonnable et l'urgence des besoins. Ceux qui sont déraisonnables et non urgents peuvent être traités directement. urgent mais déraisonnable peut être temporairement résolu et résolu rapidement. Le problème peut être corrigé plus tard. Par exemple, olap s'exécute dans une bibliothèque en ligne, count(*) counting SQL peut exécuter des compteurs de manière asynchrone et Redis est une bonne chose.

Apprendre à communiquer : je travaille depuis quelques années, j'apprends encore cela et j'ai commis de nombreuses erreurs. Communiquer les droits et les responsabilités et établir un calendrier.

Apprentissage pratique : avec le recul, les administrateurs de base de données ne fonctionnaient pas assez bien à l'époque. Certaines des raisons étaient dues au manque de capacités de développement, et de nombreuses idées s'en sont arrêtées là. Le personnel d'exploitation et de maintenance doit avoir des compétences de développement et être plus sophistiqué que les diététistes en entreprise afin de faire un bon travail d'exploitation et de maintenance.

Les contradictions et contradictions de l'exploitation et de la maintenance RD

Les KPI sont différents, et l'accent est naturellement différent Les étudiants de première ligne manquent également d'expérience, en particulier ceux qui. Je viens de commencer à travailler depuis 1 à 2 ans, ce qui entraîne une asymétrie d'information et de connaissances. Il n'est pas difficile de résoudre ce problème :

Les nouveaux arrivants ont besoin d'être guidés par des mentors. Il serait tout à fait irresponsable de les laisser tranquilles. Je me sens bien, j’ai fait du bon travail dans cet aspect. Vous devez toujours féliciter quand vous le méritez.

L'équipe d'assistance doit disposer d'une documentation commerciale wiki suffisante.

L'automatisation est limitée par la technologie et non par le travail manuel. Les interfaces métier sont plus contraintes qu’auparavant, et désormais tous les services utilisent l’épargne.

Le souvenir d'être allé au marché est devenu de plus en plus flou, seulement...

Après avoir rédigé une partie du résumé, mes anciens collègues ont dit que j'en avais manqué, je vais donc tous les annexer jusqu'à la fin. , le droit d'auteur ne m'appartient pas :)

20170214 Le contenu suivant provient d'un ancien collègue : Li Rui

Réminiscences de DBA la vie au marché

Pour résumer, il y a de nombreux défauts, qui doivent être traités à tout moment. Ceux-ci seront un peu meilleurs jusqu'à ce qu'automan sorte et oblige rd à se connecter via le. plate-forme.

En raison du problème de raid0, j'ai rencontré des problèmes avec le disque dur maître au moins 4 à 5 fois et j'ai eu besoin d'un traitement urgent.

tg l'a rencontré une fois, ms cut times, cela semble être un problème de disque.

Les autres machines de sauvegarde esclaves ont plus de pannes de disque dur et jusqu'à 4 problèmes de disque doivent être traités par semaine. Le mysqldb dans Ganji a généralement une taille d'au moins 100 Go et le disque de la base de données du rapport de données est de 2,3 To. Il est impossible de restaurer la base de données esclave via une sauvegarde. Il m'a fallu 2 à 3 semaines pour le faire

<.>

Je suis un problème d'échange

Je suis le problème d'échange est définitivement un problème SQL. La requête SQL principale consiste à obtenir des données par ordre et par nombre. Ce problème est insoluble depuis le moment où je l'ai utilisé. Je suis allé au marché au moment où j'en suis sorti. La seule façon de résoudre le problème de swap consiste à basculer manuellement le trafic vers LVS, à redémarrer l'esclave, puis à rebasculer le trafic vers LVS. Près de 1 à 2 fois par semaine sont nécessaires. J'ai parlé à plusieurs reprises à des collègues de messagerie instantanée des problèmes de IM SQL, dans l'espoir de créer un compteur pour la requête de comptage, mais au final, rien ne s'est produit. Désactivez le swap car vous craignez que le serveur tombe fréquemment en panne. Enfin, après l'arrivée de son camarade de classe Zhao Shenju, après avoir activé le paramètre de préchauffage innodb_buffer_pool, l'esclave peut être redémarré directement sans craindre une augmentation soudaine de la charge due au préchauffage. D'autres camarades de classe, Zhao Shenju, ont modifié la mémoire limite numérique, mais l'échange im n'a finalement pas été résolu.

Sauvegarde

Problèmes de sauvegarde, 1 est un problème d'espace disque et 1 est un problème raid0. .

Après votre départ, j'ai subvenu à mes besoins de manière indépendante pendant un mois jusqu'à l'arrivée de Bi Changqi. Il y avait 6 ou 7 machines de sauvegarde, et les disques durs sont tombés en panne les uns après les autres. Bibliothèque de journaux, emp et groupe Wang Xufeng, j'ai oublié le nom du secteur d'activité, les données sont passées à 800 Go, la machine de sauvegarde était en panne et l'espace était insuffisant. J'ai simplement arrêté la sauvegarde, et n'ai finalement assuré que la sauvegarde de certaines bases de données volumineuses comme ms, hp, tg et tc. Ce collègue de 58 ans sera probablement méprisé par eux après sa prise de fonction.

En fait, après l'arrivée de la machine de sauvegarde 32T de Huawei, le mécanisme de sauvegarde devrait être modifié.

Il y a aussi des sauvegardes hors machine Tous les 2 mois, les quatre disques 2T seront pleins. , remplacez, déplacez le disque, montez manuellement le disque RAID et enregistrez manuellement dans Excel. En fin de compte, ces disques ont en réalité été utilisés pour rechercher des données.

Problème de disque

Hp dispose de deux grandes tables et les données doivent être nettoyées régulièrement. Le disque Ms croît à un rythme de 10G par jour, et Ms nécessite une carte PCIe. Enfin, il peut être étendu de 800 à 1200. Cela peut durer plusieurs mois. Mme possède plusieurs machines, et au final, il ne leur manque que 10 Go environ pour être pleines. Toutes sortes de suppression de journaux, toutes sortes de déplacements de données et compensation du mur est (je sais que l'utilisation d'un SSD de 400 Go avec xfs peut économiser 20 Go d'espace par rapport à ext4, ce qui est juste suffisant pour ms). le disque grossit, la machine de sauvegarde n'a pas suffisamment d'espace disque et la machine SIM (qui fournit des services en lecture seule pour le développement, j'ai oublié comment elle s'appelle) n'a pas suffisamment d'espace. Il existe également une bibliothèque de rapports que je souhaite utiliser pour les disques et les serveurs, mais il n'y a pas d'espace dans l'armoire. Je viens de fonctionner avec une seule bibliothèque depuis longtemps.

De plus, le SQL généré par le groupe Wang Xufeng et tc via le framework

génère des sous-tableaux redondants. Les conditions de champ de type varchar n'ajoutent pas de guillemets simples, et la création de table en ligne n'ajoute pas. index. , SQL doit être vérifié régulièrement et optimisé.

HP douloureux, division de la bibliothèque principale.

Cela a pris plus d'un an et n'a pas été complètement divisé. Enfin, Bi Changqi m'a dit que les voitures d'occasion Guazi avaient été séparées de ces entrepôts. Division forcée de haut en bas. Divisé en 1-2 jours.

Connexion PHP courte, le nombre de connexions est plein

Ce dernier, après votre départ, j'ai parfois analysé le journal hp complet et j'ai trouvé que hp tous les 1- Connexion 2 fois, accompagnée d'une connexion vide. Connect ne fait rien. Je ne sais pas ce qui a causé ce problème. Après l'avoir corrigé, le problème du nombre de connexions HP a été résolu.

Pour résumer, à Ganji, en raison de la montée en flèche des données, nous avons simplement répondu aveuglément et n'avons pas coupé le nœud rapidement et réalisé des retombées. De plus, il est vraiment nécessaire d'avoir une plateforme DBA pour gérer la surveillance et soumettre SQL pour révision. Ce n'est que plus tard que j'ai pu l'écrire à contrecœur en imitant Automan.

L'article est rédigé par Zerun, un internaute du site Web chinois php Veuillez indiquer lors de la réimpression l'adresse de cet article : http://www.php.cn/toutiao-352102.html

.
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn