|       mysql replication 中主从延迟是一个比较常见的问题,请看前期一篇博文:怎样解决MySQL数据库主从复制延迟的问题。根据目前有些公司使用的方案,最近测试了两个,其中之一是阿里的relay fetch ,业绩说法数据预热,当然也有其他开源类似开源工具,目前诸如mk-slave-prefetch及replication-prefetch等,感兴趣可以去看看。整理的文档主要是参考了官方的《relay fetch 读取本地binlog 进行备库预热》,有些图片直接引用,还有文字,与官方不同的是安装过程中出现的问题及解决方式,归纳如下: 
 基本思路原理  在备库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 测试效果    这个效果不明显,可能机器原因(本人测试256内存虚拟机)。请参考官方测试吧     |