如何进行MySQL的主从复制(MySQL5.7)
- 背景:在一些Web服务器开发中,系统用户在进行数据访问时,基本都是直接操作数据库MySQL进行访问,而这种情况下,若只有一台MySQL服务器,可能会存在如下问题
- 数据的读和写的所有压力都会由一台数据库独立承担,压力太大
- 数据库服务器磁盘损坏等原因则会导致数据丢失,出现单点故障问题
- 那为了解决这两个问题,我们可以准备两台MySQL服务器,一台主(master)服务器,一台从(slave)服务器,若主库的数据存在变更时,需要同步到从库中,称为主从复制。而用户在访问我们的Web项目时,如果是写操作(insert、update、delete)则直接操作主库即可;如果是读(select)操作,则直接操作从库,同时在这种读写分离的结构中,从库我们是可以有多个的这种结构,这种方式我们可称为读写分离。
- 因为MySQL数据库默认是支持主从复制的,所以我们并不需要借助于其他的技术,只要在数据库中进行简单的配置即可实现。那么接下来我们开始进行MySQL的主从复制的操作
- 主从复制的简单介绍
- MySQL主从复制是一个异步的复制过程,底层是基于MySQL的数据库自带的二进制日志功能。就是从一台或多台MySQL数据库(slave,从库)从另一台MySQL数据库(master,主库)进行日志的复制,然后再解析对应的日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具进行操作
- 本案例中仅通过一主一从来介绍主从复制的操作
- 首先我们先准备两台Linux服务器,并且在服务器上需要预先安装好MySQL数据库,同时我们已经将服务器的防火墙已经关闭,并将两台Linux系统的MySQL服务正常启动
- Linux操作系统:ubuntu-20.04-live-server-amd64
- MySQL数据库版本:5.7.40
- 首先进行主库配置
- 修改MySQL数据库的配置文件my.cnf文件,在文件最下面添加启用二进制日志功能
-
# binlog日志 server-id=101 log-bin = /home/dev/dev-install/mysql-5.7.40/binlog/mysql-bin
- log-bin:[必须]启用二进制日志
server-id:[必须]服务器唯一ID(唯一即可)
- 修改完配置文件需要重启MySQL服务
-
./mysql.server restart
-
- 修改MySQL数据库的配置文件my.cnf文件,在文件最下面添加启用二进制日志功能
- 主库中创建数据同步的用户并授权
- 登录MySQL,然后执行如下指令,创建用户并授权
-
GRANT REPLICATION SLAVE ON *.* to 'syncdata'@'%' identified by 'Sync@Data123';
- 上面的指令是syncdata为用户,Sync@Data123为密码,从库在建立复制的时候需要用到用户授权,只有在有授权用户的前提下才能进行复制
-
- 登录MySQL,然后执行如下指令,创建用户并授权
- 登录MySQL的数据库,查看master主库的同步状态
- 执行如下指令,并将结果中的File和Position的信息记录下来
-
show master status;
- 注意,查看上面的状态之后,不要再操作当前数据库了,也就是不要再执行任何指令,防止数据同步位置错误
-
- 执行如下指令,并将结果中的File和Position的信息记录下来
- 开始进行从库的配置
- 修改MySQL数据库的配置文件my.cnf文件,在文件最下面添加设置服务器的唯一id
-
server-id=102
- server-id:[必须]服务器唯一ID
- 重启MySQL服务
-
./mysql.server restart
-
- 修改MySQL数据库的配置文件my.cnf文件,在文件最下面添加设置服务器的唯一id
- 登录从库的MySQL数据库,设置主库的地址以及对应的同步位置,依次执行下列指令
-
change master to master_host='192.168.xxx.xxx',master_user='syncdata',master_password='Sync@Data123',master_log_file='mysql-bin.000009',master_log_pos=433;start slave;
- 上面的指令信息说明为:
- master_host :主库的IP地址,即需要根据实际情况的ip设定
- master_user :访问主库进行主从复制的用户名,也就是上面所在主库创建的
- master_password :访问主库进行主从复制的用户名对应的密码
- master_log_file : 从哪个日志文件开始同步,也就是上面查询master状态中展示的File
- master_log_pos : 从指定日志文件的哪个位置开始同步,也就是查询master状态中展示的Position
-
- 然后查看从库数据库的状态
-
show slave status \G
- 可以通过状态信息中的 Slave_IO_Running 和Slave_SQL_Running 可以看出主从同步是否就绪,如果这两个参数全为Yes,则表示主从同步已经配置完成
-
- 若状态是Slave_IO_Running: No,Slave_SQL_Running: Yes,说明同步不成功,则需要前往MySQL的log错误日志查看报错信息
- 若出现文件[ERROR] Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593的解决方案
-
找到从数据库的该文件对应的 UUID,该文件为/home/dev/dev-install/mysql-5.7.40/data/auto.cnf,然后编辑auto.cnf,将里面uuid的值随便改一个即可,然后保存文件
-
- 保存完文件重新启动MySQL服务器即可
- 再次通过 show slave status \G 查看从数据库的状态
-
- 若出现文件[ERROR] Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593的解决方案
- 主从环境的测试
- 我们已经把主从复制的环境搭建好了,接下来我们可以通过Navicat连接上两台MySQL服务器进行测试,我们只需要在主库master上执行操作,然后再查看从库slave中是否将数据同步过去即可
- 主库创建数据库,刷新并查看从库是否可以正常同步过去
- 可以发现主库创建的数据库已经同步到从库,证明主从复制已经验证成功
- 我们已经把主从复制的环境搭建好了,接下来我们可以通过Navicat连接上两台MySQL服务器进行测试,我们只需要在主库master上执行操作,然后再查看从库slave中是否将数据同步过去即可
- 首先我们先准备两台Linux服务器,并且在服务器上需要预先安装好MySQL数据库,同时我们已经将服务器的防火墙已经关闭,并将两台Linux系统的MySQL服务正常启动
相关文章:

如何进行MySQL的主从复制(MySQL5.7)
背景:在一些Web服务器开发中,系统用户在进行数据访问时,基本都是直接操作数据库MySQL进行访问,而这种情况下,若只有一台MySQL服务器,可能会存在如下问题 数据的读和写的所有压力都会由一台数据库独…...
5:kotlin 类(Classes )
kotlin支持面向对象编程,也有雷和对象的概念 要声明一个类需要使用class关键字 class Customer属性(Properties) 可以在类名后边添加(),在()里边声明属性 class Contact(val id: Int, var email: String)声明了不…...
达梦:【1】达梦常用操作
达梦:【1】达梦常用操作 一、登录达梦二、创建表空间及用户模式三、查看表空间、用户、模式四、系统查询五、角色管理六、数据库导入导出七、达梦数据库汉字存储八、根据表生成ctl控制文件九、本地连多台数据库(RAC) 一、登录达梦 ./disql username/passwordip:por…...

数字人透明屏幕的技术原理是什么?
数字人透明屏幕的技术原理主要包括人脸识别和全息影像技术。其中,人脸识别技术是通过摄像头捕捉游客的面部表情和动作,并将其转化为数据指令,以便与数字人物进行互动。而全息影像技术则是利用透明屏幕,通过全息投影的方式将数字人…...

提升APP软件的用户体验方法
提升APP软件的用户体验是确保用户满意度和应用成功的关键。以下是一些方法,可以帮助提升APP的用户体验,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.简洁的用户界面设计: …...

JVM运行时数据区域、对象内存分配、内存溢出异常总结
深入理解java虚拟机第二章 二、运行时数据区域2.2.1 程序计数器2.2.2 Java虚拟机栈2.2.3 本地方法栈2.2.4 Java堆2.2.5 方法区2.2.6 运行时常量池2.2.7 直接内存 三、HotSpot虚拟机对象解密2.3.1 对象的创建对象如何分配内存?对象的创建如何处理并发问题?…...
【C++设计模式】单例模式singleton
C 设计模式–单例模式singleton 单例模式 单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 优点:内存中只有一个实例,减少内存开销;避免对资源多重占用;设置全局访问点,严…...
CVPR 2023 精选论文学习笔记:Post-Training Quantization on Diffusion Models
基于MECE原则,我们给出以下四种分类依据: 1. 模型类型 生成模型用于生成与其训练数据相似的新数据。它们通常用于图像生成、文本生成和音乐生成等任务。语言模型用于理解和生成人类语言。它们通常用于机器翻译、聊天机器人和文本摘要等任务。其他模型用于各种任务,例如图像…...

Python基础语法之学习字符串快速格式化
Python基础语法之学习字符串快速格式化 一、代码二、效果 一、代码 # 通过f"{占位}"控制字符串快速格式化,不做精度控制 name "张三" age 13 money 12.5 text f"姓名是{name},年龄是{age},钱是{money}" print(text)二、效果 每一天都是一个…...

Ubuntu22.04 server版本关闭DHCP,手动设置ip
在Ubuntu 22.04 中,网络配置已迁移到 Netplan,因此可以使用 Netplan 配置文件来手动设置 IP 地址并关闭 DHCP。 以下是在 Ubuntu 22.04 上手动设置 IP 地址并禁用 DHCP 的步骤: 打开终端,使用 root 权限或 sudo 执行以下命令&…...

贪心算法(新坑)
贪心入门 概述: 贪心算法是一种在每一步选择中都采取当前最优解的策略,希望最终能够得到全局最优解的算法。简单来说,它会不断地做出局部最优的选择,相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…...
C 语言头文件
C 语言头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它…...

MySQL中自增id用完怎么办?
MySQL中自增id用完怎么办? MySQL里有很多自增的id,每个自增id都是定义了初始值,然后不停地往上加步长。虽然自然数是没有上限的,但是在计算机里,只要定义了表示这个数的字节长度,那它就有上限。比如&#…...

C语言常见算法
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使…...

0-1背包的初始化问题
题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下,容量为j时能放物品的数量(这道题歌曲数量对应物品数量,容量对应时间)。 技巧(收获) 二维dp数组可以视情况优化为一维dp数组…...

API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传
实现 //时间戳13位毫秒private function getMillisecond() {list($s1,$s2) explode( ,microtime());return (float)sprintf(%.0f,(floatval($s1) floatval($s2)) * 1000);}// 组装参数private function gysscPost1($url,$data){// $data[timestamp] 1694402111964;$data[tim…...
C语言-求阶乘序列前N项和
本题要求编写程序,计算序列 1!2!3!⋯ 的前N项之和。 输入格式: 输入在一行中给出一个不超过12的正整数N。 输出格式: 在一行中输出整数结果。 输入样例: 5输出样例: 153 #include "stdio.h" int main(){int n;int sum 0;scanf("%d",&a…...
3:kotlin 逻辑控制(Control flow)
像其他语言一样,kotlin也有循环和逻辑控制 条件判断(Conditional expressions) kotlin使用if和when来进行条件判断 如果纠结选择if还是when,建议使用when,因为它更能提高程序的健壮性 if 普通写法 fun main() {val…...

Linux系统之一次性计划任务at命令的基本使用
Linux系统之一次性计划任务at命令的基本使用 一、at命令介绍二、at命令的使用帮助2.1 at命令的help帮助信息2.2 at命令的语法解释 三、at命令的日常使用3.1 立即执行一次性任务3.2 指定时间执行一次性任务3.3 查询计划任务3.4 其他指定时间用法3.5 删除已经设置的计划任务3.6 显…...

记录:Unity脚本的编写8.0
目录 需求分析设计GUI包含账号和密码输入栏,包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo,登录和注册的实现(包括GUI和数据库操控) 需求分析 自行设计GUI,要求 1.包…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...