当前位置: 首页 > news >正文

网站建设资质证书个人网站 创意

网站建设资质证书,个人网站 创意,遵义网上制作网站,学电子商务后悔了MySQL 和 Elasticsearch 之间的数据同步是常见的需求#xff0c;通常用于将结构化数据从关系型数据库同步到 Elasticsearch 以实现高效的全文搜索、聚合分析和实时查询。以下是几种常用的同步方案及其实现方法#xff1a; 1. 应用层双写#xff08;双写模式#xff09; 原…MySQL 和 Elasticsearch 之间的数据同步是常见的需求通常用于将结构化数据从关系型数据库同步到 Elasticsearch 以实现高效的全文搜索、聚合分析和实时查询。以下是几种常用的同步方案及其实现方法 1. 应用层双写双写模式 原理 在业务代码中同时向 MySQL 和 Elasticsearch 写入数据保证两者数据一致。 实现步骤 在写入 MySQL 的事务中同步或异步写入 Elasticsearch。需处理可能的写入失败问题如 Elasticsearch 宕机通过重试机制或补偿机制如消息队列确保最终一致性。 优点 实现简单对架构改动较小。实时性强写入即生效。 缺点 双写可能引入数据不一致风险如 MySQL 成功但 Elasticsearch 失败。业务逻辑耦合度高维护成本增加。 适用场景 小规模数据同步对实时性要求高。业务逻辑简单可接受双写风险。 2. 使用 Logstash 定时同步 原理 通过 Logstash 的 jdbc 插件定期轮询 MySQL将增量或全量数据同步到 Elasticsearch。 实现步骤 配置 Logstash 输入Input使用 jdbc 插件连接 MySQL定义 SQL 查询如按时间戳增量拉取。配置 Logstash 输出Output将数据写入 Elasticsearch。定时任务通过 schedule 参数设置轮询间隔如每分钟一次。 示例 Logstash 配置 input {jdbc {jdbc_driver_library mysql-connector-java-8.0.26.jarjdbc_driver_class com.mysql.cj.jdbc.Driverjdbc_connection_string jdbc:mysql://localhost:3306/mydbjdbc_user rootjdbc_password passwordschedule * * * * * # 每分钟执行一次statement SELECT * FROM products WHERE updated_at :sql_last_valueuse_column_value truetracking_column updated_attracking_column_type timestamp} } output {elasticsearch {hosts [http://localhost:9200]index productsdocument_id %{id}} }优点 配置简单无需修改业务代码。支持增量同步。 缺点 实时性较差依赖轮询间隔。频繁轮询可能对 MySQL 造成压力。 适用场景 对实时性要求不高如 T1 数据同步。数据量较小无需复杂转换的场景。 3. 基于 Binlog 的实时同步 原理 通过解析 MySQL 的 Binlog 日志记录数据变更将变更事件实时同步到 Elasticsearch。 常用工具 Canal阿里开源工具Debezium基于 Kafka ConnectMaxwell 实现步骤以 Canal 为例 开启 MySQL Binlog # 在 MySQL 配置文件中启用 Binlog server-id 1 log_bin /var/log/mysql/mysql-bin.log binlog_format ROW # 必须为 ROW 模式部署 Canal Server Canal 伪装为 MySQL 从库订阅 Binlog 变更。解析 Binlog 并转发到消息队列如 Kafka或直接调用 Elasticsearch API。 数据消费与写入 Elasticsearch 编写消费者程序如 Java/Python将 Binlog 中的增删改事件转换为 Elasticsearch 的写入/更新/删除操作。 优点 实时性高毫秒级延迟。对业务代码无侵入。 缺点 部署复杂度较高需维护中间件如 Canal、Kafka。需处理数据格式转换如关系表到 JSON 文档。 适用场景 大规模数据实时同步。对数据一致性要求高的场景。 4. 使用消息队列解耦 原理 将 MySQL 的变更事件发送到消息队列如 Kafka、RabbitMQ由消费者异步写入 Elasticsearch。 实现步骤 捕获 MySQL 变更 使用 Binlog 工具如 Debezium将变更事件发送到 Kafka。 消费 Kafka 消息 编写消费者程序处理消息并写入 Elasticsearch。 示例架构 MySQL → Debezium → Kafka → Consumer → Elasticsearch优点 高可靠性消息队列提供持久化和重试机制。解耦生产者和消费者扩展性强。 缺点 架构复杂度高需维护多个组件。 适用场景 高并发、高可靠性的生产环境。需要灵活扩展和数据缓冲的场景。 5. 第三方工具 工具推荐 Go-MySQL-Elasticsearch基于 Go 开发的工具直接读取 MySQL Binlog 并同步到 Elasticsearch。Elasticsearch River已弃用旧版 Elasticsearch 插件不建议使用。 实现步骤以 Go-MySQL-Elasticsearch 为例 配置 MySQL 连接信息和 Elasticsearch 地址。定义表到索引的映射规则。启动服务自动监听 Binlog 并同步数据。 优点 开箱即用无需开发代码。 缺点 灵活性和可定制性较差。 总结与选型建议 方案实时性复杂度可靠性适用场景应用层双写高低中小规模强实时性Logstash 定时同步低低中离线分析非实时场景Binlog 同步Canal高高高大规模实时性要求高消息队列Kafka高高高高并发需解耦和扩展第三方工具中中中快速实现无需定制开发 注意事项 数据结构转换需将 MySQL 的行数据转换为 Elasticsearch 的 JSON 文档可能涉及嵌套对象或父子关系处理。幂等性确保同步操作的幂等性如通过唯一ID避免重复写入。错误处理监控同步失败的情况提供重试或人工干预机制。性能优化 批量写入 Elasticsearch使用 _bulk API。调整 Elasticsearch 的刷新间隔refresh_interval提升写入性能。 通过合理选择方案并配合监控工具如 Kibana、Prometheus可实现高效可靠的 MySQL 到 Elasticsearch 数据同步。
http://www.w-s-a.com/news/231449/

相关文章:

  • 大规模网站开发语言宁夏建设职业技术学院网站
  • 寻花问柳专注做一家男人爱的网站北京展台设计制作
  • 中卫网站设计做自己的卡盟网站
  • 广州网站推广自助做网站人家直接百度能搜到的
  • 电子商务网站建设目标及利益分析安徽建设厅网站施
  • 制作网站策划书网站建设公司的性质
  • 哪个网站可以做免费宣传简单的网页设计网站
  • 福州专业网站制作公司金湖建设局网站
  • 好的移动端网站模板下载兰州线上广告推广
  • 宁波高端建站深圳品牌营销策划机构
  • 权威网站优化价格建设厅科技中心网站首页
  • 保定模板建站软件腾讯云做淘客网站
  • 单位建设一个网站的费用正规刷手机单做任务网站
  • 北京定制网站价格开网店怎么卖到外国
  • 做网站 后端是谁来做的工程建设指挥部网站
  • wordpress建站 云打印昆明 网站设计
  • 太原网站建设设计网站建设策划书(建设前的市场分析)
  • 哪里有制作网站电商新手入门知识
  • 制作网站的后台文昌网站建设 myvodo
  • 网站 购买移动网站制作
  • 南京网站网站建设学校英山做网站多少钱
  • 珠海网站建设网如何注册公司公众号
  • 手机网站页面制作网站怎么做快照
  • asp网站怎么仿站推广软件下载平台
  • 电子商务网站建设期末试题08答案互联网怎么做
  • 规范门户网站的建设和管理办法微信网站开发公司电话
  • 免费行情网站凡客的官网
  • 做网站运营的女生多吗海淀企业网站建设
  • 网站运行环境配置网站建设个一般需要花费多少钱
  • 广西平台网站建设报价wordpress 免费 企业 主题