和历時系统报主从站数据库主从同步不一致故障是怎么回事

利用percona-toolkit工具检查MySQL数据库主从一致性及修复_西西软件资讯
西西软件下载最安全的下载网站、值得信赖的软件下载站!
→ 利用percona-toolkit工具检查MySQL数据库主从一致性及修复
5.2.6 官方最新版
类型:数据库类大小:5.5M语言:英文 评分:2.0
利用percona-toolkit工具检查MySQL主从复制数据的一致性,以及修复。一、pt-table-checksum检查主从库数据的一致性pt-table-checksum在MASTER上校验指定库、表,将结果存在一个库表里,复制进程将检验sql传递到slave上再执行一次。通过比较M/S的检验值确定数据是否一致。利用主从复制做检验,不需要在检验期间对主从数据库同时锁表,可以控制校验的数据和速度,不影响到正常服务。安装:#依赖包
perl-DBD-MySQL
perl-TermReadKey
#percona-toolkit包
wget /downloads/percona-toolkit/LA/percona-toolkit-2.2.4.tar.gz
tar xzvf percona-toolkit-2.2.4.tar.
cd percona-toolkit-2.2.4 ;
perl Makefile.pl && make && make install使用方法:pt-table-checksum [OPTIONS] [DSN]pt-table-checksum:在主&M&上通过执行校验的查询对复制的一致性进行检查,对比主从的校验值,从而产生结果。DSN指向的是主的地址,该工具的退出状态不为零,如果发现有任何差别,或者如果出现任何警告或错误,更多信息请见官网。不指定任何参数,会直接对本地的所有数据库的表进行检查。pt-table-checksum CS /tmp/mysqld.sock u=root,p=123456环境:#主库:
mysql& select * from t1;
+----+------+
| id | name |
+----+------+
+----+------+
5 rows in set (0.00 sec)
mysql& select * from t1;
+----+------+
| id | name |
+----+------+
+----+------+
4 rows in set (0.00 sec)注意:1、& 根据测试,需要一个技能登录主库,也能登录从库,而且还能同步数据库的账号;2、& 只能指定一个host,必须为主库的IP;3、& 在检查时会向表加S锁;4、& 运行之前需要从库的同步IO和SQL进程是YES状态。可以用该语句授权用户,这里为了方便直接用root用户了GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO ‘checksums’@’x.x.x.x’ IDENTIFIED BY ‘xxxx’;执行检测(MASTER上):pt-table-checksum --nocheck-replication-filters --replicate=test.checksum --databases=test h=192.168.68.235,u=root,p=123 --empty-replicate-table --create-replicate-table
CHUNKS SKIPPED
TIME TABLE
09-18T12:03:16
0.018 test.t1参数说明:TS&&&&&&&&&&& :完成检查的时间。ERRORS&&&&&&& :检查时候发生错误和警告的数量。DIFFS&&&&&&&& :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。ROWS&&&&&&&&& :表的行数。CHUNKS&&&&&&& :被划分到表中的块的数目。SKIPPED&&&&&& :由于错误或警告或过大,则跳过块的数目。TIME&&&&&&&&& :执行的时间。TABLE&&&&&&&& :被检查的表名。参数意义:--nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。--no-check-binlog-format&&&&& : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。--replicate-check-only :只显示不同步的信息。--replicate=&& :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。--databases=&& :指定需要被检查的数据库,多个则用逗号隔开。--tables=&&&&& :指定需要被检查的表,多个用逗号隔开h=127.0.0.1&&& :Master的地址u=root&&&&&&&& :用户名p=123456&&&&&& :密码P=3306&&&&&&&& :端口更多的参数请见官网,上面指出来的是常用的,对该场景够用的参数。通过DIFFS是1可以看出主从的表数据不一致。通过查看从库上的test.checksum表可以看到主从库的检验信息。 mysql& select * from checksum\G;
*************************** 1. row ***************************
chunk_time: 0.001604
chunk_index: NULL
lower_boundary: NULL
upper_boundary: NULL
this_crc: 13fa7d9d
#从的校验值
this_cnt: 4
master_crc: aa7a56c3
#主的校验值
master_cnt: 5
1 row in set (0.00 sec)通过上面的 this_crc && master_crc 更能清楚的看出他们的不一致了,通过chunk知道是这个张表的哪个块上的记录出现不一致。要是主的binlog模式是Row 则会报错:Replica db2 has binlog_format ROW which could cause pt-table-checksum to break replication.&Please read &Replicas using row-based replication& in the LIMITATIONS section of the tool's documentation.&If you understand the risks, specify --no-check-binlog-format to disable this check.从错误信息得出,要是不改binlog模式的话,则在执行上面的命令时候要指定:--no-check-binlog-format,即:pt-table-checksum
--nocheck-replication-filters --no-check-binlog-format --replicate-check-only --replicate=test.checksum --databases=test --tables=t1
h=127.0.0.1,u=root,p=123,P=3306指定--replicate-check-only参数会在前一次pt-table-checksum检验的数据之上比较(不会再执行计算),显示出数据不一致的SLAVE主机名:[root@host125 ~]# pt-table-checksum
--nocheck-replication-filters --no-check-binlog-format --replicate-check-only --replicate=test.checksum --databases=test --tables=t1
h=127.0.0.1,u=root,p=123456,P=3306
[root@host125 ~]# pt-table-checksum --nocheck-replication-filters --replicate=test.checksum --databases=test h=192.168.68.235,u=root,p=123 --empty-replicate-table --create-replicate-table --replicate-check-only
Differences on host122
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
test.t1 1 -1 1数据不一致的SLAVE和表都找出来了,下面就用pt-table-sync来修补数据。二、pt-table-sync修复从库不一致的数据使用方法:pt-table-sync [OPTIONS] DSN [DSN]pt-table-sync: 高效的同步MySQL表之间的数据,他可以做单向和双向同步的表数据。他可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。继续上面的复制环境,主和从的t1表数据不一致,需要修复,执行:[root@host125 ~]# pt-table-sync --print --replicate=test.checksum h=192.168.68.235,u=root,p=123,P=3306 h=192.168.68.232,u=root,p=123,P=3306
#先MASTER的IP,再SLAVE的IP
REPLACE INTO `test`.`t1`(`id`, `name`) VALUES ('5', 'ee')
/*percona-toolkit src_db:test src_tbl:t1 src_dsn:P=3306,h=192.168.68.235,p=...,u=root dst_db:test dst_tbl:t1 dst_dsn:P=3306,h=192.168.68.232,p=...,u=root lock:1 transaction:1 changing_src:test.checksum replicate:test.checksum bidirectional:0 pid:24763 user:root host:host125*/;参数的意义:--replicate=& :指定通过pt-table-checksum得到的表,这2个工具差不多都会一直用。--databases=& : 指定执行同步的数据库,多个用逗号隔开。--tables=&&&& :指定执行同步的表,多个用逗号隔开。--sync-to-master :指定一个DSN,即从的IP,他会通过show processlist或show slave status 去自动的找主。h=127.0.0.1&& :服务器地址,命令里有2个ip,第一次出现的是M的地址,第2次是Slave的地址。u=root&&&&&&& :帐号。p=123456&&&&& :密码。--print&&&&&& :打印,但不执行命令。--execute&&&& :执行命令。更多的参数请见官网,上面指出来的是常用的,对该场景够用的参数。和上面的命令一样效果的命令:[root@host125 ~]# pt-table-sync --print --sync-to-master h=192.168.68.232,u=root,p=123,P=3306 --databases test --tables t1
#用一个IP (SLAVE)就可以了。
REPLACE INTO `test`.`t1`(`id`, `name`) VALUES ('5', 'ee') /*percona-toolkit src_db:test src_tbl:t1 src_dsn:P=3306,h=192.168.68.235,p=...,u=root dst_db:test dst_tbl:t1 dst_dsn:P=3306,h=192.168.68.232,p=...,u=root lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:24798 user:root host:host125*/;还可以让它自己执行修复数据的SQL语句,但是这样就没有输出了:[root@host125 ~]# pt-table-sync --execute --sync-to-master h=192.168.68.232,u=root,p=123,P=3306 --databases test --tables t1数据已经修复完成了:mysql& select * from t1;
+----+------+
| id | name |
+----+------+
+----+------+
5 rows in set (0.00 sec)建议还是用--print 打印出来的好,这样就可以知道那些数据有问题,可以人为的干预下。不然直接执行了,出现问题之后更不好处理。总之还是在处理之前做好数据的备份工作。注意:要是表中没有唯一索引或则主键则会报错:Can't make changes on the master because no unique index exists at /usr/local/bin/pt-table-sync line 10591.补充:要是从库有的数据,而主库没有,那这个数据怎么处理?会给出删除SLAVE多余数据,和修复SLAVE缺失数据的SQL语句。如果在shell窗口不想显示输入密码则可以添加:--ask-pass 参数,如:[root@host125 ~]# pt-table-sync --print --ask-pass --sync-to-master h=192.168.68.232,u=root,P=3306 --databases test --tables t1
Enter password for 192.168.68.232:如果使用--ask-pass,报错:C is Term::ReadKey installed? Can't locate Term/ReadKey.pm in @INC安装Term/ReadKey.pm模块:[root@host125 ~]# perl -MCPAN -e &shell&
cpan[1]& install Term::ReadKey总结:该工具执行检查表动作,检查连接的帐号需要有很高的权限,在一般权限上需要加SELECT, PROCESS, SUPER, REPLICATION SLAVE等权限。pt-table-checksm 配合pt-table-sync使用,在执行pt-table-sync数据同步之前,一定要执行pt-table-checksm命令检查。
02-0512-1212-1004-2412-1310-0208-2008-1008-0607-11
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载您当前的位置:&>&正文
数据库中实现负载均衡功能的注意事项和故障分析
&&&&来源:河北博才网&&
通过负载均衡功能在MySQL数据库中的实现,我们在此在为大家补充一些知识。我们在部署服务器负载均衡功能时,需要注意一些问题,以及在部署过程和实现过程中常遇到的故障问题进行了分析。注意事项正确部署实现具有负载均衡功能的MySQL服务器集群必须注意以下事项:(1). MySQL数据库复制(replication)特性是核心此处的复制不是简单的copy,从属服务器启动两个线程(thread):I/O线程和SQL线程,I/O线程接收主服务器对参与复制数据库的更新操作事件(event),并记入自己的中继二进制更新日志文件(hostname-relay-bin.00000n),由SQL线程将更新操作写入自己的数据库表项。主从服务器之间复制的不是具体的数据内容,而是具体的以二进制格式记录的操作事件,因而在一定程度上实现主从服务器之间的数据同步。(这种复制类似于生物学意义上的按基因复制,在英语中replication的主要词义就是指该种复制。)(2). 复制的复杂性主从数据库服务器间的replication要求Master与Slave上的MySQL版本最好一致,主从服务器必须设置相同的字符集,否则很容易造成复制失败。主服务器上更新权限表内容的FLUSH语句不会被复制[8]。(3). 按照范式化要求设计数据库生产环境下基于MySQL服务器的应用系统要想稳定运行,按范式化设计系统数据库是基本要求,具体内容可参考相关书籍。(4). 打开数据库服务器的远程用户连接功能打开主从服务器的远程用户连接是实现更新、查询操作分别定向的必要条件,否则,来自应用服务器的连接请求失败,影响系统应用正常运行。(5). 负载均衡功能的实现需要良好的团队合作BIND DNS服务器实现了从属服务器Slave之间的负载均衡,Slave和Master之间的负载均衡则由应用系统开发人员在程序代码级实现。整个系统的性能提升和冗余容错需要网络管理和应用系统开发团队之间的良好合作,否则负载均衡功能的实现就会失败。常见问题(1). 如何估算MySQL服务器集群的性能提升量?针对本文采用的结构模式,可对应用系统整体性能提升做出大致估算。假设应用系统写操作占10%,读操作占90%,写操作耗时是读操作的2倍,系统的吞吐量(throughput)为T(用reads/s读操作次数/秒来衡量)。把写操作线性转换为读操作,则有:T= 2Xwrites + 9Xwrites ==&writes=T/11① (不采用主从复制模式,读写操作集中到一个服务器上)T= 2Xwrites + 9Xwrites/N ==& writes=T/(2+9/N)② (采用一对多的主从复制模式,读操作在从属服务器,写操作在主服务器)其中,writes为系统单位时间内所能承受的最大写操作次数,N为从属服务器个数,N大于等于2。在不采用主从复制模式时,系统性能writes=T/11;采用本文一对三的复制模式时,系统性能writes=T/5。采用负载均衡模式与不采用系统性能之比为11:5,即2.2:1,考虑到应用服务器的额外开销,系统整体性能提升了整整1倍!从②式可以看出,系统整体性能理论极限为T/2,当然在实际生产环境中不可能达到。具体部署时用户可以根据自己的实际情况估算出合理的从属服务器数量,主要影响因素是网络带宽和机器整体性能[9]。(2). 如何应对主从服务器崩溃?当某台从属服务器崩溃时,修复故障重启后重新连接到主服务器,根据其文件更新其数据,保持与主服务器的数据同步。如果主服务器崩溃,在某一从属服务器上执行STOP SLAVES; GRANT REPLICATION SLAVE ON *.* repl_db TO &repl'@'%' IDENTIFIED BY&g00r002b';RESET MASTER;这三个SQL语句,由于从属服务器已启动了二进制更新日志功能,因此具备了角色转换的必要条件。更改其主机名、IP地址及server-id与Master一样,重启MySQL服务器,系统开始正常对外提供服务。其它两台从属服务器则不需执行任何操作,继续执行replication过程。BIND DNS服务器和应用程序也不需做任何调整,继续对系统用户提供不间断服务。主服务器排除故障恢复正常后,将其网络配置改为与现有Master转换角色之前一样的配置,重启MySQL服务,将其角色转换为从属服务器。也就是说,整个集群机器的角色可以相互循环转换,提高系统的冗余性和可靠性。在此需要注意的是,在应用系统调试运行正常之后,在Slave角色服务器的/f文件[mysqld]段加入slave-skip-errors=all,保证集群之间复制(replication)的正常运行。结束语部署与实现具有负载均衡功能的MySQL服务器集群是一项复杂的系统工程,需要多方面良好的协同合作才能做好。服务器的搭建配置、BIND DNS服务器的配置部署,以及应用系统程序的开发都要紧紧围绕实现MySQL服务器集群负载均衡功能这个目标。必须对主服务器的运行状态进行动态监控,如果发生故障,立即执行角色转换过程,确保为终端用户提供可靠、不间断的服务。可以针对具体系统环境写出监控脚本或程序,确保系统的可靠性与稳定性。--博才网
下页更精彩:
微信查看最新信息微信扫一扫或用微信搜索微信号:hbrc-com
安卓手机客户端更省流量手机扫描下载或者直接
猜您还喜欢的文章
热点文章排行榜
• 版权所有 Copyright 2011 All rights reserved.解决主从复制数据不一致的情况
解决主从复制数据不一致的情况
  主从复制不一致的情况解决:  不一致的原因:  1、 主从切换时,出现的故障  2、 误操作  3、 机器故障等  方法一:利用MySQL原生的mysqldump就可以搞定,对于个别表有锁表的情况。  可以参考:  核心是 mysqldump Csingle-transaction --master-data=2  Start slave until MASTER_LOG_FILE=’’, MASTER_LOG_POS=;  直到sql_thread线程为NO,这之间的同步报错一律跳过即可  方法二:工具:pt-table-sync  有效的同步MySQL 表的数据。  操作前,最好先备份。对于主从结构来讲,它只需要在master上操作即可(无论是 使用的选项是 Creolicate 还是 Csync-to-master)这种方式往往是重新让master和slave保持同步的最安全的方式,直接修改replica可能会带来很多问题。  注意事项; --dry-run 查看该工具用那种算法进行操作。  --print 如何具体解决主从的不一致的。  对于主主复制的形式,要相当谨慎。  当表含有外键,并且是 on delete 或 on update 约束的情况下,建议暂时不用,可能对子表造成意外的破坏。  部分bug。 --lock-and-rename 对于小于MySQL 5.5 版本的DB是不起作用的(考虑用 pt-online-schema-change 代替?)。  详解:  Pt-table-sync 可以做到对表的数据进行单项或者双向同步。它并不同步表的结构、索引或者其他的数据库对象,仅仅是行记录。  下面先介绍下单向表数据同步  先介绍三个概念: --replicate , find differences , specifying   下面是简短的逻辑:    if DSN has a t part, sync only that table:
if --sync-to-master:
The DSN is a slave. Connect to its master and sync.
if more than 1 DSN:
The first DSN is the source. Sync each DSN in turn.else if --replicate:
if --sync-to-master:
The DSN is a slave. Connect to its master, find records
of differences, and fix.
The DSN is the master. Find slaves and connect to each,
find records of differences, and fix.
if only 1 DSN and --sync-to-master:
The DSN is a slave. Connect to its master, find tables and
filter with --databases etc, and sync each table to the master.
find tables, filtering with --databases etc, and sync each
DSN to the first      默认情况下, 没有―replicate 选项(该选项使用 几种算法自动发现master和slave之间的不同),另外该选项还能利用 pt-table-checksum 已经检查查来的问题。严格来讲,我们不需要使用 Creplicate 选项,因为它可以自动发现表之间数据的不一致。 但人们结合两个工具的原因是: pt-table-checksum 定期的对表数据进行校验,当发现不一致时再用 pt-table-sync进行修复。  如何确定数据同步的方向; 使用 Csync-to-master 或者省略。该选项值需要一个 slave DSN 参数.自动发现该slave的master,并开始于master进行同步。实现的方式 是在 master端 做出改变,通过MySQL 的复制机制让slave与master 重新同步。 注意事项: 如果只有一台slave的 那没有问题,多台slave的话,可能也会受到同样的数据变更。  如果不使用 Csync-to-master 的话,第一个DSN参数则必须是 source host(有且只有一个),,没有 Creplicate选项的话,我们必须在写一个 DSN参数作为 destination & host. 可以有多个 destination host。 Source 和 destination 必须是独立的,不能在同一个复制结构里面。 如果pt-table-sync 检测到目标host是一个同一个复制拓扑里面的slave,工具会报错。因为对数据所做的一些改变是直接写入到 目的 host的,(将修改数据直接写入一个slave ,如果在引用binlog 日志的话,可能会报错。) 或者如果 我们使用 Creplicate 选项的话, pt-table-sync 会期望 DSN参数是 master,这样改工具就可以一次性的发现该master所有的slave,并让slave都重新和master进行同步。(--sync-to-master 只更新一个slave)  该工具的 第一个DSN参数 想对于其他的DSN 提供一些默认参数,比如DB 和table,我们可以手动全部写上,或者让工具自动发现。  比如:pt-table-sync --execute h=host1,u=msandbox,p=msandbox h=host2    Host 2 的 DSN参数 继承了 来自 host1 的 u 和 p 的属性。 使用 Cexplain-hosts 选项可以看到 pt-table-sync 是如何翻译 命令行上的参数的。  输出:  使用 Cverbose 的情况,会显示出对每个操作表所做处理的详细信息:  # Syncing h=host1,D=test,t=test1  # DELETE REPLACE INSERT UPDATE ALGORITHM START
EXIT DATABASE.TABLE  #
13:00:00 13:00:17 2
test.test1    Host1 上的 test db 中的test1 表被插入3条记录。并且使用的算法是 chunk, 时间从13:00:00开始持续了17秒。因为发现master和slave之间的不同,所以退出状态时2 。  复制 安全  一般情况下,最安全的方式是只在master端做出变更,利用mysql的复制机制来达到同步的目的。 前提是 在master端执行的是replace语句,而且表中必须有unique index . 否则的话,只是 原始的 insert 语句,可能有的slave 会出现重复信息。  如果表含有unique keys, 我们可以很轻松的 使用 Csync-to-master 或者 Creplicate 选项,如果没有的话,我们只能在slave端进行操作。and pt-table-sync will detect that you’re trying to do so. It will complain and die unless you specify --no-check-slave (see --[no]check-slave).  如果在双主模式下的表中没有主键或者unique key,我们必须在目的主机进行操作。 所以呢,我们需要使用 Cno-bin-log 选项。  在双主模式下,一般使用―sync Cto-master 参数, You will also need to specify --no-check-slave to keep pt-table-sync from complaining that it is changing data on a slave.    pt-table-sync 的算法:  有一个多种算法来发现数据差异的框架,该工具自动选择最合适的算法,依据是表的索引,字段类型和算法的偏好设置。  chunk 算法:  找一个索引中第一个字段为整数型的索引(date和time类型也算),让后根据该索引中的值分解为多个chunk,每次通过checksum 完整的chunk来并同步该chunk中的数据。如果某个chunk的 checksum 中的值在source 和 destination端不同,那么他会逐个的发现是哪些数据记录出现了问题。  如果有足够的基数就可以高效的为每个chunk设置合适的size(行记录)。  在最初的对每个chunk进行 checksum的时候校验值是相当的小,而且几乎不会浪费网络和内存的资源。在校验的时候,只有primary key和一个checksum在网络中传输,并不是整个row,如果发现某个row在source和destination 不一致,这个时候才会取出整条记录。  如果某个字段是char类型的并且开始字母都相同,那么该算法就不会起作用,该工具就会退出并提示选择其他的算法。    Nibble算法:  找到一个索引上升指数在固定大小的半字节 - chunk-size行,使用non-backtracking算法,它和chunk算法很类似,但是它不是跟觉表中索引的基数来确定chunk size的大小,而是使用LIMIT定义每个半字节的上限,和之前半字节的上限定义的下限。  它工作的步骤是:查询出一行记录,并且该记录可以定义下一个 nibble的上限?下一个 checksum 查询会校验整个nibble。如果发现源端和目的端有差异,那么它会逐行比较。    GroupBy  该算法主要用于没有primary key或者 unique index的情况。选择整个表,并对所有的字段进行排序,并使用count(*) 计算出行数,比较所有列,如果他们是一样的,比较COUNT(*)列的值,以确定有多少行插入或删除的目标。    Stream  选择整个表格并放在一个大的数据流中,比较所有列。选择所有列的效率远低于其他算法,    双向同步:现在还处于试验阶段, 所以我们不做过多介绍,只谈谈该功能面临的困难:  1、不适用于 复制架构,只能同步到一台独立的server  2、只能使用chunk 算法,即表中必须有primary key 或者unique key  3、一次只能让两台机器之间同步数据  4、对于delete删除的数据,不能同步。!    选项:  至少使用以下选项: --print , --execute, 或者 Cdry-run  --where 和 Creplicate 是互相排斥的。  --algorithms :默认是 chunk .Nibble ,GroupBy ,Stream  算法是用来比较表之间的不同,按顺序排列  --[no]bin-log 默认:yes 会控制会话级别变量: SQL_LOG_BIN=1/0  --buffer-in-mysql &该选项对于使用 GroupBy 和 Stream算法的时候,即 表没有primary key或 & & & & & & & & & & unique key 的时候特别有效。它开启MySQL SQL_BUFFER_RESULT 选项,  MySQL 会对查询的结果放到内存或者临时表里面。好处是:对于使用太多的 & &  Perl 程序使用太多的语言。但是由于MySQL的缓存的查询结果,也不会节省太多内存  --[no]buffer-to-client & 默认 :yes 对于MySQLrow记录时 是一条一条对比。  该选项开启了MySQL mysql_use_result 选项,当该工具从MySQL获取到该数据的时候,MySQL将不在持有该数据。如果禁用该选项的话,MySQL会一次性发送所有的rows,所以呢,对于大表来说,你可能会禁用改选项    --charset 设置默认连接的字符集,  --[no]check-master 默认是 yes, 当使用 Csync-to-master &检测master是否是真正的master  --[no]check-slave 默认是yes:检测目标主机是否是一个slave 。如果直接在slave上操作时很危险的,会造成数据的不一致。  --[no]check-triggers 检测目标表 是否有触发器。  --chunk-column 根据指定的column来 对表 chunk  --chunk-index 根据指定的索引 对表进行chunk  --chunk-size 多少行记录,或者多大的size为一个chunk 。 参数为 K? M? G?数据的大小初一行的平均大小,可以得到行数  --columns &参数用逗号相隔,指定用来比较的columns  --config 读取配置文件,该选项必须设置为第一个参数。  --dry-run &分析、检测、的同步算法和具体实施过程    --engines &参数逗号相隔,只同步参数中含有的存储引擎  --execute 具体的去修改表数据。 结合-verbose 选项,我们可以看到执行过程。默认是在安静模式下进行的。  --float-precision FLOAT和DOUBLE数字到字符串的转换精度为。FLOAT和DOUBLE值被舍入到小数点后的指定位数的数字,在MySQL中使用ROUND()函数。这有助于避免由于不同的浮点表示相同的值在不同的MySQL版本和硬件的校验和不匹配。默认情况下是没有四舍五入; CONCAT()函数的值转换成字符串,和MySQL选择的字符串表示形式。如果你指定一个值,例如,1.008和1.009的值将被调整至1.01,并会进行校验和是相等的  --[no]foreign-key-checks &是否启用外键检查, 在MySQL内部是 set foreign_key_checks=1  --ignore-columns  --ignore-database  --ignore-tables  --ignore-engines  --lock :锁表, 0 none 1 per sync cycle(锁住每个chunk) 3 globallly   如果 使用―replicate 或者 Csync-to-master 参数时,slave端 是不会锁表的。  锁表的时候使用的是 lock tables ,但是如果使用 Ctransaction 的话,就是在事务开始到提交这一段,开始锁表。  --recursioin-method & processlist 是首选的方法来找到slave  --replace 对于 insert 和 update 语句来说全部替换为 replace  --replicate  --sync-to-master &DSN参数为slave    举例:  同步 把主机host1 DB1中的 tb1 同步到 host2上  Pt-table-sync Cexecute h=host1,D=db,t=tb1 h=host2    把host1上的表全部都不到 host2 host3 & 上  Pt-table-sync --execute host1 host2 host3    让slave从master端保持一致  Pt-table-sync --execute --sync-to-master slave1    解决有pt-table-checksum 产生所有slave 对master的 differ结果  Pt-table-sync --execute --replicate test.checksum master1    或者只让slave1得到修复:  Pt-table-sync Cexecute &--replicate test.checksum --sync-to-master slave1    在双主模式下,同步master2 中的损害的 db.tb1 上的数据  Pt-table-sync --execute Csync-to-master h=master2,D=db,t=tb1    比如下面这个 就不会成立,因为它会直接修改master2上的数据,并且会传递给master1,  Pt-table-sync --execute h=master1,D=db,t=tb1 master2
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&}

我要回帖

更多关于 mysql数据库主从同步 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信