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.mzph.cn/diannao/2696.shtml

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

相关文章

TIMEDAY·腾讯智慧出行技术开放日:发布汽车行业大模型、升级智能汽车云

4月24日,北京车展前夕,在“2024 TIME DAY腾讯智慧出行技术开放日”上,腾讯发布了汽车行业大模型“全域智能”方案,覆盖汽车研发、生产、营销、服务、企业协同等五大核心场景。与此同时,腾讯发布了在智能汽车云、智能座…

C++中的程序流程结构

一、选择结构 1.1 if语句 作用&#xff1a;执行满足条件的语句 if语句的三种形式 单行格式if语句多行格式if语句多条件的if语句 #include <iostream> using namespace std;int main(){//选择结构 单行if语句//用户输入分数&#xff0c;如果分数>600,视为考上一本大…

【SpringBoot实战篇】获取用户详细信息-ThreadLocal优化

1 分析问题 对token的解析当初在拦截器中已经写过。期待的是在拦截器里写了&#xff0c;在其他地方就不写了&#xff0c;应该去复用拦截器里面得到的结果 2 解决方式-ThreadLocal 2.1提供线程局部变量 用来存取数据: set()/get()使用ThreadLocal存储的数据, 线程安全 2.2过程图…

OneFlow新概念清单,AI深度学习的革命性突破(AI写作)

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

路由过滤与引入

1、实验拓扑 2、实验要求 1、按照图示配置 IP 地址&#xff0c;R1&#xff0c;R3&#xff0c;R4 上使用 1oopback口模拟业务网段 2、运行 oSPF&#xff0c;各自协议内部互通 3、R1 和 R2 运行 RIPv2,R2&#xff0c;R3和R4在 RIP 和 oSPF 间配置双向路由引入,要求除 R4 上的业务…

mPEG-Cyanur,Methoxy PEG Cyanur具有良好的生物相容性

【试剂详情】 英文名称 mPEG-Cyan&#xff0c;mPEG-Cyanur&#xff0c;Methoxy PEG Cyanur&#xff0c;Methoxy PEG Cyan 中文名称 聚乙二醇单甲醚三聚氯氰&#xff0c;甲氧基-聚乙二醇-氰尿酸 外观性状 由分子量决定&#xff0c;固体或者粘稠液体。 分子量 0.4k&#x…

自己写的爬虫小案例

网址&#xff1a;aHR0cDovL2pzc2NqZ3B0Lmp4d3JkLmdvdi5jbi8/dXJsPS92aWV3L3dvcmtpbmdVbml0L3dvcmtpbmdVbml0Lmh0bWw 这串代码能够爬取勘察单位企业的详细信息。 import requests import time import csv f open(勘察单位公司信息.csv,w,encodingutf-8,newline) csv_writer …

从阿里云OSS迁移到AWS S3的步骤

随着企业数字化转型的加速,云计算成为企业IT基础设施不可或缺的部分。对象存储作为云计算的重要组成部分,为企业提供了可靠、安全、低成本的数据存储和管理解决方案。在选择对象存储服务时,企业需要根据自身需求和发展战略来进行全面评估。我们九河云&#xff0c;获得AWS官方认…

探索C++20高级编程:新特性、技巧与性能优化

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

mPEG-Biotin,Methoxy PEG Biotin在免疫亲和层析、荧光标记和生物传感器等领域发挥关键作用

【试剂详情】 英文名称 mPEG-Biotin&#xff0c;Methoxy PEG Biotin 中文名称 聚乙二醇单甲醚生物素&#xff0c;甲氧基-聚乙二醇-生物素 外观性状 由分子量决定&#xff0c;固体或者粘稠液体。 分子量 0.4k&#xff0c;0.6k&#xff0c;1k&#xff0c;2k&#xff0c;3.…

什么因素可以影响到代理IP稳定性?爬虫代理IP有哪些作用?

一、什么因素可以影响到代理IP稳定性 代理IP的稳定性受到多种因素的影响&#xff0c;以下是一些主要的因素&#xff1a; 代理IP的质量&#xff1a;不同的代理IP提供商提供的代理IP质量参差不齐&#xff0c;一些低质量的代理IP可能经常出现连接问题或速度慢的情况&#xff0c;…

力扣HOT100 - 104. 二叉树的最大深度

解题思路&#xff1a; class Solution {public int maxDepth(TreeNode root) {if (root null) return 0;return Math.max(maxDepth(root.left), maxDepth(root.right)) 1;} }

利用OpenCV4.9制作自己的线性滤波器!

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9使用 inRange 的阈值操作 下一篇 :OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 f…

爬虫零基础学习,第一天,安装环境,requests库常用命令的讲解

Python爬虫 爬虫学习思路 URL内容获取&#xff0c;requests的基本常用语法 import requests # 先向目标网站发送请求 url "http://www.baidu.com" r requests.get(url) # 可以用看一下访问码返回值是不是200&#xff0c;若是200则表示访问成功 print(r.status_…

RustGUI学习(iced)之小部件(一):如何使用按钮和文本标签部件

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

前端CSS基础8(盒子模型(margin、border、padding、content))

前端CSS基础8&#xff08;盒子模型&#xff08;margin、border、padding、content&#xff09;&#xff09; CSS盒子模型CSS中常用的长度单位元素的分类&#xff0c;各个元素的显示模式修改元素的显示模式&#xff08;类型&#xff09;盒子模型的组成部分盒子内容区-contentCSS…

关于分布式锁的释放和spring事务提交时机不符合预期从而带来的数据不一致的问题

提要 首先注意&#xff0c;本文探讨的不是分布式事务&#xff0c;请读者注意区分&#xff01; 在我们的日常开发种&#xff0c;分布式锁和spring事务是常见的两种控制数据一致性的方式。 分布式锁和spring事务各自的作用就不做阐述了&#xff0c;不是本文重点&#xff0c;本文…

AIGC技术的发展现状与未来趋势

AIGC&#xff08;人工智能生成内容&#xff09;技术是近年来快速发展的领域之一&#xff0c;它涉及使用人工智能来创建或编辑内容&#xff0c;包括文本、图像、音乐和视频等。这项技术的进步为各个行业带来了革命性的变化&#xff0c;同时也引发了一系列伦理和风险问题。 一、技…

宜搜科技死磕港交所上市:从搜索引擎到广告投放,业绩疲态凸显

近日&#xff0c;宜搜科技控股有限公司&#xff08;下称“宜搜科技”&#xff09;向港交所递交招股书&#xff0c;计划在香港主板上市&#xff0c;中银国际为其独家保荐人。 值得注意的是&#xff0c;宜搜科技已在资本市场辗转多年。该公司曾于2014年向纽交所递交上市申请&…

CentOS7编译jsoncpp静态库

1. 官网下载源码 github地址&#xff1a;GitHub - open-source-parsers/jsoncpp at update 2. 编译 Unzip jsoncpp-master.zip Cd jsoncpp-master mkdir -p ./build/debug cd ./build/debug/ cmake -DCMAKE_BUILD_TYPEdebug -DBUILD_SHARED_LIBSOFF -DCMAKE_ARCHIVE_OUTPUT_D…