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

mysql 互为主备

基础概念

MySQL互为主备(Master-Master Replication)是一种高可用性架构,其中两个MySQL服务器互相复制数据,每个服务器都可以作为主服务器(Master)或备服务器(Slave)。在这种配置下,两个服务器都可以接受写操作,数据会实时同步到另一个服务器。

优势

  1. 高可用性:当一个服务器出现故障时,另一个服务器可以立即接管,保证服务的连续性。
  2. 负载均衡:可以将读写操作分布在两个服务器上,提高系统的整体性能。
  3. 数据冗余:数据在两个服务器上都有备份,减少了数据丢失的风险。

类型

MySQL互为主备通常通过以下几种方式实现:

  1. 基于GTID(Global Transaction Identifiers)的复制:这是MySQL 5.6及更高版本推荐的复制方式,通过全局事务ID来跟踪和管理复制事务。
  2. 基于二进制日志(Binary Log)的复制:这是早期MySQL版本常用的复制方式,通过记录和重放二进制日志来实现数据同步。

应用场景

  1. 高并发读写应用:适用于需要处理大量读写操作的场景,如电商网站、社交媒体平台等。
  2. 地理分布式系统:适用于需要在不同地理位置部署多个数据中心的场景,确保数据的就近访问和高可用性。
  3. 关键业务系统:适用于对数据一致性和可用性要求极高的系统,如金融系统、医疗系统等。

常见问题及解决方法

1. 数据同步延迟

原因:网络延迟、服务器负载过高、复制配置不当等。

解决方法

  • 检查网络连接,确保两个服务器之间的网络延迟较低。
  • 优化服务器配置,提高服务器的处理能力。
  • 调整复制配置,如增加slave_parallel_workers参数以提高并行复制的能力。

2. 写入冲突

原因:两个主服务器同时写入相同的数据,导致冲突。

解决方法

  • 使用分布式锁机制,确保同一时间只有一个服务器可以写入特定数据。
  • 设计合理的数据库架构,避免多个服务器同时写入相同的数据。

3. 主备切换失败

原因:配置错误、网络问题、服务器故障等。

解决方法

  • 检查主备切换的配置,确保配置正确无误。
  • 监控网络连接,确保两个服务器之间的通信正常。
  • 定期检查服务器的健康状态,及时发现并处理故障。

示例代码

以下是一个简单的MySQL互为主备配置示例:

主服务器配置(Master1)

代码语言:txt
复制
-- 创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

-- 配置二进制日志
log-bin=mysql-bin
server-id=1

备服务器配置(Master2)

代码语言:txt
复制
-- 创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

-- 配置二进制日志
log-bin=mysql-bin
server-id=2

启动复制

在Master1上执行:

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

在Master2上执行:

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

参考链接

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

相关·内容

CentOS7 中 MySQL 5.7 主主配置

先从 MySQL 对数据库复制的能力看,MySQL 支持单向、异步的复制。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。...现在公司中很多都用到了云服务器,无论是服务器还是数据库,但是我们在开发阶段一般还是公司自己的服务器,在没有 dba 的情况就需要开发人员自己去搭建数据库集群,但是对于小公司来说,两台数据库服务器互为主也许对开发人员来说就是比较理想的...下面我们就介绍下 CentOS7 中如何搭建 MySQL 主主服务器。 1....MySQL 配置 既然是主主,就说明两个数据库都要对外进行服务,为了防止 id 重复,我们需要在配置文件中对两个数据库的自增长的 offset 设置为不同的值,具体如下: master-1 服务器中文件...MySQL 重启 shell> service mysql restart 5.

1.5K10
  • 如何实现CDH元数据库MySQL的主主

    的主》,而本篇文章介绍如何实现MySQL的双活方式,为后面基于Keepalived实现MySQL高可用做铺垫。...内容概括 1.MySQLA和MySQLB配置 2.构建主主同步 3.主主验证 测试环境 1.两台Linux服务器(172.31.6.148/172.31.5.190),操作系统为CentOS6.5...2.MySQL5.1.73 3.采用root用户操作 前置条件 1.两个MySQL版本必须一致 2.两个MySQL已安装 2.测试环境说明 ---- IP地址 状态 别名 172.31.6.148 已安装...socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted...7.主主验证 ---- 1.登录MySQLA数据库创建test库 [w14or6gn7p.jpeg] 2.登录MySQLB数据库查看是否有test库 [1ppyftiop1.jpeg] 在MySQLB

    2.6K81

    Mysql学习(2)——Mysql双机热

    参考博客《CentOS系统MySQL双机热配置》。 参考官方文档https://dev.mysql.com/doc/refman/5.6/en/replication.html。...在考虑双机热时,需要注意,一般意义上的双机热都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。...因此,双机热不是无缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。...#忽略对mysql库的操作,即不记录到日志中 重启mysql # systemctl restart mysqld 查看mysql状态 ?...记录二进制文件名(mysql-bin.000002)和位置(120)。 Slave服务器配置 暂停Mysql服务。

    1.3K30

    两台华为防火墙双出口冗余,配置为主模式

    去年给某银行部署过华为防火墙双出口冗余,主模式,但是规定只能用他们的电脑调试,更不可能截图或者带备份配置文件出来,所以写这篇文章完全没有素材,只能用模拟器搭一下,实物照片,也是没有的,手机都不得带入机房...两台华为的防火墙,fw1为主,fw2为;两台华为核心交换机,没有采用堆叠技术,而是采用VRRP技术进行配置。...GigabitEthernet0/0/1 //与FW2连接的接口,配置IP地址即可 ip address 202.2.2.1 255.255.255.0 以下才是真正的配置工作: 一、两台防火墙配置VRRP,主模式...Vlanif100]ip ad 192.168.100.11 24 [FW1-Vlanif100]vrrp vrid 1 virtual-ip 192.168.100.254 active //加入VGMP组,FW1为主...ip add 192.168.100.12 24 [FW2-Vlanif100]vrrp vrid 1 virtual-ip 192.168.100.254 standby //加入VGMP组,FW2为

    1.4K10

    MySQL GTID主切换协议

    其中A'和A还互为主库,当主库A发生故障时,A'会成为新的主库,此时从库B和C需要改到同步A'。一般这种都会有专门的系统完成,我们可以看一下这种专门的系统大体有哪几种方式完成主切换。...主切换的方式有几种? 基于位点的主切换 基于GTID的主切换 如何设置节点B成为A'的主库?...基于位点主切换的弊端?...mysql主要有很多错误类型,如下两种: 1062:插入数据时唯一键冲突 1032:删除数据时找不到行 我们可以在mysql配置文件中添加以下内容: slave_skip_errors=1062,1032...是指定的值:比如通过set gtid_nex='current_gtid'指定 每个MySQL实例都维护了一个GTID集合,用来对应这个实例执行过的所有事务。

    2K10

    Mysql问题记录

    上报错找不到log文件, 问题背景:在配置好的mysql环境上,正常运行状态下,两台服务器断电,上电后报错如下: mysql报错 错误日志: 2019-08-05 09:35:43 29817.../mysql/bin/mysqld: File '/var/hms/base_service/mysql/backup/mysql-bin.000006' not found (Errcode: 2 -...,发现index中文件已经记录到mysql-bin.000006,而真实不存在这个文件,因此mysql启动时报找不到binlog日志文件; 解决此问题第一步: 编辑mysql-bin.index,删除...mysql-bin.000006记录,重启mysql,服务即可启动 第二步,在机上发现主同步状态未有任何改变;仍然报错,究其原因,实际上就是机上的relay-bin log与主机上的mysql-bin...log不匹配导致,思路就是清理掉机上的relay log 在机上进入mysql命令行执行: stop slave; reset slave; CHANGE MASTER TO MASTER_HOST

    1.2K40

    MySQL备份与主配置

    MySQL备份与主配置 数据备份类型 全量备份:备份整个数据库 增量备份:备份自上一次备份以来(增量或完全)以来变化的数据 差异备份:备份自上一次完全备份以来变化的数据 全量备份 全量备份的方法有 2...MySQL配置 在主库上创建用户 repl,并给他权限。...之后传给库 B,我们把库 B 接收完这个 binlog 的时刻记为 T2。 库 B 执行完成这个事务,我们把这个时刻记为 T3。 主延迟即 T3 - T1 的差。...这是因为,主延迟的来源有: 库的性能更差 库压力较大 大事务 必须执行完才会写入 binlog,然后传给库 在试验中并没有遇到这样的情况。 当然可以手动构造大量的数据来做个测试。...练习 2 尝试配置MySQL一主一及双主结构。 上文已详述。

    1.6K30

    MySQL 在线热工具Xtrab

    lvm是一种采用逻辑卷快照功能对数据进行备份,可以实现几乎热,但是备份过程较为复杂(来回切换终端),很难用shell脚本直接实现,不过现在似乎有个工具mylvmbackup可以实现自动化备份,但是没有尝试过...Xtrabackup对MyISAM表只能实现温,并且不支持增量备份,所以每次对MyISAM表备份都是全 XtraBackup更多高级特性通常只能在innodb存储引擎上实现,而且高级特性还都依赖于mysql...数据库开源热工具。...          /usr/bin/xbstream        /usr/bin/xtrabackup 3、XtraBackup中主要包含了三个工具 xbsteam:支持流式备份 xtrbackup:用于热innodb...; mysql> use jiaowu; mysql> set sql_log_bin = 0; mysql> source /root/tutor.sql;    //导入tutor数据表 mysql

    2.4K20

    xtrabackup热和恢复MySQL

    MySQL的社区版本热备份工具InnoDB Hot Backup是付费的,只能试用30天,商业版才可以永久的使用, Percona公司发布一个xtrabackup热工具,和付费的工具一样,支持在线热...xtrabackup热工具是一个开源的工具,他可以非常快速的备份和恢复mysql数据库。.../mysql_backup:备份位置 --socket=SOCKET :mysql服务器的socket文件的位置 2>/mysql_backup/ innobackupex.log:记录备份时的输出 -.../local/mysql/bin/mysqld --basedir=/usr/local/mysql--datadir=/data/mysql/ --plugin-dir=/usr/local/mysql...的备份数据时,mysql环境必须是全新的环境,没有任何数据的 数据目录为/data/mysql,恢复之前必须把这个目录下的文件全部移走,然后把文件/usr/local/mysql/var/ibdata1

    1.2K20

    MySQL 5.7 主切换详解

    一、MySQL架构概述MySQL的主架构通常包括一个主库(Master)和一个或多个库(Slave)。...[mysqld] server-id=1 log-bin=mysql-bin库配置:在库的my.cnf文件中设置唯一的server-id,并启用中继日志。...库的SQL线程读取relay log,解析出日志中的命令并执行,从而确保主库数据同步。三、主切换步骤准备环境:确保主库和库能够互相通信,并且安装了相同版本的MySQL数据库。...修改库的my.cnf文件,将其server-id修改为唯一的值(如果之前配置为库时使用了不同的server-id,则无需修改)。将库提升为主库,开始处理客户端的读写操作。...如果需要,可以配置新的库,并将其指向新的主库进行同步。四、备份与恢复在主切换过程中,备份和恢复也是非常重要的环节。MySQL提供了多种备份工具和方法,如mysqldump和xtrabackup。

    21500
    领券