Max*_*Max 3 mysql synchronization replication percona
我一直在寻找一种工具来同步来自 2 个不同数据库的表,并找到了pt-table-sync
. 我阅读了文档并感到困惑:他们主要使用涉及复制环境的示例,但我认为复制的全部目的是为您处理数据同步,因此我的问题是:
什么是使用的点pt-table-sync
,如果在复制过程中应该采取对您的数据的同步照顾?
可以pt-table-sync
在非复制环境下使用吗(2+台主机之间没有任何关系,是pt-table-sync --execute host1 host2 host3
给出的例子的作用)吗?
如果我必须用pt-table-sync
在复制环境中,我可以做不bin-logs
上master
(有一个例子谈论解决分歧发现通过 pt-table-checksum
这样想,如果bin-logs
是绝对必要的)?
MySQL 复制存在两大问题
MySQL 复制是异步的。这可能会引入复制延迟。这表现在 Master 和 Slave 之间通过 Slave I/O 线程的通信问题。这可以从逻辑上和数字上看出Seconds_Behind_Master
。
Data Drift
. 这是一种间歇性情况,由于 MySQL 复制领域之外的因素,主从只是不同步的。例如,请注意一种更好地同步复制的方法:使用选项sync-binlog
。当您设置sync-binlog
为 1 时,mysqld 将为您在二进制日志中记录的每个条目执行当前二进制日志的刷新。这可以荒谬地减慢Master的速度。默认情况下,sync-binlog
为 0。
sync-binlog=0
,谁负责将二进制日志刷新到磁盘?这里的直接答案是否定的,因为pt-table-sync
它旨在通过选项检测 Slave 的 I/O 线程--sync-to-master
。
这里的直接答案是否定的,因为 MySQL 复制要求知道
Master_Log_File
来自SHOW SLAVE STATUS\G
)Read_Master_Log_Pos
来自SHOW SLAVE STATUS\G
)如果你只是想让你的二进制日志不碍事,你可以做两件事之一
expire-logs-days
为 3 以保留过去 3 天的二进制日志
expire-logs-days=3
/etc/my.cnfSET GLOBAL expire_logs_days = 3;
SHOW SLAVE STATUS\G
在从站上运行。取 的值Relay_Master_Log_File
。并使用它来清除 Master 上的二进制日志以更新该日志文件。
SHOW SLAVE STATUS\G
在 Slave 上运行Relay_Master_Log_File: mysql-bin.000035
PURGE BINARY LOGS TO 'mysql-bin.000035';
如果您想对 pt-table-sync 更有信心,请尝试使用该--print
选项并重定向到文本文件而不是该--execute
选项。这将生成通常在 Master 上执行的 SQL。之后您可以直接在该 Slave 上运行 SQL。可以将其视为 的彩排--execute
。
归档时间: |
|
查看次数: |
8365 次 |
最近记录: |