MySQL学习——管理复制源服务器的SQL语句

管理复制源服务器的语句,主要是指数据库环境中主从复制(master-slave replication)或主主复制(master-master replication)的设置。这些设置用于在多个数据库服务器之间同步数据,以实现高可用性、备份或负载均衡。主要语句有:

1 PURGE BINARY LOGS语句

PURGE { BINARY | MASTER } LOGS {TO 'log_name'| BEFORE datetime_expr
}

二进制日志是一组文件,其中包含有关MySQL服务器所做数据修改的信息。日志由一组二进制日志文件和一个索引文件组成。

PURGE BINARY LOGS语句删除指定日志文件名或日期之前在日志索引文件中列出的所有二进制日志文件。BINARY和MASTER是同义词。已删除的日志文件也会从索引文件中记录的列表中删除,从而使给定的日志文件成为列表中的第一个。

清除二进制日志需要BINLOG_ADMIN权限。如果服务器未使用--log-bin选项启动以启用二进制日志记录,则此语句无效。

示例:

PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2019-04-02 22:46:26';

BEFORE变量的datetime_expr参数的计算结果应为datetime值(“YYYY-MM-DD hh:MM:ss”格式的值)。

在复制副本时,清除二进制日志可以安全运行。不需要阻止他们。如果您的活动复制副本当前正在读取您试图删除的某个日志文件,则此语句不会删除正在使用的日志文件或任何晚于该日志文件的日志文件,但会删除任何早期的日志文件。在这种情况下会发出警告信息。如果复制副本未连接,并且您恰好清除了其中一个尚未读取的日志文件,则该复制副本在重新连接后将无法复制。

当LOCK INSTANCE FOR BACKUP语句对实例有效时,不应发出PURGE BINARY LOGS,因为它从服务器中删除文件违反了备份锁的规则。在MySQL 8.0.28中,这是被不允许的。

为了安全地清除二进制日志文件,请遵循以下步骤:

  1. 在每个复制副本上,使用SHOW replica STATUS来检查它正在读取哪个日志文件。
  2. 使用SHOW binary LOGS获取源上二进制日志文件的列表。
  3. 确定所有副本中最早的日志文件。这是目标文件。如果所有复制副本都是最新的,则这是列表上的最后一个日志文件。
  4. 备份您要删除的所有日志文件。(此步骤是可选的,但始终是可取的。)
  5. 清除目标文件之前但不包括目标文件的所有日志文件。

当.index文件中列出的二进制日志文件已通过其他方式(如在Linux上使用rm)从系统中删除时,PURGE BINARY LOGS TO和PURGE BINARY LOGS BEFORE都会失败并出现错误(Bug#18199,Bug#18453)。要处理此类错误,请手动编辑.index文件(这是一个简单的文本文件),以确保它只列出实际存在的二进制日志文件,然后再次运行失败的PURGE binary LOGS语句。

二进制日志文件会在服务器的二进制日志过期后自动删除。文件的删除可以在启动时和刷新二进制日志时进行。默认的二进制日志过期时间为30天。可以使用binlog_expire_logs_secconds系统变量指定一个替代的到期期限。如果您正在使用复制,则应指定一个不低于复制副本可能滞后于源的最长时间的过期期。

2 RESET MASTER 语句

RESET MASTER [TO binary_log_file_index_number]

请谨慎使用此语句,以确保不会丢失任何所需的二进制日志文件数据和GTID执行历史记录。

RESET MASTER需要RELOAD特权。

对于启用二进制日志记录(log_bin为ON)的服务器,RESET MASTER会删除所有现有的二进制日志文件并重置二进制日志索引文件,从而将服务器重置为启动二进制日志记录之前的状态。并创建一个新的空二进制日志文件,以便可以重新启动二进制日志记录。

对于使用GTID的服务器(gtid_mode为ON),发出的RESET MASTER将重置GTID的执行历史。gtid_phulled系统变量的值被设置为空字符串(“”),gtid_executed系统变量的全局值(但不是会话值)被设置为一个空字符串,并且mysql.gtid_executed表被清除。如果启用GTID的服务器启用了二进制日志记录,则RESET MASTER也会如上所述重置二进制日志。请注意,RESET MASTER是重置GTID执行历史的方法,即使启用GTID的服务器是禁用二进制日志记录的副本;RESET REPLICA对GTID执行历史没有影响。

发出不带可选TO子句的RESET MASTER会删除索引文件中列出的所有二进制日志文件,将二进制日志索引文件重置为空,并从1开始创建一个新的二进制日志文件。重置后,使用可选的TO子句从1以外的数字开始二进制日志文件索引。

检查您是否使用了合理的索引号值。如果输入的值不正确,可以通过发出另一个带有或不带有TO子句的RESET MASTER语句来更正此错误。如果不更正超出范围的值,则无法重新启动服务器。

以下示例演示了TO子句的用法:

RESET MASTER TO 1234;SHOW BINARY LOGS;
+-------------------+-----------+-----------+
| Log_name          | File_size | Encrypted |
+-------------------+-----------+-----------+
| source-bin.001234 |       154 | No        |
+-------------------+-----------+-----------+

不带TO子句的RESET MASTER与PURGE BINARY LOGS的效果在两个关键方面有所不同:

  1. RESET MASTER删除索引文件中列出的所有二进制日志文件,只留下一个数字后缀为000001的空二进制日志文件。而PURGE binary LOGS不会重置编号。
  2. RESET MASTER不适用于运行任何复制副本的情况。在副本运行时使用RESET MASTER的行为是未定义的(因此不受支持),而在副本运行期间可以安全地使用PURGE BINARY LOGS。

当第一次设置源和复制副本时,不带TO子句的RESET MASTER是有用的,因此可以按如下方式验证设置:

  1. 启动源和复制副本,然后启动复制。
  2. 对源执行一些测试查询。
  3. 检查查询是否已复制到副本。
  4. 复制正常运行时,在复制副本上发出STOP REPLICA,随后发出RESET REPLICA命令,然后验证复制副本上是否不存在来自测试查询的不需要的数据。
  5. 从源中删除不需要的数据,然后发出RESET MASTER来清除与之相关的任何二进制日志条目和标识符。

在验证设置、重置源和复制副本并确保源或复制副本上没有保留测试生成的不需要的数据或二进制日志文件后,可以启动复制副本并开始复制。

3 设置sql_log_bin语句

SET sql_log_bin = {OFF|ON}

sql_log_bin变量控制是否为当前会话启用二进制日志记录(假设二进制日志本身已启用)。默认值为ON。要禁用或启用当前会话的二进制日志记录,请将会话sql_log_bin变量设置为OFF或ON。

将会话的此变量设置为OFF,以便在对不希望复制到复制副本的源进行更改时临时禁用二进制日志记录。

设置此系统变量的会话值是一项受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。

无法在事务或子查询中设置sql_log_bin的会话值。

将此变量设置为OFF可防止将新的GTID分配给二进制日志中的事务。如果您使用GTID进行复制,这意味着即使以后再次启用二进制日志记录,从这一点写入日志的GTID也不会考虑在此期间发生的任何事务,因此这些事务实际上会丢失。

mysqldump从使用GTID的服务器向转储文件添加SET@@SESSION.sql_log_bin=0语句,这将在重新加载转储文件时禁用二进制日志记录。该语句防止在转储文件中的事务执行时生成新的GTID并将其分配给它们,以便使用事务的原始GTID。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TensorFlow深度学习】TensorFlow实现超参数搜索与网格搜索法

TensorFlow实现超参数搜索与网格搜索法 TensorFlow实现超参数搜索与网格搜索法:优化模型性能的艺术引言环境准备与库导入数据准备构建模型函数网格搜索法实现结果分析与讨论高效超参数优化策略简介结论 TensorFlow实现超参数搜索与网格搜索法:优化模型性…

LogicFlow 学习笔记——8. LogicFlow 基础 事件 Event

事件 Event 当我们使用鼠标或其他方式与画布交互时,会触发对应的事件。通过监听这些事件,可以获取其在触发时所产生的数据,根据这些数据来实现需要的功能。详细可监听事件见事件API。 监听事件 lf实例上提供on方法支持监听事件。 lf.on(&…

fs.1.10 ON rockeylinux8 dockerfile模式

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 rockeylinux8 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。 环境 docker engine:Version 24.0.6 rockylinux docker:8 freeswitch:v1.10.7 dockerfi…

有没有硅基生命?AGI在哪里?

摘要 随着科技的飞速发展,人工智能(AI)和生命科学的探索逐渐成为人们关注的焦点。其中,关于硅基生命的可能性与AGI(Artificial General Intelligence,即人工通用智能)的实现,更是引…

VisionOS的未来愿景:苹果VisionPro创业者的愿望清单

随着苹果公司在增强现实(AR)领域的不断探索,VisionPro作为其前沿产品,已经开始展现出改变我们与数字世界互动方式的潜力。作为一名VisionPro创业者,对未来VisionOS的更新充满了期待,并提出了一系列愿望清单,这些愿望不仅代表了个人的需求,也反映了用户社区对苹果AR生态的…

Qt 槽函数重载时通过函数指针绑定

文章目录 信号槽函数绑定 信号 public slots:void testShow();void testShow(int a);signals:void show(int a);槽函数 void A::testShow(){qDebug() <<"testShow(" QString::number(1) ")" << QThread::currentThreadId(); } void A::tes…

服务器如何远程桌面连接不上,服务器远程桌面连接不上解决办法

服务器远程桌面连接不上&#xff0c;是IT运维中常见的挑战之一。针对这一问题&#xff0c;专业的解决方法通常涉及以下几个方面的排查与操作&#xff1a; 首先&#xff0c;我们需要检查网络连接是否正常。远程桌面连接依赖于稳定的网络连接&#xff0c;因此&#xff0c;确认服务…

c++处理字符串

在C中&#xff0c;std::string类型提供了许多成员函数来处理字符串。以下是一些常用的std::string成员函数&#xff1a; 1.长度&#xff1a; 2.字串&#xff1a; size():返回字符串中的字符数&#xff08;不包括终止的空字符&#xff09;。length():与size()功能相同。empty…

MT1350 分数计算

题目 编写函数&#xff0c;实现分数加减运算并输出结果&#xff0c;注意结果要化为最简分数。不考虑不合理的输入等特殊情况&#xff0c;比如分母不能为0。 格式 输入格式 输入形式A/BC/D或者A/B-C/D&#xff0c;其中ABCD为整型。 输出格式 输出形式X/Y&#xff0c;或-X/…

【中台】数字中台整体建设技术方案(doc原件获取)

1. 中台概念 2. 推动企业组织模式演进 3. 建设方法 4 .中台内容 5. 数据安全体系 中台内容围绕数据中台建设评估、整体框架、数据采集&#xff0c;结构化、半结构化、非结构化的数据采集&#xff0c;数据计算能力、存储计算引擎、数据架构、数据挖掘、各种不同数据层建设、模型…

[大师C语言(第二十九篇)]C语言函数探秘

引言 函数是C语言中的基本单位&#xff0c;用于封装可重用的代码块。在C语言中&#xff0c;函数背后的技术包括函数的定义、调用、参数传递、返回值以及函数的内部实现等。本文将深入探讨C语言函数背后的技术&#xff0c;帮助你更好地理解和应用函数。 第一部分&#xff1a;函…

Visual Studio Code连接VMware虚拟机

1.安装VS Code插件 在拓展中安装插件 Remote-SSH 2.在虚拟机中安装OpenSSH服务器 使用超级用权限(root)更新软件包列表&#xff0c;Debian系统和Ubuntu系统使用apt包管理工具&#xff1a; sudo apt update CentOS系统使用yum或dnf包管理工具&#xff1a; sudo yum update …

“短剧制作新革命!揭秘开发高效系统的秘诀“

1、技术创新的应用&#xff1a; 云原生架构&#xff1a;采用云原生架构&#xff0c;以确保系统的高可用性和可扩展性&#xff0c;同时有效降低维护成本。 边缘计算&#xff1a;通过边缘计算技术&#xff0c;将内容分发到离用户最近的服务器&#xff0c;以减少延迟并提升播放速…

小程序 UI 风格,清新脱俗

小程序 UI 风格&#xff0c;清新脱俗

【QT5】<总结> QT主要技术点

文章目录 前言 一、QT串口编程 二、QT网络编程 三、QT多线程 四、QT连接数据库 五、开发板上运行QT程序 前言 在学习QT的过程中&#xff0c;旨在更好地巩固所学到的知识&#xff0c;本篇总结QT在嵌入式开发中的主要技术点。 一、QT串口编程 思维导图&#xff1a; 知识点…

如何查看当前的gruop_id 的kafka 消费情况 这个可以查看到是否存在消费阻塞问题

如何查看当前的gruop_id 的kafka 消费情况 这个可以查看到是否存在消费阻塞问题 命令如下: /kafka/bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group GWW --describe 其中 127.0.0.1 为zookeeper 服务器ip GWW 为对应要查看的group_id 如下…

零基础开始学习鸿蒙开发-@State的使用以及定义

1.State组件介绍 首先定义 State为鸿蒙开发的一个状态组件&#xff0c;当它修饰的组件发生改变时&#xff0c;UI也会相应的刷新&#xff0c;简单介绍就是这样&#xff0c;下面我们用代码去体会一下。 2.定义DeliverParam类 首先定义一个模型类&#xff0c;类里面定义一个构造…

UE4中性能优化工具合集

UE4中性能优化工具合集 简述CPUUnreal InsightUnreal ProfilerSimpleperfAndroid StudioPerfettoXCode TimeprofilerBest Practice GPUAdreno GPUMali GPUAndroid GPU Inspector (AGI) 内存堆内存分析Android StudioLoliProfilerUE5 Memory InsightsUnity Mono 内存MemreportRH…

【计算机视觉】人脸算法之图像处理基础知识(二)

图像处理基础知识&#xff08;二&#xff09; 1.图像的颜色空间转换 我们常见的图像通常由R&#xff08;红色&#xff09;、G&#xff08;绿色&#xff09;、B&#xff08;蓝色&#xff09;组成。但是在很多时候我们会将彩色图像转换成灰度图像进行处理。此时会用到cv2.cvtCo…

[大模型]Qwen2-7B-Instruct vLLM 部署调用

vLLM 简介 vLLM 框架是一个高效的大语言模型推理和部署服务系统&#xff0c;具备以下特性&#xff1a; 高效的内存管理&#xff1a;通过 PagedAttention 算法&#xff0c;vLLM 实现了对 KV 缓存的高效管理&#xff0c;减少了内存浪费&#xff0c;优化了模型的运行效率。高吞吐…