?日常的使用中当使用 ZooKeeper 作为高鈳用方案时,因某些原因需要重新采集数据只要目标库中的 binlog 文件依旧存在,那么就能够将 Canal 的解析位置重新定位从指定的位置开始解析。
?在有数据被消费时客户端的每次 Ack 都会使得服务端用本地缓存的位点信息去覆盖 ZooKeeper 上的位点,所以在修改 ZooKeeper 的位点之前应先避免其不再被覆盖,即停止 Canal 服务
亦可停止该 instance 对应的消费端程序,则不会再触发服务端使用缓存中的位点信息去覆盖 ZooKeeper 中的信息
?停止服务后,可通過 zkCli.sh、ZooInspector、zkui 等工具连接到相应的 ZooKeeper 服务器上并获取到当前的位点信息。
?默认情况下位点信息存储在下述节点中:
若 ZooKeeper 中并无 …/1001/cursor 节点,则表明該 instance 从未被消费过可通过启动一次对应的消费者,以生成该位点信息但记得生成位点信息后要将其停止。
?获取到的位点信息结果为:
?从上述的结果可看出位点信息是用 json 格式的字符串进行存储的,里面存放了许多信息我们仅需要变更“journalName”和“position”两个属性值,分别对應当前的 binlog 文件名以及该文件内的具体位置
?我们既然已经确定了变更位点需要哪些信息,那么又如何获得预期的位点信息呢这就需要視需求而定了,其实一般来变更位点都是往当前位置的前面调整,再次采集已同步过的数据本文仅给出如何在 MySQL 中通过 SQL 语句查询 binlog 的位点信息示例:
-
?上述命令用于列出该 MySQL 服务当前有效的二进制日志文件信息,具体输出内容如下:
?此处的输出结果仅为 binlog 文件名称和大小该洳何确定具体的该使用哪个文件的哪个位置呢?请稍安勿躁此步骤仅是为了下一步作铺垫。
-
?binary log顾名思义就是二进制日志文件,里面存放的信息无法直接被展示出来但我们可以通过 MySQL 的 SQL 语句将其解析成对应的事件,通过判断事件来找出对应的位点信息
在查询 binlog 事件时,强烮建议尽可能多地增加限制结果集大小的条件以降低对 MySQL 的性能损耗,这就是有步骤的原因为此步骤提供信息。
?下述示例表示列出名為“mysql-bin.000008”的文件内从第 4 个位点开始往后的 5 条记录
当前仅能通过判断具体的事件,来确定对应的位点值(Pos)
?假设我们需要的目标位点信息是:名为 mysql-bin.000008 的日志文件内位点值为 4。那么通过 zkCli.sh 的 set 方法进行变更示例如下:
注意:节点名与节点值之间使用一个半角空格进行分隔。
?启動 Canal 服务端以使新的位点生效。
如果之前通过停止消费端的方式来消除位点被覆盖那么此时就需要通过重启 Canal 服务端将 ZooKeeper 上新的位点信息去覆盖 Canal 服务端缓存中的信息。
国外半年无圈号vx白小号资料批發自助商城
国外半年无圈号,尼泊尔隔天,尼泊尔满月微信号,尼泊尔一年以上,尼泊尔隔天 ,尼泊尔3-7天微信号,尼泊尔2-3个月,尼泊尔12-17年带圈,尼泊尔半年没设备没圈质量聊天主号尼泊尔一年没设备没圈质量聊天主号,尼泊尔满月云控白号尼泊尔3-5个月无圈号,尼泊尔半年无圈号尼泊尔聊天主号, 尼泊尔不秒当天
尼泊尔当天62,尼泊尔18年带圈死密ID尼泊尔12-16设备ID,尼泊尔18年带圈手机号尼泊尔纯
白1-2天数据,尼泊尔純白3-7天A16尼泊尔纯白1-2天A16,尼泊尔纯白28-35天尼泊尔隔天微信号,尼泊尔18带圈账单致富5-7月带圈账单死密,尼泊尔18-17带圈死密尼泊尔18带圈死密微信号,库存微信号尼泊尔3/7白,尼泊尔当天短信尼泊尔一年带圈死密带账单;尼泊尔3-7天白,尼泊尔12-17带圈12—18圈带留卡支付微信号、1年迉密,全场协议上号可单拿批发,微信机器人自取
美国1-3年手机号格式,抗风耐造尼泊尔满月白号;批量零售各种任务主号白小号资料,尼泊尔1-2天白(价格冰点)尼泊尔满月白尼泊尔18多圈带卡,批量零售各种任务主号白小号资料,尼泊尔3-7天白尼泊尔满月白,尼泊爾当天微信号尼泊尔满月,纯白秒进百人群尼泊尔1-5年,机器人辅助上号;出尼泊尔当天虚拟号段出尼泊尔当天正常号段a16,出尼泊尔當天62出尼泊尔当天,出尼泊尔62出尼泊尔半月,出尼泊尔当天a16出尼泊尔3-7,尼泊尔半年无圈号出尼泊尔3-7天a16。