`
dannyhz
  • 浏览: 395448 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Mysql 实现主备同步 replication 功能 实现读写分离

阅读更多

MySQL Replication, 主从和双主配置

MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合。与之对应的另一个技术是同步的MySQL Cluster,但因为比较复杂,使用者较少。

下图是MySQL官方给出了使用Replication的场景:

Replication原理

Mysql 的 Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个MySQL节点(称之Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(SQL 线程和 I/O 线程)在 Slave 端,另外一个线程(I/O 线程)在 Master 端。

要实现 MySQL 的 Replication ,首先必须打开 Master 端的 Binary Log,因为整个复制过程实际上就是 Slave 从 Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。

看上去MySQL的Replication原理非常简单,总结一下:
     * 每个从仅可以设置一个主。
    * 主在执行sql之后,记录二进制log文件(bin-log)。
    * 从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。
 
从这几条Replication原理来看,可以有这些推论:
     * 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。
    * 如果主从的网络断开,从会在网络正常后,批量同步。
    * 如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。
    * 一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。
    * 如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。
 
主从设置

因为原理比较简单,所以Replication从MySQL 3就支持,并在所有平台下可以工作,多个MySQL节点甚至可以不同平台,不同版本,不同局域网。做Replication配置包括用户和my.ini(linux下为my.cnf)两处设置。

首先在主MySQL节点上,为slave创建一个用户:

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'192.168.1.10' IDENTIFIED BY 'slave';

实际上,为支持主从动态同步,或者手动切换,一般都是在所有主从节点上创建好这个用户。然后就是MySQL本身的配置了,这需要修改my.cnf或者my.ini文件。在mysqld这一节下面增加:

server-id=1  
auto-increment-increment=2   
auto-increment-offset=1   
log-bin   
binlog-do-db=mstest   
binlog_format=mixed

master-host=192.168.1.62  
master-user=slave   
master-password=slave   
replicate-do-db=mstest

上面这两段设置,前一段是为主而设置,后一段是为从设置的。也就是说在两个MySQL节点上,各加一段就好。binlog-do-db和replicate-do-db就是设置相应的需要做同步的数据库了,auto-increment-increment和auto-increment-offset是为了支持双主而设置的(参考下一节),在只做主从的时候,也可以不设置。

双主的设置

从原理论来看MySQL也支持双主的设置,即两个MySQL节点互为主备,不过虽然理论上,双主只要数据不冲突就可以工作的很好,但实际情况中还是很容发生数据冲突的,比如在同步完成之前,双方都修改同一条记录。因此在实际中,最好不要让两边同时修改。即逻辑上仍按照主从的方式工作。但双主的设置仍然是有意义的,因为这样做之后,切换主备会变的很简单。因为在出现故障后,如果之前配置了双主,则直接切换主备会很容易。
  双主在设置时,只需将上面的一段设置复制一份,分别写入两个MySQL节点的配置文件,但要修改相应的server-id,auto-increment-offset和master-host。auto-increment-offset就是为了让双主同时在一张表中进行添加操作时不会出现id冲突,所以在两个节点上auto-increment-offset设置为不同的值就好。  另:不要忘了,在两个节点上都为对方创建用户。  应用层的负载均衡  本文只介绍了MySQL自身的Repilication配置,在上面的图中也可以看出,有了Replication,还需要应用层(或者中间件)做一个负载均衡,这样才能最大程度发挥MySQL Replication的优势,这些将在以后探讨。
分享到:
评论

相关推荐

    mysql5.7 双主互备、高可用、读写分离 + keepalived 实战演练

    MySQL 5.7 双主互备、高可用与读写分离是数据库系统设计中的重要概念,用于确保数据的稳定性和服务的连续性。在这个实战演练中,我们将深入探讨如何配置和实现这些特性,以及如何结合 keepalived 来增强系统的可用性...

    mysql与mycat的读写分离

    Mycat是一款开源的数据库中间件,它可以实现对多个MySQL实例的连接管理和负载均衡,支持SQL路由等功能,进而实现读写分离。 ##### 启用Mycat读写分离 完成MySQL主从配置后,下一步是启用Mycat的读写分离机制。这...

    MySQL主从同步与读写分离配置图文详解

    ### MySQL主从同步与读写分离配置详解 #### 一、实验目的 在现代的生产环境中,单一的MySQL服务器往往无法满足对数据处理的安全性、高可用性和高并发的需求。因此,采用**主从同步(Master-Slave Replication)**...

    mysql-读写分离.docx

    MySQL 读写分离与主从复制 MySQL 读写分离是指在数据库集群架构中,让主库负责处理事务性查询,而从库只负责处理 select 查询,达到提高数据库整体读写性能的目的。主数据库另外一个功能就是负责将事务性查询导致的...

    mysql replication 配置(主从复制读写分离)

    ### MySQL Replication 主从复制与读写分离配置详解 #### 一、背景介绍 MySQL replication是一种数据复制技术,主要用于实现数据库的高可用性、负载均衡和数据备份等场景。通过搭建主从复制环境,可以实现在多台...

    nigix实现MYSQL主备高可用双活

    MySQL数据库在许多业务环境中是核心组件,为了保证数据的安全性和服务的连续性,通常需要实现主备高可用和双活架构。Nginx作为一个流行的反向代理服务器,可以通过配置实现对MySQL主备集群的负载均衡,提高系统的...

    基于Mycat的MySQL主从读写分离配置详解与示例

    本文将详细介绍如何利用Mycat这一开源数据库中间件实现MySQL数据库的主从读写分离,并通过具体的配置步骤及示例进行说明。 #### 二、Mycat简介 Mycat是一款开源的数据库连接池产品,它位于Java应用程序和数据库...

    mysql读写分离实现.doc

    以下是实现MySQL读写分离的具体步骤: 1. **搭建MySQL主从环境**: - 在两台主机(host1和host2)上安装相同版本的MySQL(例如5.0.45)。 - 在master节点上,配置日志二进制文件(log-bin),设置server-id,并...

    linux下mysql amoeba读写分离配置

    MySQL的主从复制(Master-Slave Replication)和读写分离(Read-Write Separation)是实现这一目标的常用方法。这里我们将探讨如何配置MySQL主从复制,以及使用Amoeba或MySQL-Proxy进行读写分离。 首先,让我们了解...

    MySQL的HA、读写分离、均衡负载.pdf

    4. 主从复制:MySQL的主从复制功能是实现读写分离、数据备份和高可用性的重要工具。主服务器记录所有的数据更改,并将这些更改作为二进制日志文件保存在本地。从服务器通过读取这些二进制日志文件来复制数据更改,使...

    Mycat+MySQL主从复制读写分离验证安装手册

    - **主服务器故障**:模拟主服务器故障情况,停止主服务器的MySQL服务,验证读写分离功能是否正常工作。 ##### 3.2 方案二:自动主从切换 - **配置**:与方案一相似,但两个节点都配置为`writeHost`。 - `...

    MySQL双主多从读写分离自动化安装

    采用MySQL Replication+ MySQL Proxy+Heartbeat实现MySQL读写分离HA 双Master都安装MySQL Proxy和Heartbeat(也可以单独安装MySQL Proxy,Heartbeat跟MySQL Proxy装在一起),多个Slave跟每个Master进行多主单从...

    Mysql主从复制读写分离实现

    MySQL的主从复制是数据库高可用性和负载均衡的一种常见实现方式,它允许数据从一个主服务器(Master)同步到一个或多个从服务器(Slave)。这种架构可以实现读写分离,提高系统的读取性能,因为大部分应用程序的读...

    MySQL 读写分离实例详解

    MySQL 读写分离是一种常见的数据库优化策略,它将数据库的读操作和写操作分配到不同的服务器上,以提高系统的并发处理能力和响应速度。在大型应用系统中,由于大量的读操作通常远超过写操作,这种分离可以显著提升...

    Mysql的读写分离、MySQL主从复制

    ### MySQL的读写分离与主从复制 #### 一、背景与需求 在现代Web应用中,数据库往往面临着巨大的读写压力。对于大部分应用程序来说,读取数据的需求远远大于写入数据的需求,即所谓的“读多写少”。为了提高系统的...

    mycat 读写分离 优化

    实现读写分离的一个关键技术点是MySQL的主从复制功能。以下是基于MySQL 5.5及以上版本的主从配置示例。 ##### 4.1 主数据库服务器配置 在MySQL的配置文件`my.ini`(Windows系统)或`my.cnf`(Linux系统)中进行以下...

    Mycat+MySQL Galera读写分离验证安装手册

    ### Mycat+MySQL Galera 读写分离验证安装手册知识点详解 #### 一、Mycat与MySQL Galera概述 **Mycat**是中国开源社区第一个成熟可用的数据库中间件项目,它支持读写分离、分库分表等功能,能够为用户隐藏底层...

    12.1: MySQL主从同步 、 主从同步模式 、 总结和答疑.docx

    这种方式可以实现数据的热备援、读写分离、负载均衡等功能。 1. 案例 1:MySQL 一主一从 在这个案例中,我们将配置一个 MySQL 主服务器和一个从服务器。主服务器的 IP 地址为 192.168.4.51,从服务器的 IP 地址为 ...

Global site tag (gtag.js) - Google Analytics