首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏立权的博客

    Mysql 原理

    Mysql 支持互为主从,主库通过binlog 将执行的语句传给从库,具体的执行机构:    主库上的 dump thread,主库上的 binlog 只有在写入到硬盘之后才能通过 dump thread 被修改了什么   2.statement  这种格式 是 单纯记录执行的语句的,但是单纯地记录语句 可能发生不一致的情况,比如主库和从库对于 binlog 的同一条语句选用了 不同索引。        也就是 像 2 那样有歧义的话,就会使用 row 格式,而不是 statement 循环复制问题,前面提到,mysql 支持互为主从,那么 binlog 不会在 互为主从的两个数据库之间循环复制吗? 不会,因为数据库会按照 server id 来判断 binlog 是否能被执行 比如 A库 server id = 1,B库 server id = 2, A 和 B 互为主从,互为主从的 库必须 server

    2.4K10发布于 2020-11-27
  • 来自专栏云计算运维

    MySQL的基本原理2

    2延迟的原来 1.有些部署条件下,库所在机器的性能要比主库所在的机器性能差 2.库的压力大。主库提供写能力,库提供一些读能力。 2、可用性优先策略 可用性优先策略:如果强行把可靠性优先策略的步骤4、5调整到最开始执行,也就是说不等数据同步,直接把连接切到库B,并且让库B可以读写,那么系统几乎没有不可用时间。 在插入一条c=4的语句后,发起了切换 下图是可用性优先策略,且binlog_format=mixed时的切换流程和数据结果 image.png 步骤2中,主库A执行完insert语句,插入了一行数据 因此,大多数情况下,建议采用可靠性优先策略 五、MySQL的并行复制策略 image.png 的并行复制能力,要关注的就是上图中黑色的两个箭头。 一个代表客户端写入主库,另一个代表库上sql_thread执行中转日志 在MySQL5.6版本之前,MySQL只支持单线程复制,由此在主库并发高、TPS高时就会出现严重的延迟问题 多线程复制机制都是把只有一个线程的

    92120发布于 2021-08-11
  • 来自专栏云生产力

    MySQL切换解析

    MySQL切换解析MySQL切换是高可用性数据库架构中的重要一环。通过切换,可以在主库出现故障时迅速切换到库,从而保证系统的持续运行。 本文将详细解析MySQL切换的基本原理、实现方法以及相关的注意事项。一、MySQL基本原理在MySQL架构中,通常有一个主库(Master)和一个或多个库(Slave)。 Mixed格式:MySQL根据SQL语句是否可能引起不一致,自动选择使用statement或row格式。 三、切换实现方法实现MySQL自动切换,可以使用MySQL Replication和MySQL Cluster等工具。 MySQL在binlog中记录了命令第一次执行时的实例server id,通过比较server id来避免循环复制。四、切换策略切换策略主要分为可靠性优先策略和可用性优先策略。

    1.5K00编辑于 2024-12-04
  • 来自专栏凝神长老和他的朋友们

    MySQL备份与配置

    MySQL 配置 在主库上创建用户 repl,并给他权限。 延迟 最后需要说明的是,之间存在一个延迟。 主库 A 执行完成一个事务,写入 binlog,我们把这个时间记为 T1。 之后传给库 B,我们把库 B 接收完这个 binlog 的时刻记为 T2库 B 执行完成这个事务,我们把这个时刻记为 T3。 延迟即 T3 - T1 的差。 这是因为,延迟的来源有: 库的性能更差 库压力较大 大事务 必须执行完才会写入 binlog,然后传给库 在试验中并没有遇到这样的情况。 当然可以手动构造大量的数据来做个测试。 练习 2 尝试配置MySQL及双结构。 上文已详述。

    2.4K20发布于 2020-04-17
  • 来自专栏shysh95

    MySQL GTID切换协议

    多从的设置主要用来读写分离,主库负责所有的写入和一部分读,其他的读请求由从库承担。 其中A'和A还互为主库,当主库A发生故障时,A'会成为新的主库,此时从库B和C需要改到同步A'。 一般这种都会有专门的系统完成,我们可以看一下这种专门的系统大体有哪几种方式完成切换。 切换的方式有几种? 基于位点的切换 基于GTID的切换 如何设置节点B成为A'的主库? mysql主要有很多错误类型,如下两种: 1062:插入数据时唯一键冲突 1032:删除数据时找不到行 我们可以在mysql配置文件中添加以下内容: slave_skip_errors=1062,1032 等同步关系建立完成以后并且稳定执行一段时间,我们再还原参数,避免后续的问题。 什么是GTID? 基于GTID的切换 -- master_host:主库A'的IP -- master_port:主库A'的端口 -- master_user:用户名 -- master_password:密码 change

    2.5K10编辑于 2022-04-07
  • 来自专栏xuefly

    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 - /backup/mysql-bin.000006', errno 2) 2019-08-05 10:06:08 22242 [ERROR] Could not open log file 2019-08 mysql-bin.000006记录,重启mysql,服务即可启动 第二步,在机上发现同步状态未有任何改变;仍然报错,究其原因,实际上就是机上的relay-bin log与主机上的mysql-bin log不匹配导致,思路就是清理掉机上的relay log 在机上进入mysql命令行执行: stop slave; reset slave; CHANGE MASTER TO MASTER_HOST

    1.6K40编辑于 2022-12-30
  • 来自专栏凝神长老和他的朋友们

    MySQL备份与配置

    MySQL备份与配置 数据备份类型 全量备份:备份整个数据库 增量备份:备份自上一次备份以来(增量或完全)以来变化的数据 差异备份:备份自上一次完全备份以来变化的数据 全量备份 全量备份的方法有 2 MySQL 配置 在主库上创建用户 repl,并给他权限。 [1557468786687] 延迟 最后需要说明的是,之间存在一个延迟。 主库 A 执行完成一个事务,写入 binlog,我们把这个时间记为 T1。 之后传给库 B,我们把库 B 接收完这个 binlog 的时刻记为 T2库 B 执行完成这个事务,我们把这个时刻记为 T3。 延迟即 T3 - T1 的差。 练习 2 尝试配置MySQL及双结构。 上文已详述。

    2K30发布于 2020-04-15
  • 来自专栏香菇带你用好IT工具

    MySQL 5.7 切换详解

    一、MySQL架构概述MySQL架构通常包括一个主库(Master)和一个或多个库(Slave)。 [mysqld] server-id=2 relay-log=slave-relay-bin绑定主库信息:在库上执行CHANGE MASTER TO命令,绑定主库的信息。 库的SQL线程读取relay log,解析出日志中的命令并执行,从而确保库数据同步。三、切换步骤准备环境:确保主库和库能够互相通信,并且安装了相同版本的MySQL数据库。 如果需要,可以配置新的库,并将其指向新的主库进行同步。四、备份与恢复在切换过程中,备份和恢复也是非常重要的环节。MySQL提供了多种备份工具和方法,如mysqldump和xtrabackup。 5.7的切换技术是实现高可用性的重要手段之一。

    1.4K00编辑于 2024-10-16
  • 来自专栏Porschev[钟慰]的专栏

    MySQL数据同步【双

    应用环境 数据库服务器  虚拟机  OS:  Windows Server 2003  1.数据库服务器242 IP:192.168.206.242   2.数据库服务器243 IP:192.168.206.243 Value 2 # means the log is written to the log file at each commit, but the log # file is only Show Slave Status 部分释义  ① Slave_IO_Status:线程已经连接上服务器,正等待二进制日志事件到达。如果服务器正空闲,会持续较长的时间。 ---------------- auto_increment_offset=2 auto_increment_increment=2 #-------------------------------- 2.然后分别向服务器242和243所在数据库中分别插入数据 ? ? 很明显,分别插入时,自增列也不会重复; 3.分别开启服务器242和243的Slave线程 ? 4.查看同步后的数据 ?

    3.1K111发布于 2018-01-16
  • 来自专栏Se7en的架构笔记

    MySQL + Keepalived 双搭建

    为了解决这个问题,可以采用 MySQL 双主模式,其中一台主库提供服务,另一台作为热。结合 keepalived 使用虚拟 IP 对外提供服务,一旦主库发生故障,库可以在很短的时间内接管服务。 interface ens192 # VRRP 实例绑定的网口,用于发送 VRRP 包 virtual_router_id 200 # 路由 ID,范围是 0-255,都一样 # 指定认证所使用的密码 mysql都一样 } track_script { # 调用"vrrp_script # VRRP 实例绑定的网口,用于发送 VRRP 包 virtual_router_id 200 # 路由ID,范围是0-255,都一样 # 指定认证所使用的密码 mysql都一样 } notify_master /etc/keepalived/notify_master_mysql.sh

    6.1K21发布于 2021-09-15
  • 来自专栏微观技术

    京东一面:MySQL 延迟有哪些坑?切换策略

    大家好,我是Tom哥 作为一名开发同学,大家对 MySQL 一定不陌生,像常见的 事务特性、隔离级别 、索引等也都是老生常谈。 今天,我们就来聊个深度话题,关于 MySQL 的 高可用 一、什么是高可用? MySQL 的高可用是如何实现的呢? 解决方案: 1、升级库的机器配置 2库干私活 库除了服务于正常的读业务外,是否有被其他特殊业务征用,如:运营数据统计等,这类操作非常消耗系统资源,也会影响数据同步速度。 2、可用优先 当然我们也可以不用等数据同步完成,在一开始时就直接将流量切到库。

    2.3K20编辑于 2022-04-07
  • 来自专栏阿dai_linux

    Keepalived-mysql高可用架构(

    Keepalived-mysql高可用架构() 开始搭建该架构前已安装好mysql已搭建完成,搭建方法详见:https://my.oschina.net/u/3497124/blog virtual_router_id 51 #相同 priority 100 #优先级,backup设置90 advert_int 1 nopreempt #lb_algo rr #LVS算法,用不到,我们就关闭了 #lb_kind DR #LVS模式,如果不关闭,备用服务器不能通过VIP连接MySQL virtual_router_id 51 #相同 priority 90 #优先级,backup设置90 advert_int 1 # nopreempt #lb_algo rr #LVS算法,用不到,我们就关闭了 #lb_kind DR #LVS模式,如果不关闭,备用服务器不能通过VIP连接MySQL

    1K20发布于 2019-04-03
  • MySQL数据库同步原理

    MySQL数据库的同步,也称为主从复制,是一种高可用的解决方案,旨在保证数据的一致性。这一机制在生产环境中尤为重要,因为它能确保在数据库服务出现故障时,快速切换到库,避免应用不可用的情况。 本文将详细介绍MySQL数据库同步的原理及其实现过程。一、同步的基本概念同步是指将主库(Master)上的数据实时同步到库(Slave)上,使得库的数据与主库保持一致。 二、同步的实现原理MySQL同步的实现依赖于binlog(Binary Log,二进制日志)。Binlog记录了主库上的所有更改操作,库通过读取和执行这些日志来保持数据一致性。 同步的完整过程设置关系:在库上通过CHANGE MASTER TO命令设置主库的信息,包括IP地址、端口号、用户名、密码以及要从哪个位置的binlog开始复制。 三、同步的好处提升数据库的读并发性:大多数应用都是读比写要多,采用同步方案,可以扩展库来提升读能力。备份:同步可以得到一份实时的完整的备份数据库。

    2.3K00编辑于 2024-10-17
  • 来自专栏腾讯云混沌工程团队

    【云顾问-混沌】云 MySQL 切换

    MySQL 切换(Master-Slave Switching)是指在 MySQL 主从复制架构中,将从库(Slave)提升为主库(Master),原主库降为从库的过程。 腾讯云混沌演练平台可对云 MySQL 进行切换故障注入,通过混沌实验帮助构建高韧性的系统。 MySQL 切换故障原理 云数据库 MySQL 提供了一的双节点实例和一的三节点实例。 为了帮助用户在实例故障的突发状况下能够及时进行切换,保证业务正常提供服务,混沌演练平台给用户提供了切换能力,支持用户通过手动进行切换过程,帮助用户验证切换的可靠性、数据的完整性和业务的整体稳定性等 为何需要进行 MySQL 切换障演练? 切换(Master-Slave Switching)在 MySQL 主从复制架构中是一种常见的运维操作。 性能优化:通过定期进行切换,可以避免主库长时间运行导致的性能下降,确保整个数据库系统的高性能运行。 切换是 MySQL 数据库运维中的一种重要手段,可以提高系统的可用性、可靠性和性能。

    1.2K10编辑于 2024-03-15
  • 来自专栏John Wong's Blog

    CentOS7 中 MySQL 5.7 配置

    先从 MySQL 对数据库复制的能力看,MySQL 支持单向、异步的复制。复制过程中一个服务器充当服务器,而一个或多个其它服务器充当从服务器。 服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到服务器时,它通知服务器从服务器在日志中读取的最后一次成功更新的位置。 下面我们就介绍下 CentOS7 中如何搭建 MySQL 服务器。 1. MySQL 版本:mysql-5.7.22 2. MySQL 配置 既然是,就说明两个数据库都要对外进行服务,为了防止 id 重复,我们需要在配置文件中对两个数据库的自增长的 offset 设置为不同的值,具体如下: master-1 服务器中文件

    1.9K11编辑于 2021-12-23
  • 来自专栏云计算运维

    MySQL的基本原理

    image.png 在状态1中,客户端的读写都直接访问节点A,而节点B是A的库,只是将A的更新都同步过来,到本地执行。这样可以保持节点B和A的数据是相同的。当需要切换的时候,就切成状态2。 那么,如果节点A同时是节点B的库,相当于又把节点B新生成的binlog拿过来执行了一次,然后节点A和B间,会不断地循环执行这个更新语句,也就是循环复制 MySQL在binlog中记录了这个命令第一次执行时所在实例的 1、什么是延迟? 与数据同步有关的时间点主要包括以下三个: 主库A执行完成一个事务,写入binlog,这个时刻记为T1 之后传给库B,库B接收完这个binlog的时刻记为T2 库B执行完这个事务,把这个时刻记为T3 ,计算它与当前系统时间的差值,得到seconds_behind_master 如果库机器的系统时间设置不一致,不会导致延迟的值不准。

    1.1K10发布于 2021-08-11
  • 来自专栏JavaEdge

    、主从和区别

    两台都是主机,同时对外提供读写操作。客户端任意访问提供的一台。 主从

    3.5K20发布于 2021-10-18
  • 来自专栏JavaEdge

    、主从和区别

    两台都是主机,同时对外提供读写操作。客户端任意访问提供的一台。 主从

    2.3K21编辑于 2021-12-07
  • 来自专栏洁癖是一只狗

    Mysql一致性问题

    我们今天简单了解一下库的基本原理。理解了背后设计原理, Mysql基本原理 下图就是基本的切换流程 ? 在状态1中,客户端的读写都直接访问节点A,而节点B是A的库,只有将A的更新都同步过来,到本地执行,这样可以保证节点B和A的数据是相同的 当需要切换的时候,就切换成2,这个时候客户端读写访问的都是节点 ,造成不一致 可以用readonly状态,判断节点的角色 但是我们发现如果把库设置成只读,那么如何同步更新呢,这个问题,是因为只读(readonly)设置对超级权限用户是无效的,而同步更新的线程 会占用很多空间,比如要删除10万行语句,我们既要记录都要写入binlog中,这样会导致io消耗,影响执行速度 最后如果使用mixed,mysql会判断sql如果可能导致不一致,如果有可能,就用row 双M的和M-S的区别就是多了一条线,节点A和节点B总是互为主关系,这个时候切换不用修改关系,但是双M结构还有一个问题需要解决 业务上节点A更新了一条语句,然后把生成的binlog发给节点B,节点

    1.3K30发布于 2020-12-16
  • 来自专栏从零学习云计算

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

    参考博客《CentOS系统MySQL双机热配置》。 参考官方文档https://dev.mysql.com/doc/refman/5.6/en/replication.html。 实现机制 对于一个MySQL服务器,一般有两个线程来负责复制和被复制。当开启复制之后: 服务器Master,会把自己的每一次改动都记录到二进制日志 binlog 中。 在考虑双机热时,需要注意,一般意义上的双机热都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。 # systemctl stop mysql 修改mysql的配置文件/etc/my.cnf,添加如下配置: server-id=2 replicate-do-db=test #同步master的test slave-skip-errors=all slave-net-timeout=60 重启mysql: # systemctl restart mysql 打开mysql会话,执行同步SQL语句(需要服务器主机名

    1.7K30发布于 2019-05-26
领券