广告
返回顶部
首页 > 资讯 > 数据库 >6:多源复制的实现
  • 660
分享到

6:多源复制的实现

2024-04-02 19:04:59 660人浏览 安东尼
摘要

Mysql多源复制允许复制slave同时从多个源接收事务。可以使用多源复制将多个服务器备份到一个服务器,合并表碎片,并将来自多个服务器的数据合并到一个服务器。多源复制在应用事务时不实现任何冲突检测或解决,

  • Mysql多源复制允许复制slave同时从多个源接收事务。可以使用多源复制将多个服务器备份到一个服务器,合并表碎片,并将来自多个服务器的数据合并到一个服务器。多源复制在应用事务时不实现任何冲突检测或解决,如果需要,这些任务留给应用程序完成。
  • 下面我们就来配置一个多源复制,多源复制这种拓扑至少需要两个masters和slaves。
  • 服务器环境:192.168.1.2 (master1) 192.168.1.3 (new master) 192.168.1.4 (slave)
  • 可以将多源复制拓扑中的masters配置为使用基于全局事务标识符(GTID)的复制或基于二进制日志位置的复制,有关如何使用基于GTID的复制配置master,请看https://blog.51cto.com/itzhoujun/2351367。 有关如何使用基于文件位置的复制配置master,请参见Https://blog.51cto.com/itzhoujun/2352688和https://blog.51cto.com/itzhoujun/2352693
  • 本次我们基于GTID来做多源复制
    1. 登录slave
      • 多源复制拓扑中的slaves需要基于TABLE的存储库。多源复制与基于FILE的存储库不兼容。mysqld使用的存储库类型可以在启动时配置,也可以动态配置。分别有以下两种形式
        • 要在启动时配置复制slave使用的存储库类型,请使用以下选项启动mysqld:
          • --master-info-repository=TABLE --relay-log-info-repository=TABLE
        • 要修改使用FILE存储库以使用TABLE存储库的现有复制slave,请通过运行以下命令动态转换现有复制存储库:
          • STOP SLAVE;
          • SET GLOBAL master_info_repository = 'TABLE';
          • SET GLOBAL relay_log_info_repository = 'TABLE';
      • 我们使用使用动态修改
        • mysql> STOP SLAVE;
        • Query OK, 0 rows affected (0.00 sec)
        • mysql> SET GLOBAL master_info_repository = 'TABLE';
        • Query OK, 0 rows affected (0.00 sec)
        • mysql> SET GLOBAL relay_log_info_repository = 'TABLE';
        • Query OK, 0 rows affected (0.00 sec)
        • mysql> show variables like 'master_info_repository';
        • +------------------------+-------+
        • | Variable_name | Value |
        • +------------------------+-------+
        • | master_info_repository | TABLE |
        • +------------------------+-------+
        • 1 row in set (0.01 sec)
        • mysql> show variables like 'relay_log_info_repository';
        • +---------------------------+-------+
        • | Variable_name | Value |
        • +---------------------------+-------+
        • | relay_log_info_repository | TABLE |
        • +---------------------------+-------+
        • 1 row in set (0.00 sec)
        • #说明设置成功了
    2. 登录new master(如果有多个new master就重复此步骤)
      • 要启用基于GTID的复制,必须在启用GTID模式的情况下启动每个服务器,所以我们先修改配置文件,修改后配置文件再重启mysql
        • 6:多源复制的实现
        • 参数的具体含义,我已经在https://blog.51cto.com/itzhoujun/2351367和https://blog.51cto.com/itzhoujun/2352693详细介绍过了
        • mysql> show variables like '%gtid%';
        • +----------------------------------+-------------------------------------------+
        • | Variable_name | Value |
        • +----------------------------------+-------------------------------------------+
        • | binlog_gtid_simple_recovery | ON |
        • | enforce_gtid_consistency | ON |
        • | gtid_executed_compression_period | 1000 |
        • | gtid_mode | ON |
        • | gtid_next | AUTOMATIC |
        • | gtid_owned | |
        • | gtid_purged | b45f359b-1747-11e9-bee2-00163e0ea0d9:1-15 |
        • | session_track_gtids | OFF |
        • +----------------------------------+-------------------------------------------+
        • 8 rows in set (0.00 sec)
        • #可以看到这个结果,就说明设置成功了
      • 添加复制用户(如果已经有复制用户了,则跳过这一步)
        • mysql> CREATE USER 'xiaoming'@'%' IDENTIFIED BY 'Xiaoming@123456';
        • Query OK, 0 rows affected (0.01 sec)
        • mysql> GRANT REPLICATION SLAVE ON . TO 'xiaoming'@'%';
        • Query OK, 0 rows affected (0.01 sec)
    3. 登录slave
      • 使用CHANGE MASTER TO语句通过使用FOR CHANNEL channel 子句将新master添加到通道
        • mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.1.4', MASTER_USER='xiaoming', MASTER_PASSWord='Xiaoming@123456', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'newmaster-1';
        • Query OK, 0 rows affected, 2 warnings (0.03 sec)
        • #如果有多个new master 则需要重复此步骤,根据实际情况更改主机名,端口和通道名称。
      • 启动多源复制slaves
        • 添加了要用作复制master的所有通道后,使用START SLAVE thread_types语句启动复制。在slave上启用多个通道后,您可以选择启动所有通道,也可以选择要启动的特定通道
        • 要启动所有当前配置的复制通道:
          • START SLAVE thread_types;
        • 要仅启动命名通道,请使用FOR CHANNEL channel子句:
          • START SLAVE thread_types FOR CHANNEL channel;
      • 我们这里直接START SLAVE,启动所有的渠道
      • 然后我们查看一下状态信息
        • mysql> select * from perfORMance_schema.replication_applier_status;
        • +--------------+---------------+-----------------+----------------------------+
        • | CHANNEL_NAME | SERVICE_STATE | REMaiNING_DELAY | COUNT_TRANSACTIONS_RETRIES |
        • +--------------+---------------+-----------------+----------------------------+
        • | | ON | NULL | 0 |
        • | newmaster-1 | ON | NULL | 0 |
        • +--------------+---------------+-----------------+----------------------------+
        • 2 rows in set (0.00 sec)
        • #表示有两个渠道,那么分别看下两个渠道的信息
        • mysql> show slave status for channel '' \G
        • 6:多源复制的实现
        • #Slave_IO_Running和Slave_SQL_Running都是YES,那说明没问题
        • mysql> show slave status for channel 'newmaster-1' \G
        • 6:多源复制的实现
        • #Slave_IO_Running和Slave_SQL_Running都是YES,那说明没问题
          1. 接下来就是分别在master和new master针对数据库操作一些测试数据,然后看下slave是否同步过来了,如果同步过来了,那就没啥问题

参考资料:https://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html

PREV: 5:使用GTID进行复制 https://blog.51cto.com/itzhoujun/2352693
NEXT: 7:基于语句复制和行复制的优点和缺点 https://blog.51cto.com/itzhoujun/2354045

您可能感兴趣的文档:

--结束END--

本文标题: 6:多源复制的实现

本文链接: https://www.lsjlt.com/news/45600.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 6:多源复制的实现
    MySQL多源复制允许复制slave同时从多个源接收事务。可以使用多源复制将多个服务器备份到一个服务器,合并表碎片,并将来自多个服务器的数据合并到一个服务器。多源复制在应用事务时不实现任何冲突检测或解决,...
    99+
    2022-10-18
  • MySQL5.7多源复制的实验
    MySQL5.7多源复制的实验node1: 192.168.2.171     master1node2: 192.168.2.172  &nbs...
    99+
    2022-10-18
  • mysql 5.7如何实现多主一从的多源复制
    这篇文章主要介绍了mysql 5.7如何实现多主一从的多源复制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 主服务器创建用户 主1 ...
    99+
    2022-10-19
  • mariadb 多源复制
          最近做慢sql优化,比较头疼,看到慢sql中全是一些select  count(*) 或者sum这样的聚合统计的sql,由于本人的数据库就是传统的主从,或...
    99+
    2022-10-18
  • Docker容器如何实现MySQL多源复制
    今天小编给大家分享一下Docker容器如何实现MySQL多源复制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。⛳️ 1.多源...
    99+
    2023-07-02
  • MySQL5.7 基于GTID的多源复制实践
    环境说明:主机IPMySQL版本 端口复制帐号复制密码Master1192.168.1.2255.7.253306repl123456Master2192.168.1.1005.7.253306repl12...
    99+
    2022-10-18
  • MySQL5.7的多源复制方法
    本篇内容主要讲解“MySQL5.7的多源复制方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL5.7的多源复制方法”吧!    &...
    99+
    2022-10-18
  • mysql多源复制详解
    大家应该知道,mysql比起其他数据库,最大的特色是就是主从复制,不过5.7之前的版本最多就只支持一主多从的复制方式,对于一些统计类的需求,就需要跨库,这是比较麻烦的事情,以往只能交由数据库中间件(myca...
    99+
    2022-10-18
  • Docker容器实现MySQL多源复制场景分析
    目录前言⛳️ 1.多源复制简介⛳️ 2.多源复制使用场景⛳️ 3.多源复制部署✨ 3.1 下载镜像✨ 3.3 创建容器,安装mysql✨ 3.4 参数文件配置✨ 3.5 登陆MySQL⛳️ 4.主从配置✨ 4.1 主库配...
    99+
    2022-06-13
    Docker MySQL多源复制 MySQL多源复制
  • 【Mysql】Mysql5.7的多源复制搭建
        一.基本环境主库1: 10.24.65.30  3306 MySQL 5.7.14主库2: 10.24.65.30  3307 mysql...
    99+
    2022-10-18
  • MySQL多源复制配置实施步骤
    本文主要给大家介绍MySQL多源复制配置实施步骤,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL多源复制配置实施步骤吧。多源复制的意义&nb...
    99+
    2022-10-18
  • Mysql复制方式(半同步复制,并行复制,多源复制
    一、MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志binlog中。主库上的s...
    99+
    2017-10-08
    Mysql复制方式(半同步复制,并行复制,多源复制
  • MySQL 5.7搭建多源复制
    MySQL 5.7版本支持多源复制,MySQL 5.5和5.6不支持。 多源复制可以让多个主节点同时并行进行复制到一个从节点上。一个slave为每个master创建一个复制通道。 至少需要两台主库和一台从库...
    99+
    2022-10-18
  • 搭建MySQL5.7的多源复制方法
    下面讲讲关于搭建MySQL5.7的多源复制方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完搭建MySQL5.7的多源复制方法这篇文章你一定会有所受益。MySQL5.7多源复制...
    99+
    2022-10-18
  • 数据库多源复制同步错误修复
    报错是这样的: 发现有一个数据库报错了。报错如下。 Coordinator stopped because there were error(s) in the worker(s). The most re...
    99+
    2022-10-18
  • Java多线程实现复制文件
    本文实例为大家分享了Java多线程实现复制文件的具体代码,供大家参考,具体内容如下 代码实现如下: package com.tulun.thread; import java.i...
    99+
    2022-11-13
  • mysql5.6 —>mysql5.7 GTID模式下多源复制之实战案例
    背景说明:公司有多个mysql实例,单实例多个数据库,而且版本还是5.6,这给数据查询分析增加了不少繁琐的事情。所以推荐使用mysql5.6的实例多源复制到mysql5.7实例下方便数据的查询、分析以及权限...
    99+
    2022-10-18
  • mariadb多源主从复制错误跳过.md
    mysql 的主从错误跳过和mariadb的多源主从复制错误跳过操作不同,请注意: STOP SLAVE 'slave_account'; SET @@default_master_connection =...
    99+
    2022-10-18
  • 多源复制环境下数据的校验与修正
    前言前些日子,做多源GTID复制时,因为没有对mysql库的复制做隔离,导致复制产生冲突,在修正错误时又使用了错误的方法,导致GTID产生了断层。有断层必然会存在数据的不一致安装percona-tools工...
    99+
    2022-10-18
  • 技术分享 | MySQL 多源复制场景分析
    作者:杨涛涛 今天有客户问起:如何汇总多台 MySQL 数据到一台上? 我回答:可以尝试下 MySQL 的多源复制。 我们知道 MySQL 单主一从,单主多从,或者级联的主从架构我们都见的很多了。但是多主一从这种使用场景比较少,比如图1...
    99+
    2019-10-02
    技术分享 | MySQL 多源复制场景分析
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作