当前位置:首页 > 文章列表 > 数据库 > MySQL > Dba+开源工具:补齐MySQL 8.0迁移短板,Binlog解析ETL抽取数据工具

Dba+开源工具:补齐MySQL 8.0迁移短板,Binlog解析ETL抽取数据工具

来源:51cto 2023-06-27 07:57:23 0浏览 收藏

本篇文章向大家介绍《Dba+开源工具:补齐MySQL 8.0迁移短板,Binlog解析ETL抽取数据工具》,主要包括binlog、开源工具、dba+,具有一定的参考价值,需要的朋友可以参考一下。

工具简介

由于MariaDB已经远离MySQL,从MySQL 8.0迁移到MariaDB 10.5时,binlog同步复制已经不兼容(参考手册:https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/)。

图片
图片

1、若MariaDB是主库,MySQL是从库,在GTID模式下,从MariaDB同步复制数据时,GTID与MySQL不兼容,同步将报错。

2、若MySQL是主库,MariaDB是从库,MariaDB无法从MySQL 8.0主库上复制,因为MySQL 8.0具有不兼容的二进制日志格式。

因此,借助binlog_parse_sql工具,可将binlog解析并生成SQL语句,反向插入MariaDB数据库里。

使用场景

1、从MySQL 8.0实时解析binlog并复制到MariaDB,适用于将MySQL 8.0迁移至MariaDB(ETL抽数据工具)--- binlog_parse_queue.py

2、数据恢复(研发手抖误删除一张表,通过历史全量恢复+binlog增量恢复)

3、从MySQL 8.0实时解析binlog并复制到ClickHouse,适用于将MySQL 8.0迁移至ClickHouse(ETL抽数据工具)--- binlog_parse_clickhouse.py

原理

将解析binlog和执行SQL语句的两个过程分别由两个线程来执行。其中,解析binlog的线程每次解析完一个事件后通过队列将SQL语句传给SQL执行线程,SQL执行线程从队列中取出SQL语句并按顺序依次执行,这样就保证了SQL语句的串行执行。

MariaDB使用

1、安装:

shell> pip3 install pymysql mysql-replication -i "http://mirrors.aliyun.com/pypi/simple" --trusted-host "mirrors.aliyun.com"

2、前台运行:

shell> python3 binlog_parse_queue.py

图片
图片

3、后台运行:

shell> nohup python3 binlog_parse_queue.py > from_mysql_to_mariadb.log 2>&1 &

4、工具运行后,会生成binlog_info.txt文件,即实时保存已经解析过的binlog文件名和position位置点,以方便程序挂掉后的断点续传。

注:运行后如报错LookupError: unknown encoding: utf8mb3

解决方案:

编辑/usr/local/python3/lib/python3.10/site-packages/pymysql/charset.py文件,尾部增加如下两行:

_charsets.add(Charset(256, "utf8mb3", "utf8mb3_general_ci", "Yes")) _charsets.add(Charset(257, "utf8mb3", "utf8mb3_bin", ""))

参考如下链接:https://github.com/julien-duponchelle/python-mysql-replication/issues/386

ClickHouse使用

1、安装:

shell> pip3 install clickhouse-driver -i "http://mirrors.aliyun.com/pypi/simple" --trusted-host "mirrors.aliyun.com"

注:clickhouse_driver库需要调用ssl,由于python 3.10之后版本不在支持libressl使用ssl,需要用openssl 1.1.1版本或者更高版本。

参见:python 3.10编译安装报SSL失败解决方法(https://blog.csdn.net/mdh17322249/article/details/123966953)

2、MySQL表结构转换为ClickHouse表结构

shell> vim mysql_to_clickhose_schema.py(修改脚本里的配置信息)

注:mysql_to_clickhose_schema_test.py(该工具仅为单表测试使用)

运行:

shell> python3 mysql_to_clickhose_schema.py

原理:连接MySQL获取表结构schema,然后在ClickHouse里执行建表语句。

3、MySQL全量数据迁移至ClickHouse步骤:

第一步:

/usr/bin/mydumper -h 192.168.192.180 -u hechunyang -p wdhcy159753 -P 3306 --no-schemas -t 12 --csv -v 3 --regex '^hcy.user$' -o ./

注:需要mydumper 0.12.3-3版本支持导出CSV格式。

第二步:

clickhouse-client --query="INSERT INTO hcy.user FORMAT CSV"

第三步:或者使用mysql_to_clickhouse_sync.py工具(MySQL全量数据导入到ClickHouse里,默认并行10张表同时导出数据,每次轮询取1000条数据)。

使用条件:表必须有自增主键,测试环境MySQL 8.0

如果你说服不了开发对每张表增加自增主键ID,那么你要设置参数

sql_generate_invisible_primary_key

开启这个参数,会在建表时,检查表中是否有主键,如果没有主键,则会自动创建。该参数非常实用,减少了DBA对SQL语句表结构的审计(参考:https://blog.51cto.com/hcymysql/5952924)。

4、binlog_parse_clickhouse.py(ETL抽数据工具)将MySQL8.0增量数据迁移至ClickHouse

shell> vim binlog_parse_clickhouse.py(修改脚本里的配置信息)

前台运行:

shell> python3 binlog_parse_clickhouse.py

后台运行:

shell> nohup python3 binlog_parse_clickhouse.py > from_mysql_to_clickhouse.log 2>&1 &

下载方式

此工具现通过dbaplus社群免费为大家提供下载使用。若使用过程中有任何问题或建议,可随时与我们联系,欢迎大家试用。

登录以下链接即可下载:

https://github.com/hcymysql/binlog_parse_sql

今天关于《Dba+开源工具:补齐MySQL 8.0迁移短板,Binlog解析ETL抽取数据工具》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!

版本声明
本文转载于:51cto 如有侵犯,请联系study_golang@163.com删除
如何使用Golang实现Web服务端缓存如何使用Golang实现Web服务端缓存
上一篇
如何使用Golang实现Web服务端缓存
Golang学习之基于Spring的Web应用程序开发
下一篇
Golang学习之基于Spring的Web应用程序开发
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 笔灵AI生成答辩PPT:高效制作学术与职场PPT的利器
    笔灵AI生成答辩PPT
    探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
    13次使用
  • 知网AIGC检测服务系统:精准识别学术文本中的AI生成内容
    知网AIGC检测服务系统
    知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
    22次使用
  • AIGC检测服务:AIbiye助力确保论文原创性
    AIGC检测-Aibiye
    AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
    30次使用
  • 易笔AI论文平台:快速生成高质量学术论文的利器
    易笔AI论文
    易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
    38次使用
  • 笔启AI论文写作平台:多类型论文生成与多语言支持
    笔启AI论文写作平台
    笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
    35次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码