relay fetch解决mysql replication主从延迟_MySQL
bitsCN.com
relay fetch解决mysql replication主从延迟
Mysql复制单线程的本质意味着从服务器效率的降低,即使从服务器有很多磁盘、cpu、和内存,也很容易落后于主服务器,因为从服务器的单线程只能有效的使用一个cpu和磁盘。
从服务器上的锁定也是一个问题,运行在从服务器上的另外的查询也会加锁并阻塞复制线程。复制是单线程,复制线程(sql_thread)除了等待也不能做别的事情。
为了解决这个问题,业界开发了一些补丁解决这类问题,一个思路是由复制单线程改进为多线程。另外一种是在从服务器上通过并行IO把数据预先提取到内存中。
这个主意的想法是通过程序,让他比从服务器的sql线程稍微提前一点在中继日志中读取到查询语句,并将其作为select语句来执行,这导致服务器把一些数据从磁盘读取到内存,因此当从服务器的sql线程从中继日志中执行命令的时候,它就不需要等待从磁盘读取数据。Select并行处理从服务器必须串行处理的I/O。
程序应该在sql线程前多久执行这个是要确定的问题。提前太多,提取到缓存到的数据会被清空。可以尝试几秒钟,或者中继日志中相同的字节数
Io密集型从服务器利用这个方案将取得明显效果。
广泛分布的单行update命令和delete命令操作,数据预热效果明显,大批量的insert命令可能不会有太大明显提高。
基本思路原理
在备库sql线程执行更新之前,预先将相应的数据加载到内存中,并不能提高sql_thread线程执行sql的能力,也不能加快io_thread线程读取日志的速度。
限制
1 目前仅支持主库binlog ROW模式
2 表需要有主键或唯一索引
3 忽略test和mysql数据库
4 如果数据库中存在类似tbname_1、tbname_2这样命名的多个表,但其表模式却不相同时,请加上-t选项,例如:tb_1 tb_2 tb_3这样命名的三个表,默认情况下,被认为是同样模式的表,这个特点是淘宝为了适应他们自己的数据库环境
5 默认最多支持10000个用户表,如果学员支持更多表,可以通过修改宏MAX_TABLE_NUM来进行调整。
获取源码
安装svn客户端从下列地址获取源码:
svn checkout http://relay-fetch.googlecode.com/svn/trunk/
安装编译:
make
make的时候需要根据mysql安装环境修改Makefile配置文件,relay-fetch依赖mysql的lib库文件等,gcc编译的时候指定,如下红色标示部分:
#locate your libmysqlclient_r.so
all:
gcc -g -O0 -Wall-o relayfetch relayfetch.c -I/usr/local/mysql/include/-L/usr/local/mysql/lib -lmysqlclient_r -lpthread
clean:
rm -rf *.orelayfetch
32位系统安装有warning ,如下
relayfetch.c: In function ‘daemon_rf’:
relayfetch.c:2599: warning: format ‘%lu’ expects type ‘longunsigned int’, but argument 4 has type ‘long long unsigned int’
relayfetch.c:2599: warning: format ‘%lu’ expects type ‘longunsigned int’, but argument 4 has type ‘long long unsigned int’
不是错误error,没有太多影响
安装完毕,在安装目录下运行./relayfetch –h,了解一下relayfetch 常用参数,如果报如下错误error while loading shared libraries: libmysqlclient.so.16/18:cannot open shared object file
应该是mysql的lib库文件引用问题,建立如下类似软链接
32位
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
64位
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
使用
运行: ./relayfetch -h来获取选项
主要选项包括:
-d debug
-D 后台运行
-p 密码
-u 用户名,请以root用户运行
-P mysqld端口号
-s 整数,单位为M,当read线程超过sql线程position这么多字节数时,会等待sql线程,默认为1M
-S mysql sock文件路径
-n worker线程数目。默认为5
-a 当seconds_behind_master大于这个值时,会唤醒relayfetch,默认为1s
-t 当使用该选项时,表明不使用分表规则(例如,表name_1 和表name_2会被视为同一类表)
我们可以通过端口号来运行
./relayfetch-uroot -t -P3306
或者通过sock来运行
./relayfetch-S /u01/mysql/run/mysql.sock -uroot
测试效果
bitsCN.com

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Solution : 1. Vérifiez les paramètres d'eMule pour vous assurer que vous avez entré l'adresse du serveur et le numéro de port corrects ; 2. Vérifiez la connexion réseau, assurez-vous que l'ordinateur est connecté à Internet et réinitialisez le routeur ; est en ligne. Si vos paramètres sont S'il n'y a pas de problème avec la connexion réseau, vous devez vérifier si le serveur est en ligne ; 4. Mettez à jour la version d'eMule, visitez le site officiel d'eMule et téléchargez la dernière version du logiciel eMule ; 5. Demandez de l'aide.

Que dois-je faire si le serveur RPC est indisponible et n'est pas accessible sur le bureau Ces dernières années, les ordinateurs et Internet ont pénétré tous les recoins de nos vies. En tant que technologie de calcul centralisé et de partage de ressources, l'appel de procédure à distance (RPC) joue un rôle essentiel dans la communication réseau. Cependant, nous pouvons parfois rencontrer une situation dans laquelle le serveur RPC n'est pas disponible, ce qui entraîne l'impossibilité d'accéder au bureau. Cet article décrit certaines des causes possibles de ce problème et propose des solutions. Tout d’abord, nous devons comprendre pourquoi le serveur RPC n’est pas disponible. Le serveur RPC est un

En tant qu'utilisateur LINUX, nous devons souvent installer divers logiciels et serveurs sur CentOS. Cet article présentera en détail comment installer Fuse et configurer un serveur sur CentOS pour vous aider à effectuer les opérations associées en douceur. Installation de CentOS fuseFuse est un cadre de système de fichiers en espace utilisateur qui permet aux utilisateurs non privilégiés d'accéder et de faire fonctionner le système de fichiers via un système de fichiers personnalisé. L'installation de Fuse sur CentOS est très simple, suivez simplement les étapes suivantes : 1. Ouvrez le terminal et connectez-vous en tant que. utilisateur root. 2. Utilisez la commande suivante pour installer le package fuse : ```yuminstallfuse3. Confirmez les invites pendant le processus d'installation et entrez `y` pour continuer. 4. Installation terminée

Le rôle d'un relais DHCP est de transmettre les paquets DHCP reçus vers un autre serveur DHCP du réseau, même si les deux serveurs se trouvent sur des sous-réseaux différents. En utilisant un relais DHCP, vous pouvez déployer un serveur DHCP centralisé dans le centre réseau et l'utiliser pour attribuer dynamiquement des adresses IP à tous les sous-réseaux/VLAN du réseau. Dnsmasq est un serveur de protocole DNS et DHCP couramment utilisé qui peut être configuré en tant que serveur relais DHCP pour faciliter la gestion des configurations d'hôtes dynamiques sur le réseau. Dans cet article, nous allons vous montrer comment configurer Dnsmasq comme serveur relais DHCP. Sujets de contenu : Topologie du réseau Configuration d'adresses IP statiques sur un relais DHCP D sur un serveur DHCP centralisé

Dans la transmission de données sur réseau, les serveurs proxy IP jouent un rôle important, aidant les utilisateurs à masquer leurs véritables adresses IP, à protéger la confidentialité et à améliorer la vitesse d'accès. Dans cet article, nous présenterons le guide des meilleures pratiques sur la façon de créer un serveur proxy IP avec PHP et fournirons des exemples de code spécifiques. Qu'est-ce qu'un serveur proxy IP ? Un serveur proxy IP est un serveur intermédiaire situé entre l'utilisateur et le serveur cible. Il agit comme une station de transfert entre l'utilisateur et le serveur cible, transmettant les demandes et les réponses de l'utilisateur. En utilisant un serveur proxy IP

Les méthodes permettant d'afficher l'état du serveur incluent des outils de ligne de commande, des outils d'interface graphique, des outils de surveillance, des fichiers journaux et des outils de gestion à distance. Introduction détaillée : 1. Utilisez les outils de ligne de commande. Sur les serveurs Linux ou Unix, vous pouvez utiliser les outils de ligne de commande pour afficher l'état du serveur ; 2. Utilisez les outils d'interface graphique. Pour les systèmes d'exploitation de serveur dotés d'interfaces graphiques, vous pouvez utiliser les graphiques. fourni par le système. Utilisez les outils d'interface pour afficher l'état du serveur ; 3. Utilisez des outils de surveillance. Vous pouvez utiliser des outils de surveillance spéciaux pour surveiller l'état du serveur en temps réel, etc.

Les étapes pour démarrer le serveur TFTP comprennent la sélection du logiciel du serveur TFTP, le téléchargement et l'installation du logiciel, la configuration du serveur TFTP, ainsi que le démarrage et le test du serveur. Introduction détaillée : 1. Lors du choix du logiciel serveur TFTP, vous devez d'abord choisir le logiciel serveur TFTP qui correspond à vos besoins. Actuellement, il existe de nombreux logiciels serveur TFTP parmi lesquels choisir, tels que Tftpd32, PumpKIN, tftp-hpa, etc. qui offrent tous des fonctions d'interface et de configuration simples et faciles à utiliser ; 2. Téléchargez et installez le logiciel serveur TFTP, etc.

Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Ce problème a dû être rencontré par de nombreux amis. Lorsque cette invite apparaît, le jeu authentique ne peut pas être démarré. Ce problème est généralement dû à des interférences du réseau et du logiciel de sécurité. Alors, comment doit-il être résolu ? J'aimerais partager la solution avec vous, j'espère que le didacticiel logiciel d'aujourd'hui pourra vous aider à résoudre le problème. Que faire si le serveur Epic ne peut pas accéder au jeu lorsqu'il est hors ligne : 1. Il peut être interféré par un logiciel de sécurité. Fermez la plateforme de jeu et le logiciel de sécurité, puis redémarrez. 2. La seconde est que le réseau fluctue trop. Essayez de redémarrer le routeur pour voir s'il fonctionne. Si les conditions sont correctes, vous pouvez essayer d'utiliser le réseau mobile 5g pour fonctionner. 3. Alors il y en aura peut-être plus
