`
丁林.tb
  • 浏览: 798418 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL主从同步加速 Transfer-- FAQ

阅读更多

 

Q: Transfer是什么

A: 是一个解决MySQL原生主从同步延迟的方案。 Transfer本身是一个在MySQL源码上打的patch,可以用于当Slave,也可以用于当第三方工具,将Master的数据同步发给Slave。 利用多线程实现主从无延迟。

 

Q: Transfer目前的发布形式?

A: 目前的发布形式是可执行的mysqld文件。

最后更新日期 2013-12-01

Transfer.2.3 下载地址 

 

Q: Transfer模式下,主库执行grant 语句会导致同步停止?

     报错信息为 Access denied for user 'xxx'@'xx.xx.xx.xx' (using password: YES). (Thanks @落叶思雪)

A: 在Transfer模式下需要在transfer中配置访问真实slave的帐号信息,该帐号必须是root权限,且必须包括grant权限。

 

Q: 怎么看多线程的效果?

A: mysqladmin --socket=run/mysql.sock -uroot   extended-status --relative --sleep=1 | grep  Com_ts

  详细说明见 此文

 

Q: 若出现很多serial_number,怎么分析原因?

A: set global transfer_verbos= on; 看errlog的输出。

 

Q: Transfer是否会改变主库上的binlog在从库上的执行顺序,导致数据不一致?

A:会改变执行顺序。但Transfer保证对于相同记录的操作都是按顺序的,因此不会导致数据不一致。

 

Q: 我使用了transfer模式,但是transfer的错误日志为什么一直在输出 "trans->inner_events 3",而从库上没有更新?

A: Transfer启动前需要保证Transfer里面要有与slave上相同的表和表结构,请先确认下,若无,则需要从slave把schema都dump 过去。

 

Q: 需要配置上做什么改变

A:若使用Slave模式,可直接替换mysqld,无须修改配置

     transfer 模式请参考此文

 

Q: 对主从库有什么配置限制

A:有以下限制

     1) 主库的binlog格式必须是row

     2) 主库的表建议有unique key ,若无则会降低提升的倍数

     3) 主库的单个事务大小不能超过 1G

 

Q: 我覆盖了mysqld后,Transfer整个实例起不来?

A:先确认一下mysqld是否有可执行权限, 若无,执行 chmod 755 mysqld.

      若提示errmsg.sys相关的错误,则需要替换对应based版本的errmsg.sys文件

 

Q: 我用slave模式,能够随时替换回原来的版本吗?

A: 若原先没有修改过任何参数,可以直接替换;若有,则可以把增加的参数都加上loose_前缀,这样替换mysqld,重启,start slave,就可以了。

 

Q: 什么情况下不适合用Transfer?

A: 其实一个简单的原则,如果你的原生从库不延迟,就不需要用(貌似是废话).

 

Q: 如何监控transfer是否延迟

A: 在Transfer里面检测是否同步请用 Master_Log_File=Relay_Master_Log_File 且 Read_Master_Log_Pos=Exec_Master_Log_Pos

 

Q: 我的测试场景下transfer的TPS比原生的还慢?感谢 @-周博

A:  若是从空表开始压力,并且你的BP开很大,io性能很好,更新语句简单,qps很高(这个case里是12w/s),此时单线程完全能够执行得飞快。Transfer模型中的生产+消费环节和多线程争用反而会导致性能下降(在这个case里面是6w/s)。

      在实际线上场景中,更多的情况是io瓶颈,此时才能利用好多线程的效果,Transfer的效果才能体现出来。在我们一个线上场景的测试中是原生500/s,用Transfer后6000/s.

 

PS: 个人比较建议用源码安装,Percona Server的 源码地址 

我的cmake参数

CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
CXX=gcc
CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
export CFLAGS CXX CXXFLAGS
#cmake . -DCMAKE_INSTALL_PREFIX=/home/dingqi.lxb/mysql5 -DEXTRA_CHARSETS=all
cmake . \
  -DCMAKE_BUILD_TYPE:STRING=Release             \
  -DSYSCONFDIR:PATH=/home/mysql5            \
  -DCMAKE_INSTALL_PREFIX:PATH=/home/mysql5  \
  -DENABLED_PROFILING:BOOL=ON                   \
  -DENABLE_DEBUG_SYNC:BOOL=OFF                  \
  -DMYSQL_DATADIR:PATH=/home/dingqi.lxb/mysql5/data    \
  -DMYSQL_MAINTAINER_MODE:BOOL=OFF              \
  -DWITH_EXTRA_CHARSETS:STRING=all  \
  -DWITH_BIG_TABLES:BOOL=ON \
  -DWITH_FAST_MUTEXES:BOOL=ON \
  -DENABLE-PROFILING:BOOL=ON \
  -DWITH_SSL:STRING=bundled                     \
  -DWITH_UNIT_TESTS:BOOL=OFF                    \
  -DWITH_ZLIB:STRING=bundled                    \
  -DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON       \
  -DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam \
  -DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DWITH_EXTRA_CHARSETS=ALL \
  -DENABLED_ASSEMBLER:BOOL=ON                   \
  -DENABLED_LOCAL_INFILE:BOOL=ON                \
  -DENABLED_THREAD_SAFE_CLIENT:BOOL=ON          \
  -DENABLED_EMBEDDED_SERVER:BOOL=OFF             \
  -DWITH_CLIENT_LDFLAGS:STRING=all-static                 \
  -DINSTALL_LAYOUT:STRING=STANDALONE            \
  -DCOMMUNITY_BUILD:BOOL=ON; 

 

0
0
分享到:
评论
7 楼 tunwa 2014-12-31  
你好,请问一下现在用哪个mysql版本相对最稳定了?
6 楼 LostAge2 2013-12-06  
你好,最新版transfer是基于Percona-Server的。我们现在用的是官方Mysql-5.6.10的。请问有Mysql-5.6.10的patch嘛?能否帮我编译一个?谢谢。
5 楼 丁林.tb 2013-12-02  
jiaofuyou 写道
假如主库的表没须有primary key,会怎样?

怎样查看有几个线程在运行,主库上对test.t1,test2.t1两个表进行并行插入

看到transfer连接到slave,slave上有两个连接线程,这个transfer的线程是动态起的吗?是一个表一个线程?


没有primary key, 会降低一些提速效果,最差会回退回原生版本

看并行效果可以用 mysqladmin --socket=run/mysql.sock -uroot   extended-status --relative --sleep=1 | grep  Com_ts
4 楼 jiaofuyou 2013-11-08  
假如主库的表没须有primary key,会怎样?

怎样查看有几个线程在运行,主库上对test.t1,test2.t1两个表进行并行插入

看到transfer连接到slave,slave上有两个连接线程,这个transfer的线程是动态起的吗?是一个表一个线程?
3 楼 丁林.tb 2012-10-28  
wyzyanys 写道
你好,替换mysqld之后,无法启动mysql了。提示:   mysqld: cannot execute binary file 。(mysql已经检查具有可执行权限)

是不是上次已经确认操作系统是32位的问题?
2 楼 peterpxg 2012-10-25  
Transfer 帮了大忙,这个功能太棒了!
不知什么时候能整合进Percona-Server,
我是直接替换掉 Slave实例的 mysqld使用的;
有些 Slave的表使用了 ARCHIVE、FEDERATED引擎;
有时间能否另外编译一个mysqld文件,加上这些引擎;
我用的是 Transfer.Percona.5.5.18版本;
1 楼 wyzyanys 2012-10-12  
你好,替换mysqld之后,无法启动mysql了。提示:   mysqld: cannot execute binary file 。(mysql已经检查具有可执行权限)

相关推荐

    MySQL主从同步配置过程.docx

    change master to master_host='192.168.147.133', master_port=3306, master_user='root', master_password='root', master_log_file='mysql-bin.000003', master_log_pos=0; ``` ### 4. 启动同步进程 启动从...

    Docker搭建MySQL主从复制(docker-compose)

    docker_compose搭建mysql主从复制

    Linux配置mysql主从同步

    ### Linux下MySQL主从同步配置详解 #### 一、引言 在数据库管理领域,MySQL主从同步是一种常见的数据复制技术,它可以帮助我们构建高可用性和数据冗余性,从而提高系统的稳定性和可靠性。本文将详细介绍如何在Linux...

    mysql主从同步解决方案及优化

    在数据库领域,MySQL作为一款广泛使用的开源关系型数据库系统,其主从同步功能对于提高数据的可靠性、保证数据的高可用性以及负载均衡具有重要作用。淘宝资深工程师丁奇在2009年的分享中详细介绍了MySQL主从同步的...

    Linux-Mysql主从同步配置

    Linux-Mysql 主从同步配置 本文将详细解释 Linux-Mysql 主从同步配置的步骤和知识点。 一、主服务器配置 1. 编辑数据库配置文件 my.cnf, 一般在/etc/目录下。 2. 在[mysqld]下面加入以下代码: * log-bin=mysql...

    docker-compose关于mysql主从复制一键搭建脚本

    关于博客: https://blog.csdn.net/qq_42413011/article/details/126914080 的搭建脚本

    12.1: MySQL主从同步 、 主从同步模式 、 总结和答疑.docx

    MySQL主从同步配置和实现 MySQL主从同步是指将一个MySQL服务器的数据实时地复制到另一个或多个服务器上,以实现数据的高可用性和灾难恢复。这种方式可以实现数据的热备援、读写分离、负载均衡等功能。 1. 案例 1:...

    Mysql主从同步备份策略

    Mysql主从同步备份策略 五月 18th, 2009 at 17:30 - 3,803 views 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # ...

    mysql主从架构的实现-图灵杨过老师1

    - 设置`log-bin`,指定二进制日志路径,如`log-bin=/usr/local/mysql/data/binlog/mysql-bin`。 - 可选配置:`sync-binlog=1`确保每次写入都同步到硬盘。 - 配置需要同步的数据库,如`binlog-do-db=tuling`。 - ...

    Mysql主从同步(复制) - kylinlin - 博客园1

    MySQL主从同步是一种数据库复制技术,它允许数据从一个服务器(主服务器)自动复制到一个或多个其他服务器(从服务器)。这种同步机制提高了系统的可扩展性、数据安全性以及提供了灾难恢复的可能性。 ### 主从同步...

    mysql主从同步搭建修改优化版.pdf

    MySQL主从同步是一种常见的数据库高可用性和数据冗余策略,它允许数据在多个服务器之间实时复制,确保即使在一台服务器故障时,数据仍然可以被访问。以下是对搭建、修改和优化MySQL主从同步过程的详细解释: 1. **...

    Linux运维-运维课程d6-MySQL主从复制架构-06-MySQL主从复制核心思路.mp4

    Linux运维-运维课程d6-MySQL主从复制架构-06-MySQL主从复制核心思路.mp4

    joeywang310#mysql-master-slave#Mysql主从复制集群搭建-基于DockerCompose1

    如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave mysql容器配置配置Dockerfile设置server_id,一般设置为

    mysql主从同步检查脚本

    mysql主从同步检查脚本 。主要运用于日常maysql运行主从同步状态检查。

    mysql主从同步配置

    MySQL主从同步是一种数据库复制技术,它允许数据从一个MySQL服务器(称为“主服务器”)实时复制到另一个或多个服务器(称为“从服务器”)。这种配置对于数据备份、负载均衡和高可用性至关重要。在Java开发中,了解...

    《深入理解MySQL主从原理32讲》推荐篇

    希望能帮助读者朋友们解决关于主从同步中的一些疑问。八怪写作风格很是严谨,几乎每篇都是从源码入手去剖析MySQL主从复制相关的知识点。 强烈推荐大家订阅本专栏 业界大咖推荐序 从2016年开始八怪(本名高鹏)经常...

    windows下mysql主从同步备份步骤

    在Windows环境下,MySQL主从同步备份是一种常见的高可用性和数据冗余策略,确保数据的安全性和一致性。以下是详细步骤,适用于MySQL 5.0版本: 1. **创建备份账户**: 在主服务器A上,我们需要创建一个用于复制的...

    mysql主从同步和一台服务器两个mysql

    log-bin=mysql-bin # 服务器 ID server-id=1 ``` 创建同步账号 在主服务器上,我们需要创建一个新的用户,以便进行主从同步。我们可以使用以下命令创建用户: ``` mysql> create user 'user01'@'127.0.0.1' ...

Global site tag (gtag.js) - Google Analytics