Mysql同步到tidb,MYSQL5.7实时同步数据到TiDB

bc3f9276acf88283a0569b9b9ef9ee92.png

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

操作系统:CentOS7

mysql版本:5.7

TiDB版本:2.0.0

同步方法:使用TiDB提供的工具集进行同步

说明:

当独立mysql同步时,可以直接使用binlog同步,

但是,当MySQL集群同步时,您必须依赖GTID,但是在打开GTID之后,对事物的要求更高,导致以下操作失败:

(1)多个事件不能同时合并;

(2)不能在事务内创建临时表;

(3)不能在同一事务中更新InnoDB表和MyISAM表。

下载tidb同步工具包

#wget http:// download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz

#wget http:// download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.sha256

#sha256sum -c tidb-enterprise-tools-latest-linux-amd64.sha256

# tar-xzf tidb-enterprise-tools-latest-linux-amd64。 焦油 。 z

#cd tidb -enterprise-tools-latest-linux-amd64

mysql-binlog同步

配置mysql基本信息,添加以下配置

vi/etc/my.cnf

#server-默认情况下,id为0,并且不接受任何从属。因此必须将其更改为非0的数字

服务器-id = 1 #STATEMENT,ROW,MIXED三种模式。默认为MIXED,需要修改为ROW

binlog_format = 行

#启用日志输出并指定日志文件的位置和名称

log_bin = mysql-bin

日志-bin-index = mysql-bin.index

#提交日志后的写模式,请提供0, 1 ,2个三个选择,1是最可靠和最差的表现

# 0 :日志缓冲区将每秒写入一次日志文件,并且日志同时执行文件刷新(刷新到磁盘)操作。在这种模式下,提交事务时,将不会主动触发写入磁盘的操作。

# 1:每次提交事务时,MySQL都会将日志缓冲区的数据写入日志。file ,然后刷新(刷新到磁盘),此模式是系统默认设置。

# 2:每次事务提交时,MySQL都会写入日志缓冲区数据以记录日志file ,但是不会同时执行刷新(刷新到磁盘)操作。在这种模式下,MySQL将每秒执行一次刷新(刷新到磁盘)操作。

innodb_flush_log_at_trx_commit = 1 #二进制日志(binary log)与磁盘同步的频率

# 0 不要主动同步,而是依靠操作系统本身来不规则地刷新文件内容到磁盘。

# 1 在每个语句或事物之后同步一次

#n指定n条语句或要同步一次的事物

sync_binlog = 1 #是否将同步记录记录在自己的binlog中,默认为0,即没有记录。

#如果本地计算机B具有从属计算机C,则当A将Binlog与B同步时,未启用此选项,A的操作将仅与B同步,而不与C同步。也就是说,B将不记录Binlog并且不会同步到C

log-slave-updates = 1

配置完成后重新启动mysql

#systemctl重新启动mysql

导出前检查

您需要在导出之前检查表。这里我们以mysql系统库为例。实际导出数据时,应指定相应的库。如果出现错误,则表明无法同步

#检查整个mysql库

。/checker-host 172.18。 100.65-L debug-user root-密码root mysql

#检查mysql库下的db表

。/checker-host 172.18。 100.65-L debug-user root-password root mysql db

导出数据

https://blog.csdn.net/weixin_30550081/article/details/mydumper-h 172.20。 51.68-P 3306-u root-p root-B housedata-t 5-F 1--skip-tz-utc-o test

-h源数据库IP?

-P源数据库端口?

-u用户名-p密码?

-B源数据库名称?

-t?导出线程数?

-F分割文件大小,单位M(建议64)

-skip-tz-utc不更改时间??

-o导出到文件夹名称,支持绝对路径

导出后,您可以在相应的文件夹中看到相应的导出数据:

数据库名称模式-create.sql库信息

数据库名称。表名-schema.sql表信息

数据库名称。表名。 SQL表数据

元数据同步信息(在后续的增量同步中,您需要使用文件中的信息)

导入数据

https://blog.csdn.net/weixin_30550081/article/details/loader-h 172.18。 100.66-P 4000-u root-t 3-d测试

-h目标数据库IP

-P目标数据库端口

-u用户名

-p密码(密码为空时,删除此参数)

-t导入线程

-d导入的文件夹,支持绝对路径

导入时,将创建一个tidb_loader数据,其中将包含一个检查点表,该表记录了每个表导入的进度

5e8383a5cbffc6786650a8a66b4dd7c7.png

如果清除了目标记录,则再次导入数据时将不会再次导入数据。您可以清除检查点,然后将其导入。

开始同步

在同步器目录中创建config.toml和syncer.mata

#vi syncer.meta

binlog-name = " mysql-bin.000001 " binlog-pos = 68335

#vi config.toml

log-level = " info " 服务器-id = 101 #meta文件地址

meta = " https://blog.csdn.net/weixin_30550081/article/details/syncer.meta" worker-count = 16 批处理 = 10 ## pprof调试地址,Prometheus也可以通过该地址提取同步器指标

##将 127.0。 0.1 修改为相应的主机IP地址

状态-addr = " 172.20.51.68:10086" 复制-做-db = [" housedata " ]

[从]

主机 = " 172.20.51.68 " 用户 = " 根 " 密码 = " 根 " 端口 = 3306 [至]

主机 = " 172.18.100.66 " 用户 = " 根 " 密码 = "" port = 4000

启动同步程序

https://blog.csdn.net/weixin_30550081/article/details/syncer-config config.toml

如果同步成功,则应该自动更新syncer.meta文件的binlog-pos,但不会自动更新,因此将导致数据重新同步每次。

这是进行后续操作以了解问题所在。

GTID同步

检查mysql版本,最佳版本是5.7,其他版本不保证配置成功。因为GTID仅在5.6版中可用

mysql \>显示变量,例如" 版本 ";

根据binlog同步配置,添加GTID的相关配置。

#vi/etc/my.cnf

gtid-mode = 启用

force_gtid_consistency = ON

systemctl重新启动mysqld

使用https://blog.csdn.net/weixin_30550081/article/details/mydumper以与binlog相同的方式导出数据。

但是请注意,在导出之前需要插入一条记录,否则元数据文件中的GTID将是时空的。因为刚刚启用了GTID,所以尚未生成任何记录。

https://blog.csdn.net/weixin_30550081/article/details/mydumper-h 172.20。 51.68-P 3306-u root-p root-B housedata-t 5-F 1--skip-tz-utc-o test

以与binlog相同的方式导入数据

https://blog.csdn.net/weixin_30550081/article/details/loader-h 172.18。 100.66-P 4000-u root-t 3-d测试

要设置syncer.mate,您需要从元文件中再复制一个binlog-gtid

binlog-name = " mysql-bin.000002 " binlog-pos = 13355 binlog-gtid = " c1d8336d-5d6d-11e8-8ad0-0050563c1c70:1-30 "

?要开始同步,您需要添加相应的参数

https://blog.csdn.net/weixin_30550081/article/details/syncer-config config.toml -启用-gtid

尽管syncer.mate文件在同步后刷新了binlog-pos,但是binlog-gtid仍然没有刷新。

因此,如果您重新启动,则只能手动再次进行操作,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值