Maison base de données tutoriel mysql 怎样解决MySQL数据库主从复制延迟的问题_MySQL

怎样解决MySQL数据库主从复制延迟的问题_MySQL

Jun 01, 2016 pm 01:32 PM
facebook 优酷 数据 淘宝

bitsCN.com

怎样解决MySQL数据库主从复制延迟的问题

 

像Facebook、开心001、人人网、优酷、豆瓣、淘宝等高流量、高并发的网站,单点数据库很难支撑得住,WEB2.0类型的网站中使用MySQL的居多,要么用MySQL自带的MySQL NDB Cluster(MySQL5.0及以上版本支持MySQL NDB Cluster功能),或者用MySQL自带的分区功能(MySQL5.1及以上版本支持分区功能),我所知道的使用这两种方案的很少,一般使用主从复制,再加上MySQL Proxy实现负载均衡、读写分离等功能,在使用主从复制的基础上,再使用垂直切分及水平切分;或者不使用主从复制,完全使用垂直切分加上水平切分再加上类似Memcached的系统也可以解决问题。

 

1.优酷的经验

数据库采用水平扩展,主从复制,随着从数据库的增多,复制延迟越来越厉害,最终无法忍受。

最终还是采用数据库的sharding,把一组用户相关的表和数据放到一组数据库上。

使用SSD来优化mysql的I/O,性能提升明显,每块16G,6块SSD做RAID。

数据库的类型选用MYISAM

数据库的拆分策略,先纵向按照业务或者模块拆分。对于一些特别大的表,再采用垂直拆分

根据用户进行分片,尽可能不要跨篇查询。如果确实要跨片查询,可以考虑搜索的方案,先索引再搜索。

分布式的数据库方案太复杂,否掉。

 

优酷使用的是数据库分片技术,而抛弃了由于数据量的越来越多导致复制延迟的问题。按照user_id进行分片,这样必须有一个全局的表来管理用户与shard的关系,根据user_id可以得到share_id,然后根据share_id去指定的分片查询指定的数据。

 

假如此表的表名为sharding_manager,如果网站的用户数太多,比如千万级的或甚至更大比如亿级的用户,此时此表也许也会成为一个瓶颈,因为查询会非常频繁,所有的动态请求都要读此表,这时可以用其它的解决方案,比如用Memcached、Tokyo Cabinet、Berkeley DB或其它的性能更高的方案来解决。

 

具体怎么定位到哪台db服务器,定位到哪个数据库,定位到哪个shard(就是userN,msgN,videoN),优酷网的架构文档中说得不是很仔细,这里只能猜测一下了。

 

根据优酷的架构图,一共有2台db服务器,每台db服务器有2个数据库,每个数据库有3个shard,这样一共是2 * 2 * 3 = 12个shard。

 

user_id一般是自增型字段,用户注册的时候可以自动生成,然后看有几台db服务器,假如有m台db服务器,则用 user_id % m便可以分配一台db服务器(例如0对应100,1对应101,以此类推,字段mysql_server_ip的值确定),假设每台服务器有n个数据库,则用user_id % n可以定位到哪个数据库(字段database_name的值确定),假设每个数据库有i个shard,则用user_id % i可以定位到哪个shard(字段shard_id的值确定),这样就可以进行具体的数据库操作了。

 

user_id share_id mysql_server_ip database_name

101      2           192.168.1.100   shard_db1

105      0           192.168.1.100   shard_db2

108      0           192.168.1.101   shard_db3(或shard_db1)

110      1           192.168.1.101   shard_db4(或shard_db2)

 

如上述user_id为101的用户,连接数据库服务器192.168.1.100,使用其中的数据库为shard_db1,使用其中的表系列为user2,msg2,video2

 

如果上述的m,n,i发生变化,比如网站的用户不断增长,需要增加db服务器,此时则需要进行数据库迁移。

 

因为表位于不同的数据库中,所以不同的数据库中表名可以相同

server1(192.168.1.100)

shard_db1

user0

msg0

video0

user1

msg1

video1

...

userN

msgN

videoN

shard_db2

user0

msg0

video0

user1

msg1

video1

...

userN

msgN

videoN

 

因为表位于不同的数据库服务器中,所以不同的数据库服务器中的数据库名可以相同

server2(192.168.1.101)

shard_db3(这里也可以用shard_db1)

user0

msg0

video0

user1

msg1

video1

...

userN

msgN

videoN

shard_db4(这里也可以用shard_db2)

user0

msg0

video0

user1

msg1

video1

...

userN

msgN

videoN

 

2.豆瓣的经验

由于从主库到辅库的复制需要时间

更新主库后,下一个请求往往就是要读数据(更新数据后刷新页面)

从辅库读会导致cache里存放的是旧数据(不知道这个cache具体指的是什么,如果是Memcached的话,如果更新的数据的量很大,难道把所有更新过的数据都保存在Memcached里面吗?)

解决方法:更新数据库后,在预期可能会马上用到的情况下,主动刷新缓存

不完美,but it works

 

豆瓣后来改为双MySQL Master+Slave说是能解决Replication Delay的问题,不知道是怎么解决的,具体不太清楚。

 

3.Facebook的经验

 

下面一段内容引用自www.dbanotes.net

大量的 MySQL + Memcached 服务器,布署简示:

California (主 Write/Read)............. Virginia (Read Only)

主数据中心在 California ,远程中心在 Virginia 。这两个中心网络延迟就有 70ms,MySQL 数据复制延迟有的时候会达到 20ms. 如果要让只读的信息从 Virginia 端发起,Memcached 的 Cache 数据一致性就是个问题。

 

1 用户发起更新操作,更名 "Jason" 到 "Monkey" ;

2 主数据库写入 "Monkey",删除主端 Memcached 中的名字值,但Virginia 端 Memcached 不删;(这地方在 SQL 解析上作了一点手脚,把更新的操作"示意"给远程);

3 在 Virginia 有人查看该用户 Profile ;

4 在 Memcached 中找到键值,返回值 "Jason";

5 复制追上更新 Slave 数据库用户名字为 "Monkey",删除 Virginia Memcached 中的键值;

6 在 Virginia 有人查看该用户 Profile ;

7 Memcache 中没找到键值,所以从 Slave 中读取,然后得到正确的 "Monkey" 。

Via

 

从上面3可以看出,也仍然存在数据延迟的问题。同时master中数据库更新的时候不更新slave中的memcached,只是给slave发个通知,说数据已经改变了。

 

那是不是可以这样,当主服务器有数据更新时,立即更新从服务器中的Memcached中的数据,这样即使有延迟,但延迟的时间应该更短了,基本上可以忽略不计了。

 

4.Netlog的经验

 

对于比较重要且必须实时的数据,比如用户刚换密码(密码写入 Master),然后用新密码登录(从 Slaves 读取密码),会造成密码不一致,导致用户短时间内登录出错。所以在这种需要读取实时数据的时候最好从 Master 直接读取,避免 Slaves 数据滞后现象发生。还好,需要读取实时数据的时候不多,比如用户更改了邮件地址,就没必要马上读取,所以这种 Master-Slaves 架构在多数情况下还是有效的。

bitsCN.com
Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD
Musée à deux points: toutes les expositions et où les trouver
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Open source! Au-delà de ZoeDepth ! DepthFM : estimation rapide et précise de la profondeur monoculaire ! Open source! Au-delà de ZoeDepth ! DepthFM : estimation rapide et précise de la profondeur monoculaire ! Apr 03, 2024 pm 12:04 PM

0. À quoi sert cet article ? Nous proposons DepthFM : un modèle d'estimation de profondeur monoculaire génératif de pointe, polyvalent et rapide. En plus des tâches traditionnelles d'estimation de la profondeur, DepthFM démontre également des capacités de pointe dans les tâches en aval telles que l'inpainting en profondeur. DepthFM est efficace et peut synthétiser des cartes de profondeur en quelques étapes d'inférence. Lisons ce travail ensemble ~ 1. Titre des informations sur l'article : DepthFM : FastMonocularDepthEstimationwithFlowMatching Auteur : MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Comment obtenir une enveloppe rouge gratuite Taobao 2024 Comment obtenir une enveloppe rouge gratuite Taobao 2024 May 09, 2024 pm 03:22 PM

L'événement de commande gratuite Taobao 2024 aura lieu trois fois par jour. Vous devez passer une commande et payer la quantité correspondante de marchandises à l'heure correspondante. Le montant de la commande gratuite sera distribué sous forme d'enveloppes rouges de montants égaux. Ensuite, je vais vous expliquer comment recevoir l'enveloppe rouge de commande gratuite Taobao en 2024 : récupérez-la. Pour les utilisateurs gratuits, la qualification d'enveloppe rouge sera délivrée au package carte et coupon, qui est en état d'activation ; la version Web de Taobao ne dispose actuellement pas du package de cartes et de coupons et affiche uniquement les enregistrements gagnants de l'événement de commande gratuite ; le package de cartes et de coupons se trouve dans [Taobao APP-Mon Taobao] -Mes droits-Enveloppe rouge]. Comment obtenir des enveloppes rouges pour des commandes gratuites sur Taobao 20241. Pour les utilisateurs qui obtiennent des commandes gratuites, les qualifications de l'enveloppe rouge seront distribuées aux packages de cartes et de coupons, qui sont en attente d'activation 2. La version Web de Taobao ; n'a actuellement pas de packages de cartes et de coupons et affiche uniquement les enregistrements gagnants des activités de commande gratuites ;3. Le package de coupons de cartes se trouve dans [Taobao APP-My Taobao-Mes droits-Enveloppe rouge]

Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Apr 01, 2024 pm 07:46 PM

Les performances de JAX, promu par Google, ont dépassé celles de Pytorch et TensorFlow lors de récents tests de référence, se classant au premier rang sur 7 indicateurs. Et le test n’a pas été fait sur le TPU présentant les meilleures performances JAX. Bien que parmi les développeurs, Pytorch soit toujours plus populaire que Tensorflow. Mais à l’avenir, des modèles plus volumineux seront peut-être formés et exécutés sur la base de la plate-forme JAX. Modèles Récemment, l'équipe Keras a comparé trois backends (TensorFlow, JAX, PyTorch) avec l'implémentation native de PyTorch et Keras2 avec TensorFlow. Premièrement, ils sélectionnent un ensemble de

Comment désactiver le rappel d'enveloppe rouge sur Taobao Comment désactiver le rappel d'enveloppe rouge sur Taobao Apr 01, 2024 pm 06:25 PM

Taobao est un logiciel d'achat en ligne couramment utilisé par de nombreux amis. Vous passez généralement des commandes et achetez beaucoup de choses sur Taobao. Il offre aux utilisateurs une fonction de rappel d'enveloppe rouge. Certains amis souhaitent le désactiver, alors dépêchez-vous et consultez le PHP chinois. site Internet. Liste des étapes pour désactiver les rappels d'enveloppes rouges sur Taobao 1. Ouvrez le centre personnel de l'application Taobao et sélectionnez le bouton [Paramètres] pour accéder à la page. 2. Recherchez l'option [Notification de message] Ici, vous pouvez sélectionner le bouton-poussoir de message, rechercher le message de l'enveloppe rouge et éteindre le commutateur. 3. Ou vous pouvez désactiver l'autorisation de notification de l'application Taobao via la page des paramètres de votre téléphone mobile, afin que tous les messages de Taobao n'entrent pas dans le push et ne puissent être vus qu'après l'avoir allumé. 4. Les utilisateurs peuvent définir les types de messages qu'ils souhaitent recevoir, ce qui facilite leur utilisation.

Vitesse Internet lente des données cellulaires sur iPhone : correctifs Vitesse Internet lente des données cellulaires sur iPhone : correctifs May 03, 2024 pm 09:01 PM

Vous êtes confronté à un décalage et à une connexion de données mobile lente sur iPhone ? En règle générale, la puissance de l'Internet cellulaire sur votre téléphone dépend de plusieurs facteurs tels que la région, le type de réseau cellulaire, le type d'itinérance, etc. Vous pouvez prendre certaines mesures pour obtenir une connexion Internet cellulaire plus rapide et plus fiable. Correctif 1 – Forcer le redémarrage de l'iPhone Parfois, le redémarrage forcé de votre appareil réinitialise simplement beaucoup de choses, y compris la connexion cellulaire. Étape 1 – Appuyez simplement une fois sur la touche d’augmentation du volume et relâchez-la. Ensuite, appuyez sur la touche de réduction du volume et relâchez-la à nouveau. Étape 2 – La partie suivante du processus consiste à maintenir le bouton sur le côté droit. Laissez l'iPhone finir de redémarrer. Activez les données cellulaires et vérifiez la vitesse du réseau. Vérifiez à nouveau Correctif 2 – Changer le mode de données Bien que la 5G offre de meilleures vitesses de réseau, elle fonctionne mieux lorsque le signal est plus faible

La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. Apr 29, 2024 pm 06:55 PM

Je pleure à mort. Le monde construit à la folie de grands modèles. Les données sur Internet ne suffisent pas du tout. Le modèle de formation ressemble à « The Hunger Games », et les chercheurs en IA du monde entier se demandent comment nourrir ces personnes avides de données. Ce problème est particulièrement important dans les tâches multimodales. À une époque où rien ne pouvait être fait, une équipe de start-up du département de l'Université Renmin de Chine a utilisé son propre nouveau modèle pour devenir la première en Chine à faire de « l'auto-alimentation des données générées par le modèle » une réalité. De plus, il s’agit d’une approche à deux volets, du côté compréhension et du côté génération, les deux côtés peuvent générer de nouvelles données multimodales de haute qualité et fournir un retour de données au modèle lui-même. Qu'est-ce qu'un modèle ? Awaker 1.0, un grand modèle multimodal qui vient d'apparaître sur le Forum Zhongguancun. Qui est l'équipe ? Moteur Sophon. Fondé par Gao Yizhao, doctorant à la Hillhouse School of Artificial Intelligence de l’Université Renmin.

L'US Air Force présente son premier avion de combat IA de grande envergure ! Le ministre a personnellement effectué l'essai routier sans intervenir pendant tout le processus, et 100 000 lignes de code ont été testées 21 fois. L'US Air Force présente son premier avion de combat IA de grande envergure ! Le ministre a personnellement effectué l'essai routier sans intervenir pendant tout le processus, et 100 000 lignes de code ont été testées 21 fois. May 07, 2024 pm 05:00 PM

Récemment, le milieu militaire a été submergé par la nouvelle : les avions de combat militaires américains peuvent désormais mener des combats aériens entièrement automatiques grâce à l'IA. Oui, tout récemment, l’avion de combat IA de l’armée américaine a été rendu public pour la première fois, dévoilant ainsi son mystère. Le nom complet de ce chasseur est Variable Stability Simulator Test Aircraft (VISTA). Il a été personnellement piloté par le secrétaire de l'US Air Force pour simuler une bataille aérienne en tête-à-tête. Le 2 mai, le secrétaire de l'US Air Force, Frank Kendall, a décollé à bord d'un X-62AVISTA à la base aérienne d'Edwards. Notez que pendant le vol d'une heure, toutes les actions de vol ont été effectuées de manière autonome par l'IA ! Kendall a déclaré : "Au cours des dernières décennies, nous avons réfléchi au potentiel illimité du combat air-air autonome, mais cela a toujours semblé hors de portée." Mais maintenant,

Comment diffuser des vidéos « Youku » sur un téléviseur Comment diffuser des vidéos « Youku » sur un téléviseur Apr 11, 2024 pm 08:20 PM

La technologie moderne nous permet de profiter de plus de commodités, et diffuser des vidéos Youku sur la télévision nous permet de nous immerger dans l'expérience audiovisuelle sur grand écran à la maison. Alors, savez-vous comment faire ça ? Ce qui suit vous donnera une introduction détaillée aux méthodes et étapes de diffusion de vidéos Youku sur votre téléviseur. Comment diffuser des vidéos Youku sur un téléviseur 1. Tout d'abord, ouvrez l'application Youku Video, entrez dans la page principale et sélectionnez [Vidéo] pour lire ; 2. Entrez ensuite dans la page de lecture et cliquez sur le bouton [Computer Screen Cast] en haut ; Connectez-vous ensuite aux deux appareils. Lorsque vous connectez des appareils, assurez-vous de garder votre téléphone et votre ordinateur connectés au même réseau ; 4. Une fois la connexion réussie, vous pouvez également choisir la résolution de l'écran. 5. Cliquez sur [Changer] d'appareil pour afficher l'écran. 6. enfin l'appareil auquel vous êtes connecté pour la capture d'écran ;

See all articles