MySQL 主从复制、切换

MySQL 主从复制是一种常见的高可用性和数据冗余解决方案,通过将数据从主服务器(Master)同步到从服务器(Slave),可以实现数据备份和读写分离。

MySQL 主从复制配置

1. 配置主服务器(Master)
  1. 编辑配置文件
    打开 MySQL 配置文件(通常是 /etc/my.cnf/etc/mysql/my.cnf),添加或修改以下内容:

    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog-do-db=your_database_name  # 可选,指定要同步的数据库
    
  2. 重启 MySQL 服务
    使配置生效。

    sudo systemctl restart mysql
    
  3. 创建复制用户
    登录到 MySQL 并创建一个用于复制的用户。

    CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
    FLUSH PRIVILEGES;
    
  4. 获取二进制日志文件和位置
    记录当前的二进制日志文件和位置,以便从服务器使用。

    FLUSH LOGS;
    SHOW MASTER STATUS;
    

    输出示例:

    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 | 12345    |              |                  |
    +------------------+----------+--------------+------------------+
    
2. 配置从服务器(Slave)
  1. 编辑配置文件
    打开 MySQL 配置文件,添加或修改以下内容:

    [mysqld]
    server-id=2
    relay-log=mysql-relay-bin
    
  2. 重启 MySQL 服务
    使配置生效。

    sudo systemctl restart mysql
    
  3. 配置从服务器连接主服务器
    登录到 MySQL 并配置从服务器连接到主服务器。

    CHANGE MASTER TO 
    MASTER_HOST='master_ip_address',
    MASTER_USER='replication_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=12345;
    
  4. 启动从服务器的复制
    开始从服务器的复制进程。

    START SLAVE;
    
  5. 验证复制状态
    检查从服务器的复制状态,确保没有错误。

    SHOW SLAVE STATUS\G;
    

    关键字段:

    • Slave_IO_Running: 应该为 Yes
    • Slave_SQL_Running: 应该为 Yes
    • Last_Error: 应该为空

MySQL 主从复制切换

1. 准备阶段
  1. 确认主从复制状态
    确保主从复制正常运行,从服务器已经完全同步了主服务器的数据。

    -- 在主服务器上查看状态
    SHOW MASTER STATUS;-- 在从服务器上查看状态
    SHOW SLAVE STATUS\G;
    
  2. 停止从服务器的复制
    停止从服务器上的复制进程,防止在切换过程中数据发生变化。

    STOP SLAVE;
    
2. 切换过程
  1. 将从服务器提升为主服务器
    将从服务器提升为主服务器,需要修改其配置文件,移除或注释掉 relay-log 相关的配置,添加 log-bin 配置。

    [mysqld]
    server-id=1
    log-bin=mysql-bin
    
  2. 重启从服务器
    重启从服务器,使其生效新的配置。

    sudo systemctl restart mysql
    
  3. 修改应用程序连接
    修改应用程序的数据库连接配置,将连接指向新的主服务器。

3. 恢复原主服务器
  1. 将原主服务器降级为从服务器
    在原主服务器上修改配置文件,将其配置为从服务器。

    [mysqld]
    server-id=2
    relay-log=mysql-relay-bin
    
  2. 启动原主服务器的复制
    启动原主服务器上的复制进程,使其从新的主服务器同步数据。

    -- 在原主服务器上执行
    CHANGE MASTER TO 
    MASTER_HOST='新主服务器的IP',
    MASTER_USER='replication_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=12345;START SLAVE;
    
4. 验证切换
  1. 验证数据一致性
    确保所有数据已经同步完成,可以在从服务器上执行一些查询,验证数据的一致性。

    SELECT * FROM your_table LIMIT 10;
    
  2. 监控复制状态
    持续监控从服务器的复制状态,确保没有错误。

    SHOW SLAVE STATUS\G;
    

注意事项

  1. 数据一致性:切换过程中要确保数据的一致性,避免数据丢失或损坏。
  2. 应用程序影响:切换过程中可能会对应用程序产生短暂的影响,因此最好选择在业务低峰期进行切换。
  3. 备份:在切换前做好数据备份,以防万一。
  4. 监控:切换后要持续监控系统的运行状态,确保一切正常。

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

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

相关文章

【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…

【设计模式】如何用C++实现依赖倒置

【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置? 依赖倒置原则(Dependency Inversion Principle,DIP)是SOLID面向对象设计原则中的一项。它的核心思想是: 高层模块不应该依赖于低层模块,两者都应该…

达梦数据迁移工具DTS使用实践

1、环境描述 2、DTS概述 1.支持视图、存储过程/函数、包、类、同义词、触发器等对象迁移; 2.支持数据类型的自动映射,编码转换; 3.支持根据条件自定义迁移部分数据; 4.向导式迁移步骤,上手简单; 5.支持 we…

瑞格智慧心理服务平台 NPreenSMSList.asmx sql注入漏洞复现

0x01 产品描述: ‌ 瑞格智慧心理服务平台‌是一个集心理测评、心理咨询、心理危机干预、心理放松训练等功能于一体的综合性心理健康服务平台。该平台由北京瑞格心灵科技有限公司开发,旨在为用户提供全方位的心理健康服务。0x02 漏洞描述:…

【经典论文阅读11】ESMM模型——基于贝叶斯公式的CVR预估

传统的CVR模型(也就是直接对conversion rate建模的模型)在实际应用中面临两个问题(样本选择偏差与数据稀疏性问题)。为了解决这两个问题,本文提出ESMM模型。该模型巧妙地利用用户行为序列去建模这个问题,从…

OpenCV基础01

目录 一、环境安装 二、显示窗口 三、创建图片 四、图片保存 五、图像裁剪 六、调整图片大小 七、图像绘制 1、绘制圆形 2、绘制矩形 3、绘制文本 4、绘制直线 5、中文文本 八、控制鼠标 九、鼠标事件 十、视频处理 OpenCV作为C和C语言的源代码文件,…

git:将多个提交合并为一个

如何将第一至第五次提交合并为一个? 1. 使用 git log -n 命令查看spring boot admin的commit-id,本例n6,命令如下: PS E:\liguogang\spring-cloud> git log -62. 使用 git reset --soft commit-id 命令将前五次提交重置到工作…

Leetcode 二叉树中的最大路径和

算法思想 这道题要求在一棵二叉树中找到路径和最大的路径。路径可以从树中任意一个节点开始,到任意一个节点结束,但路径上的节点必须是连续的。 算法使用递归的方式来遍历树中的每个节点,并在遍历过程中计算包含当前节点的最大路径和。具体…

Python 变量在函数中的作用域

什么是局部变量? 作用范围在函数内部,在函数外部无法使用 什么是全局变量? 在函数内部和外部均可使用 如何将函数内定义的变量声明为全局变量? 使用global关键字, global变量 练习: 演示局部变量 #…

【Android】Kotlin教程(4)

文章目录 1.field2.计算属性3.主构造函数4.次构造函数5.默认参数6.初始化块7.初始化顺序7.延迟初始化lateinit8.惰性初始化 1.field field 关键字通常与属性的自定义 getter 和 setter 一起使用。当你需要为一个属性提供自定义的行为时,可以使用 field 来访问或设置…

SSH登录介绍

说明:一般登录服务器,我们可以用远程连接工具,如XShell、Windterm等,或者通过公司搭建的JumpServer(跳板机、堡垒机)来连接。前者是点对点登录,输入主机、端口,通过SSH协议登录&…

unity中预制体的移动-旋转-放缩

unity中预制体的移动-旋转-放缩 左上侧竖栏图标介绍Tools(手形工具)Move Tool(移动工具,单位米)Rotate Tool(旋转工具,单位角度)Scale Tool(缩放工具,单位倍数)Rect Tool(矩形工具)Transform Tool(变换工具)图标快捷键对照表工具使用的小技巧…

HarmonyOS开发 - 本地持久化之实现LocalStorage实例

用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 说明&#x…

java程序打包为一个exe程序

ok,最近学到了一个有意思的东西 那就是如何将自己写好的java程序打包成一个exe程序,发给别人,然后运行。 那么开始之前,请先安装整个工具: exe4j:https://www.ej-technologies.com/exe4j/download&#…

高并发设计模式之ForkJoin模式

分而治之是一种思想,所谓分而治之就是把一个复杂的算法问题按一定的分解方法分为规模较小的若干部分,然后逐个解决,分别找出各部分的解,最后把各部分的解在整合成整个问题的解.ForkJoin模式就是分而治之思想的另一种应用. ForkJoin模式的原理 ForkJoin模式先把一个大任务分解…

AMD XILINX 20nm器件价格上调25%

随着市场回暖,台积电也在调整价格策略,近期台积电上调了20nm的出厂价格。 据相关消息显示,AMD为了保障持续的供货和服务,也计划将20nm器件的价格统一上调25%,预计将于11月发布正式的涨价通知,并于2025年Q1开…

EfficientNet-B6模型实现ISIC皮肤镜图像数据集分类

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于opencv答题卡识别判卷】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【G…

为何我们要将测试左移?回到过去的美好时光

以下为作者观点: 为何我们将测试左移?在传统的开发周期中,测试通常在功能完成后甚至在开发阶段结束时进行。左移测试通过从开发过程开始到整个开发过程整合测试活动来挑战这一点。 让我们首先讨论一下为什么我们选择“左移”,因…

java项目之基于智能推荐的卫生健康系统(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的基于智能推荐的卫生健康系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于智能推荐…

性能测试详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点…