热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库技术:如何使用Maxwell实时同步mysql数据

maxwell简介maxwell是由java编写的守护进程,可以实时读取mysqlbinlog并将行更新以json格式写入kafka、rabbitmq、redis等中,这样有了

maxwell简介

maxwell是由java编写的守护进程,可以实时读取mysql binlog并将行更新以json格式写入kafka、rabbitmq、redis等中,  这样有了mysql增量数据流,使用场景就很多了,比如:实时同步数据到缓存,同步数据到elasticsearch,数据迁移等等。

maxwell官网:
 maxwell源代码:

maxwell的配置与使用

maxwell 依赖java sdk,所以需要先配置jdk环境。

1.下载maxwell安装包

  root@xxx maxwell]# pwd  /usr/local/maxwell  [root@xxx maxwell]# wget https://github.com/zendesk/maxwell/releases/download/v1.19.5/maxwell-1.19.5.tar.gz  [root@xxx maxwell]# tar zxvf maxwell-1.19.5.tar.gz   [root@xxx maxwell]# cd maxwell-1.19.5

2.配置mysql,打开mysql binlog日志

  [root@xxx mysql]# vi /usr/local/mysql/my.cnf     [mysqld]  log-bin=mysql-bin #添加这一行就  binlog-format=row #选择row模式  server_id=1 #随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了

重启mysql服务,登陆mysql,查看binlog日志模式

  mysql> show variables like '%log_bin%'  +---------------------------------+-------------------------------+  | variable_name                   | value                         |  +---------------------------------+-------------------------------+  | log_bin                         | on                            |  | log_bin_basename                | /data/mysqldb/mysql-bin       |  | log_bin_index                   | /data/mysqldb/mysql-bin.index |  | log_bin_trust_function_creators | off                           |  | log_bin_use_v1_row_events       | off                           |  | sql_log_bin                     | on                            |  +---------------------------------+-------------------------------+  6 rows in set (0.11 sec)

maxwell需要在schema_database选项指定的数据库中存储状态的权限(默认库名称为maxwell),所以需要提前给权限:

  #创建一个有同步数据的用户yhrepl  mysql> create user 'yhrepl'@'*' identified by 'scgaopan';   query ok, 0 rows affected (0.10 sec)    #此用户yhrepl要有对需要同步的数据库表有操作权限  mysql> grant all privileges on test.* to 'yhrepl'@'%' identified by 'scgaopan';   query ok, 0 rows affected (0.13 sec)    #给yhrepl有同步数据的权限  mysql> grant select,replication client,replication slave on *.* to 'yhrepl'@'%' identified by 'scgaopan';  query ok, 0 rows affected (0.10 sec)  # maxwell需要在schema_database选项指定的数据库中存储状态的权限(默认库名称为maxwell)  mysql> grant all privileges on maxwell.* to 'yhrepl'@'%' identified by 'scgaopan';  query ok, 0 rows affected (0.09 sec)

3.启动maxwell,主要介绍数据写入rabbitmq的实战:

  [root@xxx maxwell-1.19.5]# vi /usr/local/maxwell/maxwell-1.19.5/config.properties  #日志级别  log_level=debug    producer=rabbitmq  daemon=true    #监控的数据库, mysql用户必须拥有读取binlog权限和新建库表的权限  host=47.105.110.xxx  user=yhrepl  password=scgaopan    output_nulls=true  jdbc_optiOns=autorecOnnet=true    #监控数据库中的哪些表  filter=exclude: *.*,include: test.aa    #replica_server_id 和 client_id 唯一标示,用于集群部署  replica_server_id=64  client_id=test-id    #metrics_type=http  #metrics_slf4j_interval=60  #http_port=8111  #http_diagnostic=true # default false    #rabbitmq  rabbitmq_host=47.105.110.xxx  rabbitmq_port=5672  rabbitmq_user=guest  rabbitmq_pass=guest  rabbitmq_virtual_host=/  rabbitmq_exchange=maxwell  rabbitmq_exchange_type=topic  rabbitmq_exchange_durable=false  rabbitmq_exchange_autodelete=false  rabbitmq_routing_key_template=%db%.%table%  rabbitmq_message_persistent=false  rabbitmq_declare_exchange=true

启动maxwell:

  [root@xxx maxwell-1.19.5]# ./bin/maxwell  #可以后台启动  [root@xxx maxwell-1.19.5]# nohub ./bin/maxwell &

启动成功,此时会自动生成maxwell库,该库记录了maxwell同步的状态,最后一次同步的id等等信息,在主库失败或同步异常后,只要maxwell库存在,下次同步会根据最后一次同步的id。如果没有生成maxwell库或报错,可能config.properties中配置的mysql用户权限不够

rabbitmq的操作

rabbitmq的操作,启动maxwell后就有一个maxwell的exchage生成

如何使用Maxwell实时同步mysql数据

但对应的queue和exchange和queue的绑定需要用户自己去实现

新建一个maxwell-test的queue:

如何使用Maxwell实时同步mysql数据

把queue与exchange进行绑定:

如何使用Maxwell实时同步mysql数据

注意,这里的routing key 是区分大小写的

在数据库中修改一条记录,可以看到maxwell-test队列里面有一第记录了。

如何使用Maxwell实时同步mysql数据

全量同步

使用maxwell-bootstrap命令

  ./bin/maxwell-bootstrap --database xhd --table xhd-sso --host 127.0.0.1 --user xiehd --password xiehd2018 --client_id maxwell_dev

同步xhd.xhd-sso表的所有数据,并指定client_id示maxwell_dev的maxwell执行同步

上一个命令先开着,然后再启动client_id=maxwell_dev的maxwell

  ./bin/maxwell --client_id maxwell_dev

等待执行完成即可

以上就是如何使用maxwell实时同步mysql数据的详细内容,更多关于用maxwell同步mysql数据的资料请关注<编程笔记>其它相关文章!

需要了解更多数据库技术:如何使用Maxwell实时同步mysql数据,都可以关注数据库技术分享栏目—编程笔记


推荐阅读
  • 在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • 本文深入探讨了原型模式在软件设计中的应用与实现。原型模式通过使用已有的实例作为原型来创建新对象,而不是直接通过类实例化。这种方式不仅简化了对象的创建过程,还提高了系统的灵活性和效率。具体来说,原型模式涉及一个支持克隆功能的接口或基类,子类通过实现该接口来提供具体的克隆方法,从而实现对象的快速复制。此外,文章还详细分析了原型模式的优缺点及其在实际项目中的应用场景,为开发者提供了实用的指导和建议。 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 优化Node.js项目:有效管理和清理依赖项
    在Node.js项目中,有效管理和清理依赖项是提升性能和安全性的重要步骤。为了确保项目中仅保留必要的库,应定期检查并移除`node_modules`目录下不再使用的包。同时,所有必需的依赖项都应在`package.json`文件中明确列出,以保证项目的可维护性和可复现性。此外,利用如`npm prune`等工具可以帮助自动化这一过程,进一步提高效率。 ... [详细]
  • Jedis接口分类详解与应用指南
    本文详细解析了Jedis接口的分类及其应用指南,重点介绍了字符串数据类型(String)的接口功能。作为Redis中最基本的数据存储形式,字符串类型支持多种操作,如设置、获取和更新键值对等,适用于广泛的应用场景。 ... [详细]
  • 0.10.2 编译在 ARMHF 和 ARME 架构上遇到问题 ... [详细]
author-avatar
手机用户2502931713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有