异步主从复制

主从复制的概念

主从复制是一种在数据库系统中常用的数据备份和读取扩展技术,通过将一个数据库服务器(主服务器)上的数据变更自动同步到一个或多个数据库服务器(从服务器)上,以此来实现数据的冗余备份、读写分离以及负载均衡等目的。

主从复制的原理

  1. 首先在Master上开启二进制日志。
  2. 当Master上数据发生变化,进行DML操作时,会产生二进制日志。
  3. Master上dump线程会通知Slave上的I/O线程来拿二进制日志。
  4. I/O线程拿到日志后会写入到Slave上的中继日志。
  5. 然后SQL线程会去读取新产生的中继日志,重演二进制日志里的操作,从而达到Slave和Master上的数据一模一样,实现数据的一致性

主从复制的原理如上,在Slave服务器上还存在master-info文件和relay-log.info文件。master-info文件记录I/O线程从Master服务器上获取二进制日志结束的pos位置号和日志文件的名字。relay-log.info文件记录当前中继日志的文件名和位置点。

主从复制的操作

1、环境准备

准备两台服务器,一台作为master服务器(192.168.2.117),一台作为slave服务器(192.168.2.118),确保两台服务器上的mysql服务是启动的,mysql版本为5.x。

修改主机名,便于辨识:

// master服务器上
[root@localhost ~] hostnamectl set-hostname master// slave服务器上
[root@localhost ~] hostnamectl set-hostname slave

2、修改mysql配置文件

在master服务器上开启二进制日志,server_id=1,在slave服务器上也可以开启二进制日志,server_id=2

// master服务器上
[root@master ~] vim /etc/my.cnf
# 找到[mysqld]位置添加以下内容
[mysqld]
log_bin
server_id=1// 重启服务
[root@master ~] service mysqld restart// slave服务器上
[root@slave ~] vim /etc/my.cnf
# 找到[mysqld]位置添加以下内容
[mysqld]
log_bin
server_id=2// 重启服务
[root@slave ~] service mysqld restart

3、统一两台服务器的基础数据

// master服务器导出所有数据
[root@master ~] mysqldump -uroot -p'123456' --all-databases >all_db.SQL// 上传slave服务器
[root@master ~] scp all_db.SQL root@192.168.2.118:/root// slave服务器执行SQL文件
[root@slave ~] mysql -uroot -p'123456' <all_db.SQL

4、master服务器初始化二进制日志

清除master服务器上所有的二进制日志,因为上一步已经做了一次全部备份了。

root@(none) mysql> reset master;// 查看二进制文件名和位置点POS
root@(none) mysql> show master status;

5、新建授权用户

在master服务器上新建一个授权用户,给slave来复制二进制日志。

// master服务器上操作
root@(none) mysql> reset master;
root@(none) mysql> grant replication slave on *.* to 'slave-1'@'192.168.2.118';

6、配置master-info信息

在slave服务器上配置master-info信息,master-info文件记录I/O线程从master服务器上获取二进制日志结束的pos位置号和日志文件的名字。当master服务器通知slave服务器来读取二进制日志时,slave服务器通过master-info信息才能得知从哪里开始读取。

// slave服务器上操作
root@(none) mysql> CHANGE MASTER TO MASTER_HOST='192.168.2.137',
> MASTER_USER='slave-1',
> MASTER_PASSWORD='123456',
> MASTER_PORT=3306,
> MASTER_LOG_FILE='master-bin.000001',
> MASTER_LOG_POS=154;

7、查看slave是否配置成功

// slave服务器上操作
// 启动slave
root@(none) mysql> start slave;root@(none) mysql> show slave status\G;// 下面这两个为yes则表示启动成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

在线主从复制

在线主从复制指服务器运行中进行主从复制,在线主从复制与上述主从复制原理一致,其难点在于slave服务器配置master-info信息时,如何准确知晓master服务器的二进制日志文件名和位置号pos。

本文在这给出的方法是使用xtrabackup工具包,xtrabackup在备份的时候自动记录二进制日志文件和位置好,感兴趣的小伙伴可以自行去搜索深入了解。

主从切换的原理

在主从复制中,当主服务器挂了,就需要提升原来的从为主,这就是主从切换。

首先在监控机器上每秒钟扫描master服务器的3306端口(nc 3306),当master服务器出现故障时,马上执行手工操作的步骤(最后是将其编写成脚本自动执行),从而实现主从复制。

手工操作步骤:

  1. 首先选择一台从服务器,在其上停止从服务器服务(stop slave)。
  2. 开启二进制日志。
  3. 重置二进制日志(reset master)。
  4. 建立授权复制用户。
  5. 在其他从服务器中配置master-info信息去拉取二进制日志。
  6. 将网站的写流量切换到新的master上。

常见问题

  1. 查看服务器防火墙3306端口是否开放。
  2. 配置时是否出现拼写错误。
  3. 两天服务器是否为克隆产生,是克隆产生则需要修改uuid。修改mysql数据目录下auto.cnf文件(vim /data/mysql/auto.cnf)中server-uuid的值,随便修改几个字符即可。

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

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

相关文章

【2】A-Frame核心设计

一、基于HTML和Primitives的表达 1.HTML - 超文本标记语言 A-Frame 基于 HTML 和 DOM 之上&#xff0c;使用自定义元素的 polyfill。 HTML 是 Web 的构建块&#xff0c;提供了最易于访问的计算语言之一。无需安装或构建步骤&#xff0c;使用 HTML 创建仅涉及 HTML 文件中的文…

【STM32/HAL】嵌入式课程设计:简单的温室环境监测系统|DS18B20 、DHT11

前言 板子上的外设有限&#xff0c;加上想法也很局限&#xff0c;就用几个传感器实现了非常简单的监测&#xff0c;显示和效应也没用太复杂的效果。虽说很简单&#xff0c;但传感器驱动还是琢磨了不久&#xff0c;加上串口线坏了&#xff0c;调试了半天才发现不是代码错了而是…

ORA-12537: TNS:连接关闭/Io 异常: Got minus one from a read call

在另外一个数据库建立dblink的时候&#xff0c;发现执行命令报错&#xff1a; 被连接的数据库我也上去过&#xff0c;用工具尝试登陆也报错&#xff1a; IO Error: Got minus one from a read call, connect lapse 1 ms., Authentication lapse 0 ms. Got minus one from a …

设计模式探索:装饰器模式

1. 装饰器模式定义 装饰器模式&#xff08;Decorator Pattern&#xff09; 装饰器模式是一种结构型设计模式&#xff0c;允许向一个对象动态添加行为。在不改变类的接口的情况下&#xff0c;装饰器模式在原始类上增加额外的职责&#xff0c;并且支持多个装饰器嵌套使用。 装…

一个php文件怎么实现联系表单自动发送邮件

学习PHP&#xff1a;如何编写一个自动发送邮件的联系表单处理器&#xff1f; 无论是反馈意见、业务咨询&#xff0c;还是技术支持&#xff0c;联系表单都能为用户提供便捷的交流途径。AokSend将探讨如何通过一个PHP文件实现联系表单的自动发送邮件功能。 php文件&#xff1a;…

运用F5构建机器人防御,轻松应对恶意Bot威胁

数字化加快了信息的传播与交流&#xff0c;网络罪犯也借机纷纷涌向线上业务。攻击者通过暴力破解、字典攻击和撞库攻击破坏身份验证&#xff0c;导致账户被接管、欺诈、经济损失和客户不满&#xff0c;对应用的影响可能是灾难性的。面对日新月异的攻击&#xff0c;F5分布式云机…

作业/数据结构/2024/7/8

链表的相关操作作业&#xff1a; 1】 按值修改 2】按值查找&#xff0c;返回当前节点的地址 &#xff08;先不考虑重复&#xff0c;如果有重复&#xff0c;返回第一个&#xff09; 3】 逆置(反转) 4】释放链表 main.c #include "head.h"int main(int argc, con…

【IMU】 温度零偏标定

温度标定 IMU的零偏随着温度的变化而变化&#xff0c;在全温范围内形状各异&#xff0c;有些可能是单调的&#xff0c;有些可能出现拐点。 多项式误差温度标定 目的是对估计的参数进行温度补偿&#xff0c;获取不同温度时的参数值&#xff08;零偏、尺度、正交&#xff09;&…

向github远程仓库中push,要求使用token登录

Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 如上&#xff0c;当向github远程仓库push时&#xff0c;输入github的用户名和密码出现如上错误&#xff0c;要求使用token登录&#xff0c;此时只需要用户…

SpringBoot + MyBatisPlus 实现多租户分库

一、引言 在如今的软件开发中&#xff0c;多租户(Multi-Tenancy)应用已经变得越来越常见。多租户是一种软件架构技术&#xff0c;它允许一个应用程序实例为多个租户提供服务。每个租户都有自己的数据和配置&#xff0c;但应用程序实例是共享的。而在我们的Spring Boot MyBati…

Celery,一个实时处理的 Python 分布式系统

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

【高校科研前沿】中国农业大学姚晓闯老师等人在农林科学Top期刊发表长篇综述:深度学习在农田识别中的应用

文章简介 论文名称&#xff1a;Deep learning in cropland field identification: A review&#xff08;深度学习在农田识别中的应用&#xff1a;综述&#xff09; 第一作者及单位&#xff1a;Fan Xu&#xff08;中国农业大学土地科学与技术学院&#xff09; 通讯作者及单位&…

39 线程库

目录 thread类的简单介绍线程函数参数锁线程交替打印原子性操作库无锁CAS智能指针的线程安全单例模式的线程安全 1. thread类的简单介绍 在c11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;如windows和linux下各有自己的接口&#xff0c;这使得…

PTA - sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和

题目描述&#xff1a; 给定两个均不超过9的正整数a和n&#xff0c;要求&#xff1a;编写函数fn(a,n)&#xff0c; 求aaaaaa⋯aa⋯aa(n个a&#xff09;之和&#xff0c;fn须返回的是数列之和。 函数接口定义&#xff1a; def fn(a,n):其中&#xff0c; a 和 n 都是传入的参数…

《RWKV》论文笔记

原文出处 [2305.13048] RWKV: Reinventing RNNs for the Transformer Era (arxiv.org) 原文笔记 What RWKV(RawKuv):Reinventing RNNs for the Transformer Era 本文贡献如下&#xff1a; 提出了 RWKV 网络架构&#xff0c;结合了RNNS 和Transformer 的优点&#xff0c;同…

Java文件操作和IO的小案例

文章目录 案例1案例2案例3 案例1 要求&#xff1a; 扫描指定目录&#xff0c;并找到名称中包含指定字符的所有普通文件&#xff08;不包含目录&#xff09;&#xff0c;并且后续询问用户是否要删除该文件。 代码实现&#xff1a; package shixun;import java.io.File; import…

动手学深度学习54 循环神经网络

动手学深度学习54 循环神经网络 1. 循环神经网络RNN2. QA 1. 循环神经网络RNN h t h_t ht​ 与 h t − 1 h_{t-1} ht−1​ x t − 1 x_{t-1} xt−1​有关 x t x_t xt​ 与 h t h_t ht​ x t − 1 x_{t-1} xt−1​ 有关 怎么把潜变量变成RNN–假设更简单 潜变量和隐变量的区…

【动态规划Ⅴ】二维数组的动态规划——0/1矩阵、最大正方形

二维数组的动态规划——0/1矩阵、最大正方形 最大正方形1277. 统计全为 1 的正方形子矩阵221. 最大正方形 01矩阵542. 01 矩阵 最大正方形 下面两个题目是非常相似的&#xff0c;只是一个统计正方形数目&#xff0c;一个统计最大正方形的面积。 1277. 统计全为 1 的正方形子矩…

打卡第7天-----哈希表

继续坚持✊,我现在看到leetcode上的题不再没有思路了,真的是思路决定出路,在做题之前一定要把思路梳理清楚。 一、四数相加 leetcode题目编号:第454题.四数相加II 题目描述: 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j…

RoPE旋转位置编码从复数到欧拉公式

第二部分 从复数到欧拉公式 先复习下复数的一些关键概念 我们一般用表示复数&#xff0c;实数a叫做复数的实部&#xff0c;实数b叫做复数的虚部 复数的辐角是指复数在复平面上对应的向量和正向实数轴所成的有向角 的共轭复数定义为&#xff1a;&#xff0c;也可记作&#xff0…