MySQL主从结构搭建

说明:本文介绍如何搭建MySQL主从结构;

原理

主从复制原理如下:

在这里插入图片描述

(1)master数据写入,更新binlog;

(2)master创建一个dump线程向slave推送binlog;

(3)slave连接到master,创建一个IO线程接收binlog,并记录到relay log中继日志中;

(4)slave开启一个sql线程读取relay log并在slave执行,完成同步;

(5)slave记录自己的binlog;

搭建

Step1:安装MySQL

首先,在两台服务器上安装好MySQL服务,如下:

(ECS_1)

在这里插入图片描述

(ECS_2)

在这里插入图片描述

安装步骤参考:CentOS 7安装、卸载MySQL数据库(一)

安装完,需要确保这两台服务器能够互相感知对方,简单说就是能互相ping通,且相关端口是开放的。正式情况网络一般都是连通的,如果是自己练习,可在本地和虚拟机之间搭建,或者在虚拟机和docker之间搭建。我这里是斥巨资(60块/月)买了一台轻量级应用服务器,来和云服务器ECS搭建主从。

在这里插入图片描述

Step2:主节点

接着,修改两台MySQL服务器的配置文件,对于主节点,配置文件新增如下配置:

# mysql服务ID,保证在整个集群环境中唯一
server_id=1# 是否只读,1 代表只读,0代表读写,主数据库需要读写,设置0
read-only=0# 开启binlog
log-bin=mysql-bin

在这里插入图片描述

另外,如需要指定同步某些数据库、忽略某些数据库不同步,可增加如下配置

# 忽略的,不同步的数据库
binlog-ignore-db=mysql# 指定的,需要同步的数据库
binlog-do-db=mydb

修改完后,需重启MySQL服务

# 重启服务
systemctl restart mysql

连接数据库,输入下面SQL,开放给账户主从复制权限;

grant replication slave on *.* to 'admin'@'%';

查看binlog日志的信息

show master status;

记住文件名,位置,后面需要用到

在这里插入图片描述

Step3:从节点

从节点配置如下:

# mysql服务ID,保证在整个集群环境中唯一
server_id=2# 是否只读,1 代表只读,0代表读写,从数据库仅读,设置1
read-only=1

在这里插入图片描述

修改完后,需重启MySQL服务

# 重启服务
systemctl restart mysql

连接数据库,敲下面的语句,设置同步的主库

change master to source_host='主节点IP', source_user='admin', source_password='MySQL@3306', source_log_file='mysql-bin.000001', source_log_pos=538;

在这里插入图片描述

敲下面的命令,开始同步:

start replica;

在这里插入图片描述

没有报错,继续敲下面的命令,查看主从同步状态

show replica status\G;

在这里插入图片描述

这里我遇到了许多问题,搭建成功,如下图方框中的状态:

在这里插入图片描述

遇到问题,参考下面这篇文章,希望能帮到你

  • 搭建MySQL主从结构时的问题

如果是8.0.23前版本的数据库,敲下面的语句

(建立连接)

change master to master_host='主节点IP', master_user='admin', master_password='MySQL@3306', master_log_file='binlog.000002', master_log_pos=545;

(开始同步)

start slave;

(查看从节点状态)

show slave status\G;

Step4:测试

现在,我们打开Navicat,在主节点创建一个数据库,查看从节点有没有同步;

在这里插入图片描述

(刷新,Pink!,从库也出现了test数据库)

在这里插入图片描述

到这里,MySQL主从就搭建完成了,后续往主数据修改,从库也会同步修改。但需要注意,如果一开始主从库内容不一致,比如有的库只在主库中有,而从库中没有,在主从状态下删除掉主库中从库没有的数据库,就会报错。

如下,在搭建前,主从没搭建成功,我忘把主库中的test数据库删掉,搭建完之后,把只在主库中有的test数据库删掉,从库报下面的错误,说不能删除一个不存在数据库。更坑的是,报错之后主从就不能同步了。需要停止同步,重新建立连接。

在这里插入图片描述

另外

另外,搭建主从MySQL,对配置文件的修改实际上非常少,这里我把完整的配置文件复制到这里,以供参考:

(主节点)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# 注意这行配置,如果你报了相关错误,考虑开启此行配置
default-authentication-plugin=mysql_native_passworddatadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# mysql服务ID,保证在整个集群环境中唯一
server-id=1
#
# 是否只读,1 代表只读,0代表读写,主数据库需要读写,设置0
read-only=0# 开启binlog
log-bin=mysql-bin

(从节点)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_passwordport = 3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.socklog-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# mysql服务ID,保证在整个集群环境中唯一
server-id=2# 是否只读,1 代表只读,0代表读写,从数据库仅读,设置1
read-only=0

总结

本文介绍了MySQL主从结构搭建的过程,参考B站视频:

  • 黑马MySQL数据库进阶教程,轻松掌握mysql主从复制从原理到搭建全流程

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

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

相关文章

Pytest精通指南(28)钩子函数-测试报告(pytest-html)

文章目录 前言应用场景插件安装参数分析使用方法拓展-定制化报告 前言 在软件开发过程中,测试是确保代码质量的关键环节。 而测试报告则是测试过程中不可或缺的输出物,它为我们提供了关于测试用例执行情况的详细信息,帮助我们快速定位和解决问…

二叉树的先序、中序和后序遍历,以及二叉树的高度

1、二叉树的三种遍历方式 前序遍历: 访问根节点前序遍历左子树前序遍历右子树示例:对于节点 A(左子树为 B,右子树为 C),遍历顺序为 A -> B -> C。 中序遍历: 中序遍历左子树访问根节点中…

23年新算法,SAO-SVM,基于SAO雪消融算法优化SVM支持向量机回归预测(多输入单输出)-附代码

SAO-SVM是一种基于SAO雪消融算法优化的支持向量机(SVM)回归预测方法,适用于多输入单输出的情况。下面是一个简要的概述,包括如何使用SAO-SVM进行回归预测的步骤: 步骤: 1. 数据准备: 收集并准…

计算机服务器中了devicdata勒索病毒怎么处理,devicdata勒索病毒解密工具流程

随着网络技术的不断发展与应用,越来越多的企业离不开网络,通过网络可以开展各项工作业务,网络也为企业的生产运营提供各类极大便利,大大提高了生产效率,但网络在为企业提供便利的同时,也为企业的数据安全带…

机器学习中常见的数据分析,处理方式(以泰坦尼克号为例)

数据分析 读取数据查看数据各个参数信息查看有无空值如何填充空值一些特殊字段如何处理读取数据查看数据中的参数信息实操具体问题具体分析年龄问题 重新划分数据集如何删除含有空白值的行根据条件删除一些行查看特征和标签的相关性 读取数据 查看数据各个参数信息 查看有无空…

青否交互式数字人核心技术是什么?

交互式数字人核心技术 : (1)形象克隆 拍摄真人出镜,正视镜头说话的5-8分钟绿幕视频,即可复刻出口型、动作、神态等1:1的数字人形象,行业高精度中文唇形驱动技术,性能优势与性价比处于全国领先水平。 &#…

Photoshop 2024 25.4蓝猫版_支持参数滤波器和Ai神经滤镜

网盘下载 Photoshop 2024 (Beta) 蓝猫版v25.4.0(2426)全新功能:支持参数滤波器和AI神经滤镜。 最新的PS 25.4 Beta版新增了参数滤波器(Parametric Filters)功能,而正式版的PS 2024还没有这个功能,只有Beta版才有&…

WebSocket的原理、作用、API、常见注解和生命周期的简单介绍,附带SpringBoot示例

文章目录 原理作用客户端 API服务端 API生命周期常见注解SpringBoot示例 WebSocket是一种 通信协议 ,它在 客户端和服务器之间建立了一个双向通信的网络连接 。WebSocket是一种基于TCP连接上进行 全双工通信 的 协议 。 WebSocket允许客户端和服务器在 单个TCP连接上…

【性能测试】ChaosTesting(混沌测试)ChaosBlade(混沌实验工具)(五)-jvm混沌实验

6. chaosblade-jvm实验场景 6.1 挂载 java agent blade prepare jvm 6.1.1 介绍 挂载 java agent,执行 java 实验场景必要步骤 6.1.2 参数 -j, --javaHome string: 指定 JAVA_HOME 路径,用于指定 java bin 和 tools.jar,如果…

科技赋能无人零售

科技赋能无人零售,使其具备以下独特优势: 1. 全天候无缝服务 :无人零售店依托科技,实现24小时不间断运营,不受人力限制,满足消费者随时购物需求,尤其惠及夜间工作者、夜猫子及急需购物者&…

TCP三次握手详解

目录 什么是TCP TCP头格式组成 三次握手 第一次握手 第二次握手 第三次握手 三次握手的好处 为什么需要三次握手? 什么是TCP 传输控制协议(TCP)是Internet一个重要的传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。 面向连接: 应用…

电磁仿真--基本操作-CST-(2)

目录 1. 回顾基操 2. 操作流程 2.1 创建工程 2.2 修改单位 2.3 创建 Shape 2.4 使用拉伸 Extrude 2.5 修改形状 Modify Locally 2.6 导入材料 2.7 材料解释 2.8 材料分配 2.9 查看已分配的材料 2.10 设置频率、背景和边界 2.11 选择 Edge,设置端口 2.…