MySQL主从集群

MySQL主从集群

主从模式、集群模式,都是在一个项目中使用多个mysql节点进行存储和读取数据。

当单机模式部署,不满足安全性、高可用、高并发等需求的时候,就需要考虑主从模式或者集群模式部署。

什么是主从模式?

  • 主从模式,或者是叫主从架构、主从复制,有以下几种常见方案:一主一从、一主多从、多主一从、互为主 备、级联复制等。
  • 主数据库必须开启binary log(二进制)功能,因为主从同步所有的操作都是基于二进制文件来完成的。
  • 数据同步模式有:
    •  异步模式:主库将事务binlog事件写入到binlog文件中,此时主库只会 通知一下dump线程发送这些新的binlog,然后主库就会继续处理提交 操作,而此时不会保证这些binlog传到任何一个从库节点上。
    •  半同步模式:主库只需要等待至少一个从库节点收到并且Flush binlog 到relay-log文件即可,主库不需要等待所有从库给主库反馈。同时,这里只是一个收到的反馈,而不是已经完全执行并且提交的反馈。
    •  全同步模式:当主库提交事务之后,所有的从库节点必须全部收到,APPLY并且提交这些事务,然后主库线程才能继续做后续操作。

1、主从复制指的是当主数据库中进行了update、insert、delete操作导致数据发生改变时,变化会实时同步到一个或者多个从数据库(slave)中。

2、默认情况下异步复制、无需维持长连接。

3、通过配置可以选择想要同步的库和表
 

什么是集群模式

集群最大的优点就是数据实时同步,高可用,每个节点的数据都是同步一致的,不像主从,有时会出现数据不一致,而高可用,任何一个节点宕机都不会影响业务。

集群模式有以下集中常见部署方式:

  • 读写分离的集群模式:集群中有的节点只进行写入操作,有的节点只进行读取操作,每个节点的数据都是完全一致的。
  • 分片(分库分表)集群模式:集群中所有的节点表结构一致,每个节点存储的数据不一样。分片算法主要有两种,一种是范围法(1-100条数据在节点A,101-200条数据在节点B),另一种是HASH法(对每条数据按照一定的算法分配到不同的存储节点)。
  • 读写分离和分片模式组合应用,先进行分片模式部署,然后对每个分片进行读写分离模式部署。

主从模式部署注意事项

  • 常用命令(执行命令之前stop服务,执行完再start):
  • 查看主节点状态:show master status\G;
  • 查看从节点状态:show slave status\G;
  • 停止同步:stop slave;
  • 开启同步:start slave;
  • 修改Master_Log_File:CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0;
  • 修改master节点信息:CHANGE MASTER TO MASTER_HOST='192.168.203.141', MASTER_PORT=33060,MASTER_USER='root', MASTER_PASSWORD='123456';
  • 删除当前节点的 binlog 文件:PURGE BINARY LOGS TO 'binlog.000001';
  • 数据的操作日志位置:SHOW BINARY LOGS;
  • 数据的真实具体位置:SHOW GLOBAL VARIABLES LIKE "%datadir%";
  • 每个节点的slave_sql_running、Slave_IO_Running两个字段都是YES,集群状态才正常
  • 主服务器查看主节点状态,显示的 File 字段,和从服务器查看从节点状态,显示的 Master_Log_File 字段,必须保持一致。
  • slave_sql_running为No的话,可能是主从库数据不同步,可以同步一下数据。
  • 数据导出命令(在mysql服务器执行,不需要登录数据库):
  • mysqldump -u[用户名] -h[ip] -p[密码] -P[端口号] --databases 数据库名 --tables 表名 >导出的文件名.sql
  • 数据库导入命令(导入的时候需要指定数据库,保证指定的数据库存在):
  • mysqldump -u[用户名] -h[ip] -p[密码] -P[端口号] < 导入的文件名.sql

操作

docker pull mysql/mysql-server:5.7

mkdir -p /home/data/mysql/slave/{conf,data}

mkdir -p /home/data/mysql/slave/{conf,data}

上传数据库容器的配置文件my.cnf

  • 主数据库需要开启二进制日志 log-bin=mysql-bin
  • 主从服务器都需要指定服务器标识ID server-id=1

创建Master主服务器

设置主服务器 master

docker run -p 3999:3306 \
--name mysql-master \
-v /home/data/mysql/master/conf/my.cnf:/etc/my.cnf \
-v /home/data/mysql/master/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7

设置从服务器 slave

docker run -p 3998:3306 \
--name mysql-slave \
-v /home/data/mysql/slave/conf/my.cnf:/etc/my.cnf \
-v /home/data/mysql/slave/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7

接着查看结果

输入 dockers ps

配置主从

先进入主服务器,查看主服务器的binlog 日志文件

show master status;

主服务器界面

从服务器界面

CHANGE MASTER TO MASTER_HOST='192.168.198.128', MASTER_PORT=3999, MASTER_USER='root',MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=586;

master_host=xx       这里填master主机IP,除了填写住宿主机IP,还可以填写bridge网络中的IP
master_log_file=xx   这里填写 File 的值就是前面我们show master status;命令的执行结果
master_log_pos=xx 这里填写 Position 的值就是前面我们show master status;命令的执行结果

start slave;

show slave status\G;

这里只要看到两个参数Slave_IO_Running和Slave_SQL_Running都为true|yes,则表示复制是正常进行的, 到这里我们的主从结构也就搭建完成了

集群成功后,在mysql-master容器重启后虽然File的值和Position的值会变化,但在mysql-slave可以进行跟踪,所以不需要重新进行配置

stop slave;

 reset slave all;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

结构体大揭秘:代码中的时尚之选(上)

目录 结构结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构 结构是一些值的集合&#xff0c;这些值被称为成员变量。之前说过数组是相同类型元素的集合。结构的每个成员可以是不同类型的变量&#xff0c;当然也可以是相同类型的。 我们在生活…

【数据库原理】(38)数据仓库

数据仓库&#xff08;Data Warehouse, DW&#xff09;是为了满足企业决策分析需求而设计的数据环境&#xff0c;它与传统数据库有明显的不同。 一.数据库仓库概述 定义: 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持企业管理和…

DAY06_SpringBoot—入门properties/YML文件lombok插件及使用

目录 1 SpringBoot1.1 SpringBoot介绍1.2 SpringBoot入门案例1.2.1 安装SpringBoot插件1.2.2 创建SpringBoot项目 1.3 关于SpringBoot项目说明1.3.1 关于POM.xml文件说明1.3.2 依赖配置项1.3.3 build标签 1.4 SpringBoot Maven操作1.4.1 项目打包1.4.2 java命令运行项目 1.5 关…

数据脱敏(二)脱敏算法-哈希脱敏

脱敏算法篇使用阿里云数据脱敏算法为模板,使用算子平台快速搭建流程来展示数据 哈希脱敏是一种数据安全处理技术&#xff0c;主要用于保护敏感信息。它将原始数据&#xff08;如密码、身份证号等&#xff09;通过哈希算法转换成固定长度的哈希值&#xff0c;即使哈希值被泄露&a…

【GitHub项目推荐--老照片变清晰】【转载】

先来看一个效果图&#xff0c;这个开源项目能把模糊爆浆的老照片 1 s 内变成清晰、高清的有色照片。 而以上这些效果&#xff0c;无需专业 PS 技能&#xff0c;只用一个网页端的 Demo、点点鼠标上传图片就能搞定。 这个修复神器&#xff0c;由腾讯 PCG ARC 实验室研发&#xf…

Java 面向对象 06 对象内存图(黑马)

之前设计的如下图&#xff1a; 方法区和内存在物理上是一块的&#xff0c;但是有不好的地方&#xff0c;所以变成了这种形式&#xff1a; 一个对象的内存图&#xff1a; 在创建对象时虚拟机至少做了以下七步&#xff1a; 解释&#xff1a; 第一步&#xff1a; 第二步&#x…

使用golang对接微软Azure AI翻译

文章目录 一、官方地址二、准备工作三、代码示例 一、官方地址 https://learn.microsoft.com/zh-CN/azure/ai-services/translator/translator-text-apis?tabsgo 二、准备工作 创建服务 创建服务连接地址&#xff1a;https://portal.azure.com/#create/Microsoft.CognitiveS…

如何本地部署虚拟数字克隆人 SadTalker

环境&#xff1a; Win10 SadTalker 问题描述&#xff1a; 如何本地部署虚拟数字克隆人 SadTalker 解决方案&#xff1a; SadTalker&#xff1a;学习逼真的3D运动系数&#xff0c;用于风格化的音频驱动的单图像说话人脸动画 单张人像图像&#x1f64e; ♂️音频&#x1f3…

数据结构:顺序循环队列

队列是限制在两端操作进行插入操作与删除操作的线性表&#xff0c;允许进行插入操作的一端称为"队尾"&#xff0c;允许进行删除操作的一端称为“队头”。当线性表中没有元素时&#xff0c;称为“空队”。队列的特点是先进先出。 队列两种规定&#xff1a; 1、front…

算法第二十一天-丑数

丑数 题目要求 解题思路 首先判断数字是不是为0或者负数&#xff0c;两者均不可能成为丑数&#xff1b; 之后对n进行不断整除&#xff0c;直到无法除尽为止。 简单判断最后的数是不是1即可。 代码 class Solution:def isUgly(self, n: int) -> bool:if n<0:return Fa…

1.redhat网卡配置

想要通过cmd ping通redhat 1.在redhat输入:ifconfig 将自己主机网络适配器VMware Network Adapter VMnet1的IPv4配置在同一网段,掩码是255.255.255.0,所以最后一位不同就可以 推荐用FileZilla远程上传文件

【手撕C语言 第六集】函数(上)

文章目录 一、函数是什么&#xff1f;二、C语言中函数的分类&#xff1a;1.库函数1.1 如何学会使用库函数&#xff1f; 2. 自定义函数 三、函数的参数1.实际参数&#xff08;实参&#xff09;&#xff1a;2.形式参数&#xff08;形参&#xff09;&#xff1a; 四、函数的调用&a…

Java研学-spring框架(一)

一 概述 1 介绍 Spring框架是一个开源的Java EE应用程序框架&#xff0c;旨在简化Java企业级应用的开发难度和开发周期&#xff0c;主要通过控制反转&#xff08;IoC&#xff09;和面向切面编程&#xff08;AOP&#xff09;等技术实现。   容器&#xff08;Container&#x…

会计六要素

目录 会计六要素(一&#xff09;资产(二&#xff09;负债(三&#xff09;所有者权益(四&#xff09;收入、费用和利润一、收入二、费用三、利润 \quad 会计六要素 我国《企业会计准则》将企业会计要素分为 资产 负债 所有者权益 收入 费用 利润 \quad (一&#xff09;资产 定…

代码随想录二刷 |回溯 | 组合

代码随想录二刷 &#xff5c;回溯 &#xff5c; 组合 题目描述解题思路代码实现 题目描述 77.组合 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路 递归…

软考高项重点总结!看这一篇就够了❗️

&#x1f4da;信息系统项目管理师第四版g方教材有700多页&#xff0c;很多考生在翻书的时候总觉得书上内容太多&#xff0c;知识点也记不住&#xff0c;不知道哪些是重点。 &#x1f618;那今天我们来梳理一下。 &#x1f50d;这本书是有24章&#xff0c;但也不是都要精通的&am…

智慧文旅一机游:科技与文化的完美结合,引领智慧文旅新潮流,智慧旅游未来已来

一、科技与文化的完美结合&#xff1a;智慧文旅一机游的核心理念 智慧文旅一机游&#xff0c;是科技与文化相融合的产物&#xff0c;它不仅代表着旅游行业的创新与发展&#xff0c;更是一种文化与科技完美结合的生活方式。一机游的核心理念在于通过先进的科技手段&#xff0c;提…

java使用jsch处理软链接判断是否文件夹

前言 这一次主要是碰到一个问题。因为使用jsch去读取文件的时候&#xff0c;有一些文件它是使用软链接制作的一个映射。因为这里面有一个问题。如果它是软链接你就无法判断他到底是文件。还是文件夹&#xff1f;因为他没有提供可以直接读取的方法&#xff0c;用权限信息去判断…

08. Springboot集成webmagic实现网页爬虫

目录 1、前言 2、WebMagic 3、Springboot集成Webmagic 3.1、创建Springboot&#xff0c;并引入webmagic依赖 3.2、定义PageProcessor 3.3、元素选择 3.3.1、F12查看网页元素 3.3.2、元素选择 3.3.3、注意事项 4、小结 1、前言 在信息化的时代&#xff0c;网络爬虫已…

二叉树简单OJ题(及其后续函数补充)

OJ题 单值二叉树 首先呢&#xff0c;我们还是把问题分化一下&#xff0c;求一棵二叉树是否为单值二叉树&#xff0c;还是可以分为几个部分&#xff1a;根节点 左子树 右子树 而我们向下遍历的时候&#xff0c;其实就是在这个节点以及其左子树和右子树中找&#xff0c;是否值都…