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

mysql 主从方式

基础概念

MySQL主从复制是一种数据库复制技术,它允许一个MySQL数据库(主库)的数据被复制到一个或多个其他MySQL数据库(从库)。主库负责写操作,而从库则负责读操作。这种架构可以提高系统的读取性能、数据冗余和故障恢复能力。

优势

  1. 读取性能提升:通过将读操作分散到多个从库,可以显著提高系统的读取性能。
  2. 数据冗余:从库提供了数据的备份,增强了数据的安全性。
  3. 故障恢复:如果主库发生故障,可以从从库中快速恢复数据。
  4. 负载均衡:可以将读写操作分离,实现负载均衡。

类型

  1. 异步复制:主库在执行完写操作后立即返回,不等待从库确认。这是MySQL默认的复制方式,性能较高,但可能存在数据不一致的情况。
  2. 半同步复制:主库在执行完写操作后,需要等待至少一个从库确认收到数据后才返回。这种方式可以减少数据不一致的风险,但会稍微降低性能。
  3. 组复制:多个MySQL实例组成一个复制组,每个实例都可以执行读写操作,并通过共识算法保证数据一致性。

应用场景

  1. 高并发读取:适用于需要处理大量读取请求的场景,如网站、应用服务器等。
  2. 数据备份和恢复:通过从库进行数据备份,可以在主库故障时快速恢复数据。
  3. 读写分离:将读操作和写操作分离到不同的数据库实例上,提高系统性能。

常见问题及解决方法

问题1:从库数据延迟

原因:网络延迟、从库负载过高、主从配置不正确等。

解决方法

  • 检查网络连接,确保主从库之间的网络通畅。
  • 优化从库的性能,如增加硬件资源、优化SQL查询等。
  • 检查主从配置,确保配置正确,如server-idlog-bin等参数。

问题2:主从数据不一致

原因:异步复制导致的延迟、网络分区、主从切换失败等。

解决方法

  • 使用半同步复制或组复制来减少数据不一致的风险。
  • 定期检查主从数据的一致性,如使用pt-table-checksum工具。
  • 确保主从切换过程正确无误,如使用MHA等工具进行自动化切换。

问题3:从库无法同步数据

原因:从库配置错误、主库二进制日志损坏、网络问题等。

解决方法

  • 检查从库的配置,确保server-idrelay-log等参数正确。
  • 检查主库的二进制日志,确保没有损坏。
  • 检查网络连接,确保主从库之间的通信正常。

示例代码

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

主库配置(my.cnf)

代码语言:txt
复制
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW

从库配置(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 的GTID主从复制方式

GTID的作用 GTID 是‘全局事务ID’的意思,在 MySQL5.6 中被添加进来 以前 MySQL主从复制是基于复制点的,slave 从 master 二进制日志的某个位置开始复制 有了 GTID...之后,就多了一种复制方式MySQL 在每个事务操作时都会分配一个全局唯一的ID,slave 就可以基于这个ID进行复制,只要是自己没有复制过的事务,就拿过来进行复制,可以不用关心具体的复制位置了 基于...GTID复制的优缺点 优点 可以更方便的故障转移,出现问题时,多个slave不用根据新master的二进制偏移量来同步了 主从配置更简单,在后面的配置过程中就可以看到 缺点 增加了SQL限制,例如不可以使用...这种方式直接建表插数据,必须分开,而在基于偏移量复制时是没有任何限制的 MySQL版本限制,GTID是5.6时加入的,在5.7中被进一步完善,建议在5.7或者5.6的后期版本中使用,所以老版本无法使用,...而且如果你的MySQL集群高可用方案使用的是MMM,那么也无法使用GTID,MMM只支持偏移量复制,MHA可以支持GTID GTID主从复制的配置思路 ?

1.4K50
  • MySQL5.7主从同步--点位方式及GTID方式

    MySQL5.6加入了GTID的新特性,其全称是Global Transaction Identifier,可简化MySQL主从切换以及Failover。...下面将分别介绍两种主从复制的搭建,相关问题的解决及内部原理将在后续实验中继续探索。 一、准备工作 创建2个(或3个)MySQL 实例,我搭建3个MySQL实例(一主2从)来分别演示,结构如下 ?...(0.06 sec) -- 开启主从同步 mysql> start slave; Query OK, 0 rows affected (0.01 sec) -- 查看主从同步状态 mysql> show...配置主从同步,开启主从同步并查看同步状态 mysql> change master to master_host='10.163.78.121',master_port=3307,master_user...Tips: MySQL主从架构是实际生产中最常见的方式,在平时的管理维护中也会遇到各种问题需要处理,后续也将慢慢测试一些常见问题的处理及起原因的探索。

    2.4K40

    linux系统MySQL主从同步--使用binlog日志方式

    手机留言请访问:http://www.esqabc.com 复制方式 MySQL5.6开始主从复制有两种方式:基于日志(binlog)、基于GTID(全局事务标示符)。...## 设置server_id,一般设置为IP,注意要唯一,确保主从不相同 server_id=1 ## 复制过滤:也就是指定哪个数据库不用同步 binlog-ignore-db=mysql binlog-ignore-db...单位:天 expire_logs_days=7 ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。...,一般设置为IP,注意要唯一,确保主从不相同 server_id=2 ## 复制过滤:也就是指定哪个数据库不用同步 binlog-ignore-db=mysql binlog-ignore-db=information_schema...单位:天 expire_logs_days=7 ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

    1.5K30

    MySQL主从延迟Seconds_Behind_Master计算方式

    •大家之前了解到的这个计算方式可能是从库 I/O 线程读取的主库 binlog event 时间戳与 SQL 线程正在执行的 binlog event 的时间戳之间的时间差 这样计算的问题: 1、 首先这样的计算方法本身是不对的...注意:这个时间差只会在主从线程启动时计算一次,所以start slave后如果主从本地时间出现异常,Seconds_Behind_Master也是不准的,需要重启复制线程重新计算主从本地时间差异(如果最终计算结果是负数...Seconds_Behind_Master可能显示为0,但实际和主库是有延迟的,容易出现误差 提示:所以只拿这个值来做复制延迟的监控是不准的,一般都会配合心跳表的时间戳来判断当前延迟 2、Seconds_Behind_Master的详细计算方式...• 主库事务长时间未提交等 本文主要讲述了seconds_behind_master在不同模式下的计算方式,很多情况会导致这个参数不准确,所以也建议大家还是结合心跳表配合监控延迟比较准确,如有理解偏差欢迎随时指正...本文参考: 1.深入理解MySQL主从原理32讲 2.MySQL · 答疑解惑 · 备库Seconds_Behind_Master计算

    2.6K30

    Mysql主从

    前提: mysql主从的搭建前提有: 两台虚拟机 两台虚拟机上都装有mysql,并且版本一样,两边的mysql数据库文件一致,mysql的安装方式我在前面博客已经介绍过了。...环境: Host Role IP mysql-1 Master 192.168.30.106 mysql-2 Slave 192.168.30.107 搭建 在主从服务器上都创建一个用户 $ mysql..., mysql如何减少主从复制延迟: 如果延迟比较大,就先确认以下几个因素: 从库硬件比主库差,导致复制延迟 主从复制单线程,如果主库写并发太大,来不及传送到从库 就会导致延迟。...,如果连接建立失败,间隔多久后重试 通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟 MySQL数据库主从同步延迟解决方案 最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的...另外就是使用比主库更好的硬件设备作为slave 扩展 主从还能配合MySQL中proxy实现真正意义的读写分离,还能配合keepalived做主从切换高可用,还能配合mysqljump做异地备份,在从库定时物理备份

    2.7K10

    Mysql主从复制方式以及可能出现的问题

    一.MySQL主从复制原理的是啥? 大致流程:主库将变更写binlog日志,然后从库连接到主库之后,从库有一个IO线程,将主库的binlog日志拷贝到自己本地,写入一个中继日志 relay日志中。...二.主从复制的问题 2.1 主从同步数据丢失 如果主库突然宕机,然后恰好数据还没同步到从库,那么有些数据可能在从库上是没有的,这时候从库成为了主库,那么有些数据可能就丢失了。...2.2 主从延迟 主从延迟对于读写分离的涉及影响比较大 这里有一个非常重要的一点,就是从库同步主库数据的过程是串行化的,也就是说主库上并行的操作,在从库上会串行执行。...ms,但是这个也不是完全准确,可以看Seconds_Behind_Master的 对于解决主从延迟,解决方案可以从以下方面考虑 1.在Mysql5.7之后可以用并行复制解决主从同步延时问题。...2.考虑分库,大多数情况主从延迟是因为主库的写并发太高,从库同步不过来,如果我们分库之后每个库压力就小多了,主从延迟可以低到1ms或者0.1ms这样忽略不计的程度。

    89141

    MySQL主从搭建

    生产环境中一旦与数据(缓存也不例外)扯上关系的一律不由k8s统一管理 因此,别想一键式部署了,只能老老实实单独部署 再此,就记录一下搭建过程,分享给小伙伴们,避免浪费时间 废话不多说,上车 下载 没有安装mysql...=103 log-bin = mysql-bin auto-increment-increment = 2 auto-increment-offset = 1001 2、进入Mysql,分别为二台master...创建各种的用户供对方使用 温馨提示: 本案例为双主从,也就是master同步到node,node同步到master。...单主从,就只需要不执行带*即可 #master的机器上 CREATE USER 'master'@'%' IDENTIFIED BY '123456';   #node的机器上(*) CREATE USER....000026',MASTER_LOG_POS=0; slave start; show slave status; 4、数据库主从日志很大 设置只保留30天的binlog (临时,重启mysql

    2.4K10

    mysql主从复制周期_Mysql主从复制

    Mysql主从复制 背景: Mysql可以实现主从复制,在学习了Mysql主从复制后,将一些如何主从复制过程记录下来,供以后复习使用。...准备: 在做Mysql主从复制前需要做一些准备工作: 1、同步时间 做主从的服务器的时间需要同步,不然会出问题。...主从复制: 步骤1、安装Mysql服务 yum install mysql-server mysql 如果是Centos7版本:yum install mariadb-server mariadb (7...上base源里已经换成了mariadb,不过我们使用方式Mysql是差不多的) 步骤2、配置主服务器 1)编辑主服务器配置文件/etc/my.cnf PS:注意日志文件的权限问题,修改bin_log...步骤4、测试 1)在主数据库服务器创建一个数据库 2)在从mysql从服务器查看是否生成创建的数据库 到此mysql主从复制已完成。

    4.2K10

    Mysql 5.7 主从复制的多线程复制配置方式

    ,那么这个“多线程复制”就不能充分发挥作用了 Mysql 5.7 对 “多线程复制” 进行了改善,可以按照逻辑时钟的方式来分配线程,大大提高了复制性能 下面看一下在5.7中如何配置 “多线程复制” 01...对两个 mysql 实例配置好主从复制 配置过程可以参考以前的一篇文章 配置成功后,在从库上使用 show processlist 查看现在的状态 ?...03 设置并发同步类型为逻辑时钟方式 先看下现在 slave 的并发类型,通过变量 slave_parallel_type 的值来获得,这个变量用来决定如何使用多线程复制 mysql> show variables...默认是datebase,每个线程只能处理一个数据库 配置成基于逻辑时钟的方式 mysql> set global slave_parallel_type='logical_clock'; ? ?...05 启动复制 mysql> start slave; 06 验证配置结果 mysql> show processlist; ? 可以看到已经有4个IO线程了,配置完成

    2.6K40

    MySQL 主从同步

    为什么需要主从复制 分别读写数据库的时候,把读和写分开,能够有效的提高数据库的负载 保证数据的高可用,一旦有一台数据库服务器宕机,不会对数据产生太大的影响 可以横向扩展,实现数据库的水平扩容 主从同步的原理...主从复制的根本原理是从 master 服务器上面的数据,通过一定的方式同步到 slave 服务器上面。...上面的 3 个过程是 MySQL 主从同步的大概流程,其中 binlog 和 relay log 的读写都是顺序 IO,性能很高。...搭建主从同步 此处用 Linux 服务器进行演示: 安装 MySQL 修改 my.cnf 如果找不到 my.cnf文件可以直接新建一个文件,MySQL 会自动读取。...#同步的数据库的名称 重启 MySQL 服务 不同安装方式的重试方式不同,此处仅仅是一种可行的方式

    5K30

    Mysql主从同步

    我们其实在Redis专题中也有提到过主从同步的概念,现在我们可以先看下主从同步和读写分离的具体概念。...概念 主从同步:其实主从同步和Redis系列讲到的主从同步比较类似,在多个服务器部署Mysql服务,将其中一台Mysql服务设置为主数据库,其他的Mysql服务设置为从数据库,然后主从同步保证主从数据库数据的一致性...上成功安装Mysql服务后,接下来进入正题,部署主从同步,实现主从数据库数据的复制,不过需要注意一点:在进行主从复制时,所有需要复制数据的数据表所有更新操作必须在主数据库中进行,否则可能导致主数据库表更新和从数据库表更新导致数据冲突出现不一致...我们已经准备好两个centos服务器,现在我准备采用一主一从的方式实现主从同步: ip:49.235.28.88 /*设置成主数据库*/ ip:49.232.154.38 /*设置成从数据库*/ 主从同步配置思路...主从同步实现之后我们就可以在这个基础上实现数据库读写分离,减轻主数据库的负载。下一篇将着重介绍Mysql的读写分离。

    1.6K30

    Mysql主从|笔记

    为什么要做主从复制1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景...mysql主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。...可以知道,对于每一个主从复制的连接,都有三个线程(binlog输出线程、从库I/O线程、从库的SQL线程)。...> FLUSH PRIVILEGES;4.查看状态mysql> show master status;5.登陆 从库 执行连接修改 server-id 需要和主库不一致文件位置在 /etc/mysql/...Mysql关闭主从主服务器reset master;重启mysql从服务器stop slave; reset slave all;重启mysql

    1.6K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券