TIDB同步至MYSQL的问题

存量的TiDB迁移到MySQL,首先全量然后增量,这个先全量如何操作。

  • 在官网搜索全量备份
  • 备份完成之后可以在官网搜索还原关键字

假如我TIDB有以下数据库A B sync_db 三个数据库,且sync_db是存量的数据库。我现在想把tidb的sync_db同步到下游mysql的sync_db当中 我的做法是: 1、先通过Mydumper备份全量的数据 2、通过loader导入下下游的数据库 3、查看Mydumper备份数据目录下的medadata信息中的POS:410637813458403329 4、修改中控机/home/tidb/tidb-ansible/inventory.ini文件中的以下信息 [pump_servers] 10.168.0.72 [drainer_servers] drainer-mysql ansible_host=10.168.0.72 initial_commit_ts=“410637813458403329” 5、滚动升级tidb,pump正常 6、按文档修改生成home/tidb/tidb-ansible/conf/drainer-mysql_drainer-cluster.toml配置文件,关键信息如下

db-type = “mysql”

[[syncer.replicate-do-table]] db-name =“sync_db”

[syncer.to] host = “10.168.0.54” user = “root” password = “xxxxxx” port = 3306

7、然后执行ansible-playbook deploy_drainer.yml 正常 8、执行ansible-playbook start_drainer.yml启动退出 查看日志/data1/log/drainer.log输出如下

[2019/08/23 18:19:52.151 +08:00] [ERROR] [syncer.go:405] [“Failed to close syncer”] [error=“table not exist”] [errorVerbose=“table not existngithub.com/pingcap/tidb-binlog/pkg/loader.init.ializers /home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/loader/util.go:28 runtime.main /usr/local/go/src/runtime/proc.go:188 runtime.goexit /usr/local/go/src/runtime/asm_amd64.s:1337”] [2019/08/23 18:19:52.151 +08:00] [ERROR] [server.go:267] [“syncer exited abnormal”] [error=“table not exist”] [errorVerbose=“table not existngithub.com/pingcap/tidb-binlog/pkg/loader.init.ializers /home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/loader/util.go:28 runtime.main /usr/local/go/src/runtime/proc.go:188 runtime.goexit /usr/local/go/src/runtime/asm_amd64.s:1337”]

1、请问以上同步到MySQL的问题如何排查解决。 2、我能否将上游的数据库同步到下游的不同的数据库名中(仅仅数据库名不同),如何操作。

我认为下游的数据库的作用是用来备份主数据库的数据,当主数据发生意外不会导致数据丢失,如果您的下游数据库名称不一致又如何能说明这是备份的数据。这问题应该是想法上的问题,我觉得您可以考虑一下我的建议,按照正确的方式去使用工具。何苦为难自己

那问题1大佬知不知道如何解决

  1. 先使用 mydumper 将tidb现有的数据都备份到本地,然后使用 loader 将数据备份到 mysql
  2. 备份好以后,每个 mydumper 备份的文件中都会有一个 metadata文件, 你去这里找到 Pos, 例如
[tidb@dev10 tidb_dev2_backup_20190823]$ cat metadata
Started dump at: 2019-08-23 09:58:35
SHOW MASTER STATUS:
        Log: tidb-binlog
        Pos: 410655264678084638
        GTID:

Finished dump at: 2019-08-23 09:58:48
[tidb@dev10 tidb_dev2_backup_20190823]$
  1. 你把这个 Pos 写到 inventory.ini 文件中 drainer 文件的配置那块儿 例如:
......
[drainer_servers]
drainer_mysql_1 ansible_host=192.168.180.33 initial_commit_ts="410655264678084638"
drainer_mysql_2 ansible_host=192.168.180.34 initial_commit_ts="410655264678084638"
drainer_mysql_3 ansible_host=192.168.180.35 initial_commit_ts="410655264678084638"
......
  1. 然后在启动 drainer