MySQL主从结构搭建

news2024/11/16 20:22:29

说明:本文介绍如何搭建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_password

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-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_password

port = 3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-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.coloradmin.cn/o/1620055.html

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

相关文章

javaScript中的作用域和作用域链

作用域(Scope) 什么是作用域 作用域是在运行时代码中的某些特定部分中变量、对象和函数的可访问性。 换句话说,作用域决定了代码区块中变量和其他资源的可见性。 示例: function outFun2() {var inVariable "内层变量2…

通过本机端口映射VMware中虚拟机应用(例如同一局域网别人想远程连接你虚拟机中的数据库)

需要 虚拟机中安装一下达梦数据库,并且以后大家都连接你虚拟机中达梦数据库进行开发。。。。。。在不改动自己虚拟机配置,以及本地网卡任何配置的情况下如何解决?本虚拟机网络一直使用的NAT模式。 解决 找到NAT设置添加端口转发即可解决。…

springboot+springsecurity+vue前后端分离权限管理系统

有任何问题联系本人QQ: 1205326040 1.介绍 优秀的权限管理系统,核心功能已经实现,采用springbootvue前后端分离开发,springsecurity实现权限控制,实现按钮级的权限管理,非常适合作为基础框架进行项目开发。 2.效果图…

AI创作系统Pro版,付费及流量主小程序源码搭建,抖音小程序项目分享,ai系统搭建运营。

AI技术可以激发新的创新思维和方法,在许多领域都能发挥重要作用。今天我们来讲述以下这款ai工具的作用以及可以延伸出什么互联网项目。 一、AI创作系统Pro系统功能 这款系统有AI写真,绘画,动 漫,音 乐,换 脸&#xf…

DSP 应用领域及内部结构

随着 DSP 性能的改善和成本的降低,DSP 在通用数字信号算法处理的基础上,其应用几乎遍及电子学每个领域。 (1)通信:网络通信,高速调制解调器,编/解码器,自适应均衡器,移动…

MES(生产管理系统)开发岗人才定向培养来啦

定向就业培养,职等你来 《中国制造2025》,是我国实施制造强国战略第一个十年的行动纲领,按照“四个全面”战略布局要求,实施制造强国战略,加强 统筹规划和前瞻部署。围绕重点行业转型升级和新一代信息技术、智能制造、…

小程序APP屏幕悬浮按钮可拖动可展开

示例&#xff1a; 插件地址&#xff1a;suspensionButton 悬浮按钮 - DCloud 插件市场 使用方式&#xff1a; import pxSuspenButton from /components/px-suspen-button/index components: { pxSuspenButton }, <pxSuspenButton :centerIcon"centerIcon" :bgCo…

【VSCode调试技巧】Pytorch分布式训练调试

最近遇到个头疼的问题&#xff0c;对于单机多卡的训练脚本&#xff0c;不知道如何使用VSCode进行Debug。 解决方案&#xff1a; 1、找到控制分布式训练的启动脚本&#xff0c;在自己的虚拟环境的/lib/python3.9/site-packages/torch/distributed/launch.py中 2、配置launch.…

【GitHub】2FA认证(双重身份验证)

GitHub 2FA认证&#xff08;双重身份验证&#xff09; 写在最前面一、使用 TOTP 应用程序配置双2FA&#xff08;双因素身份验证&#xff09;1. 介绍2. github3. 认证 官网介绍小结 & 补充 &#xff1a;权限不足or验证码错误问题 &#x1f308;你好呀&#xff01;我是 是Yu欸…

【DVadmin教程】新增一个app并且创建一个curd模型

下载dvadmin 在gitee上搜索 django-vue-admin 别选错了&#xff0c;选择那个星最多的 gitee上会推荐移步 django-vue3-admin 别上当&#xff0c;用那个会踩坑&#xff0c;此教程就不适用了&#xff1b; 运行后端 后端 创建APP python manage.py startapp rules调整位置 为了…

【Linux】详解信号的分类如何自定义信号的作用

一、信号的定义 Linux系统提供的让用户(进程)给其他进程发送异步信息的一种方式。在操作系统中&#xff0c;信号是一种进程间通讯的有限制的方式&#xff0c;主要用于提醒进程某个事件已经发生。信号在Unix、类Unix以及其他POSIX兼容的操作系统中广泛应用。它作为一种异步的通知…

Ubuntu系统开机长

Ubuntu系统开机长 1. 检查开机自启动软件的所占时间2. 将耗时最高的禁止开机自启动 1. 检查开机自启动软件的所占时间 systemd-analyze blame2. 将耗时最高的禁止开机自启动 sudo systemctl disable networking.service这个耗时是有阈值的&#xff0c;一般大于15s的算&#x…

增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM,Python代码)

1.效果视频&#xff1a;增加PyQt5界面的交通流量预测&#xff08;模型为CNN_GRU&#xff0c;CNN_BiGRU_ATTENTION&#xff0c;LSTM&#xff09;_哔哩哔哩_bilibili&#xff09; 2.三个模型和数据集的介绍 交通流量预测(python代码&#xff0c;压缩包中带有数据&#xff0c;CN…

基于pytorch hook机制,生成一次前后向的timeline

基于pytorch hook机制,生成一次前后向的timeline 一.效果图二.代码三.运行以上代码,生成timeline.json,打开https://ui.perfetto.dev/,导入该文件,可看到以上效果 本文通过pytorch hook机制,拦截所有子module的forward和backward,统计执行时间及内存使用情况 一.效果图 二.代码…

探索Sun-Panel:一站式服务器、NAS导航面板、Homepage、浏览器首页

随着数字化时代的持续演进&#xff0c;尤其是对于开发者而言&#xff0c;我们与浏览器的互动频率越来越高。尽管浏览器提供了书签功能&#xff0c;但总有一种感觉&#xff0c;似乎书签并不能完全满足我们的需求。我们期待着一个能够满足我们需求的可私有化部署的浏览器导航页。…

vue实现水平排列且水平居中

样式实现 .body{text-align: center; } .body_content{display: inline-block; } .body_content_cardList{display: flex;flex-wrap: wrap;text-align: center; }<div class"body"><div class"body_content"><div class"body_content…

OpenAI内部最受欢迎的10个GPTs推荐!建议收藏!

前面文章介绍了如何创建自己的GPTs&#xff0c;但是在应用商店里还有很多各种GPTs可以供我们使用&#xff0c;满足我们的各种应用场景。这就像手机的应用商店一样&#xff0c;我们除了可以自己编写应用程序之外&#xff0c;还可以使用使用应用商店里海量应用。有关创建自己的自…

Spring三级缓存源码解析

Spring三级缓存 前置知识三级缓存定义SpringBean生命周期 Bean的初始化getSingleton 分析加入一级缓存 CreateBean过程(A)A填充属性BB填充属性A,执行getSingleton&#xff08;A&#xff09;B完成初始化 前置知识 三级缓存定义 public class DefaultSingletonBeanRegistry ext…

nginx配置挂载html

目标 很多软件的官方文档&#xff0c;在国内打开很慢&#xff0c;每次都得等很久&#xff0c;看到官方同时提供了html的包&#xff0c;所以想着挂载到本地nginx下&#xff0c;查看会方便很多。 下载官方html文档包&#xff0c;解压到documentation_htmls下 想添加新的文档也是…