tidb 4.0.12 ,集群主备切换

tidb 4.0.12

initial-commit-ts
指定从哪个事务提交时间点(事务的 commit ts) 之后开始同步。这个配置仅适用于初次开始同步的 Drainer 节点。
如果下游已经有 checkpoint 存在,则会根据 checkpoint 里记录的时间进行同步。
commit ts(即 commit timestamp)是 TiDB 事务的提交时间点。
该时间点是从 PD 获取的全局唯一递增的时间戳,作为当前事务的唯一 ID。典型的 initial-commit-ts 配置可以通过以下方式获得:
BR 备份的元信息(即 backupmeta)中记录的 backup TS
Dumpling 备份的元信息(即 metadata)中记录的 Pos
PD Control 中 tso 命令返回的结果
默认:-1。Drainer 会从 PD 得到一个最新的 timestamp 作为初始时间。即从当前的时间点开始同步。

drainer_servers:

  • host: 10.0.1.12
    port: 8249
    data_dir: “/tidb-data/drainer-8249”
    commit_ts: -1
    deploy_dir: “/tidb-deploy/drainer-8249”
    config:

结论 : 在没有checkpoint 的情况下 ,才会使用commit_ts. 因此删除checkpoint 可避免重复数据或主键冲突。

问题: 利用drainer 进行同步 ,何时更新checkpoint ? 或者不会更新checkpoint?主备同步状态 怎么检查 ?

  1. 何时更新checkpoint ?或者不会更新checkpoint?
    checkpoint 是 drainer 在下游写的 schema 和 table,里面会记录 drainer 同步到下游哪个时间点了。drainer 有新的 txn 同步到下游成功就会更新。还有一种情况是,上游可能一直无 txn,这时每隔 3s drainer 会向下游写个 fake binglog 这时也会更新。

  2. 主备同步状态 怎么检查 ?
    drainer 监控面板中有 drainer 的各种状态