`
javafan_303
  • 浏览: 950463 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql主从数据不一致的解决方法

阅读更多

转载自 http://hi.baidu.com/thinkinginlamp/blog/item/84f30cf4470979e77609d79a.html

 

当使用MySQL主从服务器时。一个必须考虑的问题就是要有方法检测数据是否已经出现了不一致,幸好mk-table-checksum提供了这样的功能:

先安装依赖的模块:DBI,DBD::mysql(相关链接):

perl -MCPAN -e 'install DBI'
perl -MCPAN -e
'install DBD::mysql'

如果自动安装不好使,就手动下载安装,地址:http://search.cpan.org/

再安装Maatkit软件包,基本步骤很简单:

tar
zxvf maatkit-3519.tar.gz
cd
maatkit-3519

剩下的就是Perl软件安装的固定打法:

perl Makefile.PL
make
make
install

下面进入正题,看看如何核对主从服务器的数据一致性,操作都在主服务器上完成,所以是localhost:

mk-table-checksum
--createreplicate --replicate=test.checksum
localhost

需要说明的是test.checksum表示的是test数据库的checksum数据表(也可以使用别的数据库或数据表,只要保证它在主从服务器间没被忽略复制即可),有了createreplicate参数,系统会自动创建这个表,里面会保存一些核对数据,手册里还有很多其他的参数可以使用,恕不详述。

命令执行速度的快慢要视数据量的大小而定,执行完之后,就可以用下面的命令来查询是否存在不一致:

mk-table-checksum
--replicate=test.checksum --replcheck 1
localhost

其实就是查询test.checksum表里this_crc != master_crc的行,所以你也可以不用上面的命令而是手动查找。

需要说明的是replcheck参数指明了核对的级联深度,比如1表示此服务器和它的从服务器。

至于如何同步不一致的数据,可以使用Maatkit提供的另一个软件:mk-table-sync

mk-table-sync --execute --replicate
test.checksum
localhost

注意:如果你用的MySQL不支持触发器语法的话,记得在上面的命令里加上--ignore-triggers参数。

提示:虽然我们的操作都是在主服务器上完成的,但是mk能通过两个途径来自动找到从服务器,一个是SHOW
PROCESSLIST,另一个是SHOW SLAVE HOSTS(不过这个方法要求在从服务器上设定report-host等参数)

补充链接:OnlineDataDrift是Google针对mk-table-checksum的一个优化版本,可以看看。

BTW:ICC版二进制MySQL环境下DBD::mysql安装问题。

所谓ICC指的是Intel
C/C++ compiled,据说MySQL的ICC编译版本比一般的GCC编译版本效率要好一些。

不过如果采用ICC版本的话,在安装DBD::mysql时一不留神可能会遇到一些小问题,比如:

undefined
symbol:
_intel_fast_memcpy

究其原因,是因为MySQL是用ICC编译的,而缺省安装DBD::mysql时,使用的是GCC,所以出现未定义符号也是在所难免的事儿,解决方法是下载ICC库,解压缩安装到/usr/local/lib/icc目录。

tar zxvf
DBD-mysql-4.011.tar.gz
cd DBD-mysql-4.011

然后使用ICC参数手动安装DBD::mysql

perl Makefile.PL
\
--cflags='-I/usr/local/mysql/include' \
--libs='-L/usr/local/mysql/lib
-lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/local/lib/icc
-lirc'

make
make install

和正常的编译参数相比,其实就是多了“-L/usr/local/icc
-lirc”而已,这样就OK了。

分享到:
评论

相关推荐

    MySQL主从不一致检查与修复

    自己在公司做的MySQL主从不一致检查与修复,希望对大家有帮助!

    mysql 主从数据不一致,提示: Slave_SQL_Running: No 的解决方法

    主要介绍了mysql 主从数据不一致,提示: Slave_SQL_Running: No 的解决方法,总结分析了MySQL主从数据不一致的原因与常见处理技巧,需要的朋友可以参考下

    详解MySQL主从不一致情形与解决方法

    由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。 1.3 max_allowed_...

    MySQL主从一致性检查&修复攻略

    MySQL主从一致性检查&修复攻略,这个DBA必看的,必须要会的

    如何恢复MySQL主从数据一致性

    MySQL主从数据一致性怎么恢复,MySQL主从数据库的数据不一致,猜测备库在同步过程中出现了问题,现在的问题很明确,就是如何恢复主从库数据的一致性,下文为大家分享解决方法,感兴趣的小伙伴们可以参考一下

    如何实现MySQL的主从复制和半同步复制

    如何实现MySQL的主从复制和半同步复制对普通用户来说可能比较难懂,但只要您接触了MYSQL,就没理由不去学。

    mysql主从复制配置(完整已测试).txt

    (1)首先,mysql主库在事务提交时会把数据库变更作为事件Events记录在二进制文件binlog中;mysql主库上的sys_binlog控制binlog日志刷新到磁盘。...通过逻辑复制,以此来达到数据一致。 Mysql通过3个线程来完成主从库

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

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

    MySQL 主从复制搭建,基于日志(binlog)

     MySQL主从能解决什么问题  一、高可用  因为数据都是相同的,所以当Master挂掉后,可以指定一台Slave充当Master继续保证服务运行,因为数据是一致性的(如果当插入Master挂掉,可能不一致,因为同步也需要...

    ubuntu 16.04配置MySQL主从同步的配置方法

    2.主从数据库内数据保持一致 主数据库:121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 ( 阿里云 ) 从数据库:182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 ( 腾讯云 ) 防火墙配置 配置主服务器只允许特定 IP 访问...

    MYSQL主从同步实战

     在实际项目中,两台分布于异地的主机上安装有MYSQL数据库,两台服务器互为主备,客户要求当其中一台机器出现故障时,另外一台能够接管服务器上的应用,这就需要两台数据库的数据要实时保持一致,在这里使用MYSQL的...

    mysql检测数据一致性软件

    ------安装percona-toolkit工具包 tar zxf percona-toolkit-2.2.20.tar.gz cd percona-toolkit-2.2.20 perl Makefile.PL ----需要依赖yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker ...

    Mysql主从复制服务器配置

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:  1、主从服务器分别作以下操作:  1.1、版本一致  1.2、初始化表,并在后台启动mysql  1.3、修改root的密码  2、修改主服务器master:  ...

    MySQL主从同步

    主从同步一、主从同步概述1.1、MySQL主从同步1.2、主从同步工作原理1.2.1、必要条件1.2.2、具体过程1.3、结构类型二、构建一主一从2.1、拓扑结构2.2、配置主服务器2.2.1、启用binlog日志2.2.2、授权用户2.2.3、查看...

    使用keepalived实现对MySQL主从复制的主备自动切换

    使用MySQL+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台 MySQL数据的一致性,然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动...

    windows下mysql数据库主从配置教程

    windows下配置mysql数据库主从的详细过程,具体内容如下 所用到工具: Mysql、Navicat Premium; 主库设置: 一.设置my.ini 文件; 1.在安装目录下找到my.ini 文件: 默认路径:C:\Program Files\MySQL\MySQL ...

    MySQL 主从复制原理与实践详解

    比如A服务器做主服务器,B服务器做从服务器,在A服务器上进行数据的更新,通过 binlog 日志记录同步到B服务器上,并重新执行同步过来的 binlog 数据,从而达到两台服务器数据一致。 MySQL 数据库的主从复制方案,与...

Global site tag (gtag.js) - Google Analytics