【MySQL主从复制】

目录

一、MySQL Replication

1.概述

2.优点

二、MySQL复制类型

1.异步复制(Asynchronous repication)

2.全同步复制(Fully synchronous replication)

3.半同步复制(Semisynchronous replication)

三、MySQL支持的复制方式

1.基于SQL语句的复制

2.基于行的复

3.混合模式复制

4.复制的工作过程

5.复制过程的限制

四、部署MySQL主从异步复制

1.在MySQL Master上的配置NTP时间同步服务器

1.1 启动NTP服务

1.2 在2个Slave节点上配置与Master进行时间同步

1.3 所有机器上的操作

2.配置MySQL Master服务器

2.1 在/etc/my.cnf中修改或者增加如下内容

2.2 创建Replication用户

2.3 获得Master DB的相关信息

2.4 备份Master原有数据

2.5 在MySQL Slave上的配置

2.6 测试复制是否成功


一、MySQL Replication

1.概述

        MySQL Replication俗称MySQL AB复制、主从复制、主从同步,是MySQL官方推荐的数据同步技术。数据同步基本过程为从数据库会实时去读取主数据库的二进制日志文件,按照日志中记录对从库进行同样的操作,以达到数据同步效果。

2.优点

  • 通过增加从服务器来提高数据库平台的可靠性。在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器地数量,从而调整数据库平台地高性能。
  • 提高数据安全性,因为数据已复制到从服务器,主数据库异常时,可以将从服务器复制进程终止来达到保护数据完整性地特点。
  • 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而缓解主服务器地性能压力。

二、MySQL复制类型

1.异步复制(Asynchronous repication)

        MySQL默认地复制是异步地,主库在执行完客户端提交地事务后会立刻将结果返回给客户端,并不关心从库是否已经接受并处理了事务,这样就会有一个问题,主库如果down掉了,此时主上已经提交地事务可能没有传到从库服务器上,如果此时,强制将从提升为主,可能会导致新主上的数据不完整。默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的。

2.全同步复制(Fully synchronous replication)

        指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响,返回客户端的响应速度也会被拖慢。

3.半同步复制(Semisynchronous replication)

        MySQL由Google贡献的补丁才开始支持半同步复制模式,介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接受到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

        半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式。

三、MySQL支持的复制方式

1.基于SQL语句的复制

在主服务器上执行的SQL语句,在从服务器上执行同样的SQL语句,效率比较高。

2.基于行的复

主服务器把表的行变化作为事件写入到二进制日志中,主服务器把代表了行变化的事件复制到从服务器中。

3.混合模式复制

先采用基于语句的复制,一旦发现基于语句无法精确复制时,再采用行。

4.复制的工作过程

  • 在每个事务更新完成数据之前,Master会在二进制日志中记录这些数据的语句,当MySQL将事务串行的写入二进制日志完成后,Master通知存储引擎提交事务并将数据写入磁盘
  • Slave开启一个I/O工作线程,在Master之间建立一个连接,然后开始Binlog dump process,Binlog dump process会从Master的二进制日志中读取操作事件,如果已经跟Master达到一致状态,它会催眠并等待Master产生新的操作事件,I/O线程将这些改变数据的事件写入自己的中继日志。
  • SQL Slave Thread(SQL工作线程)是处理MySQL Replication过程的最后一步。SQL线程从中继日志读取操作事件,重放其中的事件从而更新Slave服务器的数据,使slave与Master中的数据保持一致,只要该线程与I/O线程保持一致,中继日志通常会在OS的缓存中,所以中继日志的开销很小。

5.复制过程的限制

  • MySQL5.6之前的版本复制操作在slave上执行的是串行化的,也就是Master上的并行更新会导致数据复制延迟
  • 所有MySQL服务器的版本都要高于3.2,还有一个基本的原则就是从服务器的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。

四、部署MySQL主从异步复制

1.在MySQL Master上的配置NTP时间同步服务器

1.1 启动NTP服务

rpm -q ntp

vim /etc/ntp.conf
        server 127.127.1.0
        fudge 127.127.1.0 stratum 8

systemctl start ntpd && systemctl enable ntpd

1.2 在2个Slave节点上配置与Master进行时间同步

rpm -q ntpdate

ntpdate 192.168.42.138

1.3 所有机器上的操作

yum -y install mariadb mariadb-devel mariadb-server

2.配置MySQL Master服务器

2.1 在/etc/my.cnf中修改或者增加如下内容

vim /etc/my.cnf

        [mysqld]
        server-id=1
        log-bin=mysql-binlog
        log-slave-updates=true

 

重启MySQL服务器

systemctl restart mysqld

netstat -anptu | grep 3306

2.2 创建Replication用户

mysql -uroot -p'123456'

grant replication slave on *.* to 'myslave'@'192.168.42.%' identified by '123456';

flush privileges;

:Replication slave:用于复制性从属服务器(从主服务器中读取二进制日志文件权限)

2.3 获得Master DB的相关信息

show master status;

:供slave连接使用,记录下File和Position的值。

2.4 备份Master原有数据

mysqldump -uroot -p --all-databases > /root/alldbbackup.sql

scp /root/ alldbbackup.sql root@192.168.42.145:/root/

scp /root/ alldbbackup.sql root@192.168.42.148:/root/

  •         如果在生产环境中Master服务器已经运行一段时间,或者Master服务器上已经存在数据,为了保证所有数据的一致性,需要先将Master目前已有的数据全部导给Slave服务器。
    •         备份的方法有很多,可以直接备份数据文件,也可以使用mysqldump工具。全新搭建的环境不存在数据备份问题。
    • 2.5 在MySQL Slave上的配置

    • 导入Master的备份脚本

    • systemctl start mysqld

    • 从库连接主库进行测试,如果连接成功说明主库配置成功

    • mysql -u myslave -p123456 -h 192.168.42.138

    • 修改MySQL配置文件(配置多个从服务器时依次设置server-id号)

      • vim /etc/my.cnf

                [mysqld]
                server-id=2
                relay-log=relay-log-bin
                relay-log-index=slave-relay-bin.index

      • vim /etc/my.cnf

                [mysqld]
                server-id=3
                relay-log=relay-log-bin
                ​​​​​​​relay-log-index=slave-relay-bin.index

      • :

    • 修改完后重启数据库

    • systemctl restart mysqld

    • 在Slave服务器授权,启动从库,进行主从库数据同步

    • mysql -uroot -p'123456'

      • stop slave;

      •  

      • start slave;

      •  show slave status\G

    • :参数说明

  • CHANGE MASTER TO
  • MASTER_HOST='master_host_name', #主服务器的IP地址
  • MASTER_USER='replication_user_name', #主服务器授权的用户
  • MASTER_PASSWORD='replication_password', #主服务器授权的密码
  • MASTER_LOG_FILE='recorded_log_file_name', #主服务器二进制日志的文件名
  • MASTER_LOG_POS=recorded_log_position; #日志文件的开始位置

2.6 测试复制是否成功

在Master服务器上创建一个数据库或者表,到Slave服务器上查看,如果配置成功就可以成功同步。

主库查看当前存在的库

show databases;

从库查看当前存在库

主库服务器创建库

从库验证

说明主从数据库创建成功。

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

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

相关文章

ava版知识付费平台免费搭建 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台

提供私有化部署,免费售后,专业技术指导,支持PC、APP、H5、小程序多终端同步,支持二次开发定制,源码交付。 Java版知识付费-轻松拥有知识付费平台 多种直播形式,全面满足直播场景需求 公开课、小班课、独…

Rust ESP32C3开发

Rust ESP32C3开发 系统开发逐步使用Rust语言,在嵌入式领域Rust也逐步完善,本着学习Rust和ESP32的目的,搭建了ESP32C3的环境,过程中遇到了不少问题,予以记录。 ESP-IDF开发ESP32 这一部分可跳过,是使用C开…

python测试开发面试常考题:装饰器

目录 简介 应用 第一类对象 装饰器 描述器descriptor 资料获取方法 简介 Python 装饰器是一个可调用的(函数、方法或类),它获得一个函数对象 func_in 作为输入,并返回另一函数对象 func_out。它用于扩展函数、方法或类的行为。 装饰器模式通常用…

【数据结构】实验十一:图

实验十一 图 一、实验目的与要求 1)掌握图的存储表示与操作实现。 2)掌握图的连通性及其应用。 二、 实验内容 1.用邻接表存储一个图形结构,并计算每个顶点的度。 2. 采用深度和广度优先搜索算法,遍历上述这张图,…

vue 实现拖拽效果

实现方式:使用自定义指令可以实现多个面板拖拽互不影响 1.自定义指令 js directives: {// 拖拽drag(el) {el.onmousedown function (e) {let x e.pageX - el.offsetLeftlet y e.pageY - el.offsetTopdocument.onmousemove function (e) {el.style.left e.pag…

【期末课程设计】学生成绩管理系统

因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c 2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h 前言: 学生成绩管理系统含教师…

什么是Maven,Maven的概述及基本使用

MAVEN 一、Maven简介1.1、Maven概述1.2、Maven仓库1.3项目获取jar包过程 二、Maven使用2.1Maven安装配置2.1.1配置环境变量2.1.2配置本地仓库2.1.3配置阿里云私服 2.2Maven基本使用2.2.1Maven常用指令2.2.2Maven生命周期 总结 一、Maven简介 Apache Maven是一个项目管理和构建…

STM32 I2C OVR 错误

一、问题 STM32 I2C 用作从机时,开启如下中断并启用 callback 回调函数。 每一次复位后,从机都可以正常触发地址匹配中断ADDR,之后在该中断的回调函数中启用接收中断去收取数据时,却无法进入RXNE中断,而是触发了 OVR …

<C语言> 动态内存管理

1.动态内存函数 为什么存在动态内存分配? int main(){int num 10; //向栈空间申请4个字节int arr[10]; //向栈空间申请了40个字节return 0; }上述的开辟空间的方式有两个特点: 空间开辟大小是固定的。数组在申明的时候,必须指定数组的…

自然语言处理NLP介绍——NLP简介

目录 内容先进性说明内容大纲概要云服务器的使用 内容先进性说明 内容大纲概要 云服务器的使用

githack的安装步骤+一次错误体验

一.githack的安装步骤 1.要在Kali Linux上安装GitHack工具,您可以按照以下步骤操作: 打开终端并使用以下命令克隆GitHack存储库: git clone https://github.com/lijiejie/GitHack.git2.进入GitHack目录: cd GitHack3.安装依赖项…

一种分解多种信号模式非线性线性调频的方法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Elasticsearch

文章目录 分布式搜索引擎elasticsearch介绍elasticsearch作用ELK技术栈elasticsearch和lucene 倒排索引正向索引倒排索引正向和倒排比较 es的一些概念文档和字段索引和映射mysql与elasticsearch elasticsearch安装部署单点es部署kibana安装IK分词器扩展词词典停用词典 索引库操…

Go语言基础语法八万字详解,对小白友好

基本语法——变量var 变量的使用 什么是变量 变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法。 所以变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变 声明变量 var名称类型是声明单个变量的语法…

PaddleOCR #PP-OCR常见异常扫雷

异常一:ModuleNotFoundError: No module named ‘tools.infer’ 实验案例: PaddleOCR #使用PaddleOCR进行光学字符识别(PP-OCR文本检测识别) 参考代码: 图片文本检测实验时,运行代码出现异常:M…

【我们一起60天准备考研算法面试(大全)-第二十七天 27/60】【真分数】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

8.6 PowerBI系列之DAX函数专题-非日期类型的累计聚合

需求 需求1: 需求2: 实现 1.需求1实现: (1)在power query中添加列-添加索引列; (2)根据索引列进行累加计算。 度量值 累计聚合销售额 var current_pro_type selectedvalue(…

CHD6.2.1集群 Hive开启Iceberg

下载jar包 https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-hive-runtime/1.0.0/iceberg-hive-runtime-1.0.0.jar 存放在/opt/cloudera/parcels/CDH/lib/hive/auxlib/ CDH集群修改hive配置 选择xml格式 粘贴即可 <property><name>iceberg.engine.hi…

华为认证HCIA-HCIP-HCIEdatacom题库解析+机构视频+实验

题库包含有2023年最新HCIA-datacom题库、HCIP-datacom题库&#xff0c;HCIE-datacom题库&#xff0c; 云计算HCIA&#xff0c;HCIP题库&#xff0c;云服务HCIA&#xff0c;HCIP题库&#xff0c;华为存储HCIP题库&#xff0c;华为安全HCIP题库 &#xff0c;学习笔记&#xff0c;…

MES管理系统中设备管理功能的原理是什么

制造执行系统MES是一种应用于制造工厂的实际操作系统&#xff0c;它通过实时监控和控制生产流程&#xff0c;为生产过程提供全面的管理和优化。在MES管理系统解决方案中&#xff0c;设备管理功能是非常重要的一部分&#xff0c;它可以实现设备实时监控、故障预警、维护保养等功…