首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 一主多从高可用

基础概念

MySQL一主多从高可用架构是指在一个MySQL数据库集群中,有一个主数据库(Master)和多个从数据库(Slave)。主数据库负责处理写操作,而从数据库负责处理读操作。通过这种架构,可以实现数据的冗余和高可用性。

优势

  1. 高可用性:当主数据库出现故障时,可以快速切换到从数据库,保证系统的正常运行。
  2. 负载均衡:读操作可以分散到多个从数据库上,减轻主数据库的压力。
  3. 数据冗余:从数据库可以备份主数据库的数据,防止数据丢失。
  4. 扩展性:可以根据需要增加从数据库的数量,提升系统的处理能力。

类型

  1. 异步复制:主数据库在执行写操作后,异步地将数据复制到从数据库。这种方式的延迟较小,但可能存在数据丢失的风险。
  2. 半同步复制:主数据库在执行写操作后,等待至少一个从数据库确认收到数据后再返回成功。这种方式可以减少数据丢失的风险,但会增加一定的延迟。
  3. 组复制:多个数据库节点组成一个复制组,通过Paxos或Raft等一致性算法来保证数据的一致性。

应用场景

  1. 读写分离:适用于读操作远多于写操作的场景,可以将读操作分散到多个从数据库上,提升系统的读取性能。
  2. 数据备份:从数据库可以作为主数据库的数据备份,防止数据丢失。
  3. 高并发处理:通过多个从数据库分担读操作的压力,提升系统的并发处理能力。

常见问题及解决方法

1. 主从复制延迟

原因:网络延迟、从数据库性能不足、主从复制配置不当等。

解决方法

  • 优化网络环境,减少网络延迟。
  • 提升从数据库的性能,增加硬件资源。
  • 调整主从复制的配置,例如调整sync_binloginnodb_flush_log_at_trx_commit等参数。

2. 主从数据不一致

原因:主从复制过程中出现错误,导致数据不一致。

解决方法

  • 定期检查主从数据的一致性,可以使用pt-table-checksum等工具。
  • 查看主从复制的日志,找出错误原因并进行修复。
  • 如果数据不一致严重,可以考虑重新同步数据。

3. 主数据库故障

原因:硬件故障、软件崩溃、人为误操作等。

解决方法

  • 配置主从切换机制,当主数据库故障时,自动切换到从数据库。
  • 使用高可用解决方案,例如MySQL Group Replication或Galera Cluster。
  • 定期备份数据,防止数据丢失。

示例代码

以下是一个简单的MySQL主从复制的配置示例:

主数据库配置(my.cnf)

代码语言:txt
复制
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=ROW
sync_binlog=1
innodb_flush_log_at_trx_commit=1

从数据库配置(my.cnf)

代码语言:txt
复制
[mysqld]
server-id=2
relay_log=mysql-relay-bin
log_slave_updates=1
read_only=1

主数据库创建复制用户

代码语言:txt
复制
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

从数据库配置复制

代码语言:txt
复制
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;

参考链接

通过以上配置和示例代码,可以实现一个基本的MySQL一主多从高可用架构。根据具体需求和环境,可以进一步优化和调整配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Keepalived实现MySQL从高可用

版权声明:本文为博原创文章,未经博允许不得转载。...二、方案选择 MySQL的高可用方案有很多,比如Cluster、MMM、MHA、DRBD,以及Oracle官方推出的Fabric等,这些方案各有优劣,但都比较复杂,安装配置有定难度,对线上库实施动静太大...1.2 工作机制 VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP播(multicast)包形式发送的,播地址为224.0.0.18。...高可用方案配置简单,对现有MySQL架构无任何影响,也不需要停止数据库服务,完全联机操作即可。...有点需要注意,主从库的端口必须样。 参考: 1. Keepalived+MySQL实现高可用 2. Keepalived权威指南

3.5K33
  • 使用Heartbeat实现MySQL从高可用

    创建MySQL服务检测脚本 四、测试 参考: ---- 前面我们使用Keepalived实现MySQL主从复制的失败自动切换,参见“使用Keepalived实现MySQL从高可用”。...、Heartbeat简介 通过Heartbeat,可以将资源(ip以及程序服务等资源)从台已经故障的计算机快速转移到另台正常运转的机器上继续提供服务,般称之为高可用服务。...如果在规定时间内,无法监听到心跳信息,那么就启动故障转移,取得主服务器上的相关资源的所有权,接替服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。般故障切换时间在5~20s之间。...Heartbeat还支持主模式,及两台服务器互为主备。 另外,和Keepalived的服务样,Heartbeat高可用是服务器级别的,不是服务级别的。...脚本每三秒检测MySQL状态,如果本机MySQL可用,怎关闭heartbeat服务,是VIP漂移到对方主机。

    1.4K20

    Mysql从方案

    因此就有了从的构想,而mysql不提供这样的原生方案(最新的mysql版本支持,但是新版本谁敢用呢),只能通过几种变种来实现,以下是集中方案的介绍: 1) mysql实例+myISAM...b) 设置从库,在从库使用mysqld_multi启动库实例,每个实例对应个主库,并分别设置好主从复制。...方案优点:对主库无任何侵入 4) mysql同步方案 maakit-sync和percona-tookit方案,这是开源mysql里面非常著名的mysql同步工具了,可以利用这个工具做库之间的同步...在mysql中,可以实现表级的关联,在从库系统中创建federated的表指向主库,从库中指记录表结构,不记录真实的数据,所有的数据存放在远端,另外主从的表结构定要致。...multi master replication方案(补丁方案) 该方案来源于淘宝的个补丁,实现非常巧妙,给每个数据库的binlog做了标签,标识来源哪个主库,这样在从机上执行的时候

    1.2K10

    MySQL 从配置

    MySQL从是指,多个master机,单个slave的模式,是在MySQL5.7以后支持的 主要的作用是可以同步多个主库上的数据到单个slave上,可以用于数据聚合到台主机,更实用的是当是双机互为主备的情况下...,可以只有个slave配置同步两个master上的数据。...好了,因为本地之前是alisql(基于mysql5.6.32)不支持从,所以,需要先建立几个5.7以上版本的mysql实例,我这里用 docker-compose 快速创建4个mysql8.0的实例...配置双互备 mysql8_1 和 mysql8_3 这个版本的mysql配置文件 /etc/mysql/conf.d/docker.cnf 内容修改: mysql8_1 操作: ➜ mysql-cluster...配置从库同步 mysql8_2 从两个同步 我们需要达到的目的是,当其中个master 挂掉的时候,从库仍然可以从另个主库上同步成功 需要先开启 gtid,所以配置文件上需要设置开启 gtid-mode

    2K11

    MySQL从架构配置

    、角色划分 1、MySQL数据库规划 我现在的环境是:zhdy04和zhdy05已经做好了主架构配置,现在需要的是把两台或者多台从服务器与一一同步。 如果搭建环境,参照此链接!...二、MySQL数据同步设定 1、因为咱们测试的机器数据库全部都是初始值,所以不需要导入任何数据库。(写的原因是假如,配置的环境和现在不致。...我们仍然需要做数据备份和导入) 2、数据同步帐号添加 按理来说,之前我们已经配置了,也就是zhdy04和zhdy05已经互相授权了。...7、最后步,在服务器zhdy04 masterA创建个数据库,也就是说这四台服务器都会有这个数据库!...8、总结 也就是说,未来我们搭建从看完这个配置是不是也有思路了?就像配置路由器样,互相连接的互相授权下是不是就可以了?

    7.1K90

    MySQL可用——双

    生产环境中mysql主机存在单点故障,所以我们要确保mysql的高可用性,即两台MySQL服务器如果其中有 MySQL服务器挂掉后,另外台能立马接替其进行工作。...MySQL的高可用方案般有如下几种: keepalived+双,MHA,PXC,MMM,Heartbeat+DRBD等,比较常用的是keepalived+双,MHA和PXC。...Keepalived+mysql来实现MySQL-HA,我 们必须保证两台MySQL数据库的数据完全样,基本思路是两台MySQL互为主从关系,通过Keepalived配置虚 拟IP,实现当其中的台...、配置两台MySQL同步 该过程的第部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改 变。MySQL将事务写入二进制日志。...测试同步 在master1上创建要同步的数据库如test1,并在test1中创建张测试表如tab1 mysql> create database test1; mysql> use test1;

    2.1K21

    Nginx keepalived从高可用,手把手带你步配置!

    、 实验环境 1.准备两台NGINX环境的服务器 2.准备台tomcat服务器 二、 配置环境 Nginx40.14 Nginx_40.15 Docker40.16 三、 Keepalived安装部署...Configuration File for keepalived global_defs { router_id NGINX #路由标识同备必须相同 } vrrp_script chk_nginx...Configuration File for keepalived global_defs { router_id NGINX #路由标识同备必须相同 } vrrp_instance...查看备网络接口信息 Nginx-MASTER Nginx-BACKUP Kill -9 nginx 进程 有可能需要kill两边 查看网口信息 ip a 验证网页 查看nginx-BACKUP...的网络接口信息 再次恢复nginx-MASTER的nginx.conf文件配置,重启keepalived,验证服务器正常上线后是否抢占MASTER Keepalived+nginx 备能自动切换

    5.3K40

    MySQL可用--MGR入门(3)单主模式切换

    前文阅读: 1.MySQL可用--MGR入门(1)单/主模式搭建 2.MySQL可用--MGR入门(2)组复制监控常用相关表 实验演示规划:(3台虚拟机,MySQL版本为8.0.25) 192.168.168.101...01 单 MGR 单切使用的命令为: select group_replication_switch_to_multi_primary_mode(); 首先我们观察当前集群的模式和各个节点的读写模式...02 切单 MRG 切单有两条命令可以使用。 不指定节点进行切换。...2.如果集群有任意个低版本的MySQL,且支持 group_replication_member_weight 这个参数,则根据 group_replication_member_weight 这个权重参数来...3.如果集群内有不支持 group_replication_member_weight 参数的MySQL,比如MySQL5.7,并且其中个以上的成员具有最高的成员权重(或忽略了成员权重),则考虑的第三个因素是生成的服务器

    1.4K20

    手把手教你搭建 MySQL 主从复制经典架构(从、从、从)

    主从复制方式 复制 从-- 扩展系统读取的性能,因为读是在从库读取的 从 联级复制 ?...主从复制,是用来建立个和数据库完全样的数据库环境,称为从数据库;数据库是业务数据库, 从库相当于主库的备份。 2. 主从复制原理(实现过程)?...并行复制—-解决从库复制延迟的问题 MySQL主从复制搭建 1、从 先准备两台服务器: 192.168.93.100 mysql-master 充当服务器 192.168.93.110...3、从 先准备三台服务器: 192.168.93.100 mysql-master 192.168.93.101 mysql-slave1 192.168.93.110 mysql-slave2...4、从 先准备三台服务器: 192.168.93.100 mysql-master1 192.168.93.101 mysql-master2 192.168.93.110 mysql-slave

    20.6K77

    Nginx+keepalived从高可用,手把手带你步配置!

    、 实验环境 ?二、 配置环境 ?三、 Keepalived安装部署 ?四、 进入安装后的路径 ?五、 修改keepalived 的配置 ?六、 启动nginx ?七、 验证冗余 ?...九、 测试keepalived利用脚本能否让nginx自动重启 、 实验环境 1.准备两台NGINX环境的服务器 Nginx40.14 IPADDR=192.168.40.14 Nginx_40.15...Configuration File for keepalived global_defs { router_id NGINX #路由标识同备必须相同 } vrrp_script chk_nginx...Configuration File for keepalived global_defs { router_id NGINX #路由标识同备必须相同 } vrrp_instance...再次恢复nginx-MASTER的nginx.conf文件配置,重启keepalived,验证服务器正常上线后是否抢占MASTER Keepalived+nginx 备能自动切换。

    76220

    MySQL可用--MGR入门(1)单主模式搭建

    MGR特点 (1)基于Paxos协议和原生复制,多数节点同意即可通过事务提交; (2)具备高可用自动故障检测,可自动切换; (3)可弹性扩展,集群自动的新增和移除节点; (4)有单主和主模式; (5)...组复制依靠分布式致性协议(Paxos协议的变体),实现了分布式下数据的最终致性,提供了真正的数据高可用方案(是否真正高可用还有待商榷)。其提供的写方案,给我们实现活方案带来了希望。...在服务器故障时,自动选主机制选择下服务器。通过按字典顺序(使用其 UUID)来排序剩余的 server 成员并选择列表中的第个成员来作为下服务器。...选择了新的节点后,它将自动设置为只读,其他辅助节点仍然为辅助节点,因此也是只读。 (2)主模式 主模式,也就是所有节点都可以写入,每个节点基本都样。...节点搭建基本和单步骤样,只需要配置文件my.cnf额外添加,本文以下示例为单节点搭建,节点搭建亦相差无几。

    1.3K20

    MySQL 5.7 从(源复制)同步配置

    作者:天码星空 链接: https://my.oschina.net/u/2399373/blog/2878650 从,也称为源复制,数据流向: 主库1 -> 从库s 主库2 -> 从库s 主库...n -> 从库s 应用场景 数据汇总,可将多个数据库同步汇总到个从数据库中,方便数据统计分析。...数据库:MySQL 5.7.x (相比5.5,5.6而言,5.7同步性能更好,支持源复制,可实现从,主从库版本应保证致) 操作系统:CentOS 7.x 容器:Docker 17.09.0-...注:若不熟悉docker,可使用传统方式安装mysql,效果相同。 创建授权用户 连接mysql数据库,键入命令mysql -u root -p,输入密码后登录数据库。...补充: 如果【服务器】重启mysql服务,【从服务器】会等待与【服务器】重连。当服务器恢复正常后,从服务器会自动重新连接上服务器,并正常同步数据。

    4.3K21

    MySQL主模式+Keepalived高可用

    今天闲来无事,打算搭建MySQL的高可用架构,采用的是MySQL结构,再外加Keepalived,对外统提供虚IP。...那么数据库层如何搭建高可用的架构呢?今天我们就来看看。 整体架构 MySQL采用结构,我们使用两台机器就够了,然后再这两台机器上再安装Keepalived,使用vrrp技术,虚拟出个IP。...然后,我们用root账号登录MySQL,并创建可用的账号。...Keepalived高可用 MySQL结构已经搭建好了,无论从哪个MySQL插入数据,都会同步到另外MySQL。...总结 我们通过MySQL结构+keepalived双机热备实现了MySQL的高可用,我们应用程序可以连接虚IP,具体连接的实际MySQL,不需要我们关心。

    66230

    MySQL 5.7 从的复制结构

    源复制的作用 MySQL 5.7.6 开始,添加了个新特性:源复制 Multi-Source Replication 可以让你同时从多个master中并行复制,也就是形成了种新的主从复制结构 ...图 以前都是从的结构,想实现的复制需要自己想办法,现在好了,直接支持了 源复制的应用场景示例: 比如我们分库后有多台数据库服务器,后台统计系统需要对数据进行汇总,就可以使用源复制实现汇总功能...比如我们有多个项目,分为了多台数据库服务器,想使用主从复制进行数据备份,就可以使用源复制,把多个数据库复制到同台服务器中,如果没有源复制这个功能,就要自己想办法实现,增加了数据库管理难度,或者使用多个从服务器分别进行复制...,增加了资源开销 源复制的配置 源复制支持两种主从复制方式:基于日志位置复制、基于GTID的复制 下面以GTID的方式为例,介绍配置的具体步骤 前期准备 准备3个MySQL,我的版本是 5.7.13...,否则会复制失败 因为使用复制出来的两台虚机,或者在Docker中使用同MySQL镜像的两个容器时,就会出现 uuid 相同的情况 mysql> SHOW VARIABLES like '%server_uuid

    1.8K90
    领券