初识MySQL(三)之主从配置与读写分离实战

主重复制

主重复制原理

在这里插入图片描述

  • master开启二进制日志记录
  • slave开启IO进程,从master中读取二进制日志并写入slave的中继日志
  • slave开启SQL进程,从中继日志中读取二进制日志并进行重放
  • 最终,达到slave与master中数据一致的状态,我们称作为主从复制的过程。

基础环境准备

## 确保两台主机能够连接互联网并关闭防火墙和selinux
yum -y install mysql-server#两台主机安装mysql
timedatectl set-timezone Asia/Shanghai#同步时间
systemctl restart chronyd.service #重启同步服务

配置主服务器

hostnamectl set-hostname master
bash
vim /etc/my.cnf
##########以下是配置文件内容
[mysqld]
log-bin=mysql-bin
binlog_format="statement"
server-id=11
log-slave-updates=true
########################
systemctl restart mysqld
ls /var/lib/mysql/#查看是否启用binlog

在这里插入图片描述
在这里插入图片描述

#在主服务器上配置可访问用户,并查看master正在使用的日志文件及日志书写位置
mysql -uroot -p123456 #根据自己主机情况登录mysql
# 根据自生网段创建并授权用户,并修改密码加密插件为 mysql_native_password
create user slave@'192.168.25.%' identified by '123.com';
grant all on *.* to 'slave'@'192.168.25.%';
ALTER USER 'slave'@'192.168.25.%' IDENTIFIED WITH mysql_native_password BY '123.com';
flush privileges;
# 查看主服务器正在使用的日志文件及日志书写位置,查看后不可再对master做insert、update、delete、create、drop等操作!!!
show master status;

在这里插入图片描述

配置从服务器

hostnamectl set-hostname slave
bash
vim /etc/my.cnf
##########以下是追加到配置文件中的内容
relay-log-index=slave-bin.index
server-id=22
##########
systemctl restart mysqld#重启MySQL服务

在这里插入图片描述

mysql -uroot#登录mysql,注意笔者此主机无密码,复现需根据自身情况登录change master to master_host='192.168.25.51',master_user='slave',master_password='123.com',master_log_file='mysql-bin.000002',master_log_pos=1172;
start slave;
show slave status\G;

在这里插入图片描述

在这里插入图片描述

测试配置情况

#主服务器
create database testMS;
#从服务器
show databases;

在这里插入图片描述
在这里插入图片描述

读写分离

MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。

  • 官网:https://mariadb.com/kb/en/mariadb-enterprise/mariadb-maxscale-20/

在这里插入图片描述

环境说明与配置

数据库角色IP应用与系统版本
master192.168.25.51OpenEuler mysql-8.0.42
slave192.168.25.52OpenEuler mysql-8.0.42
slave2192.168.25.53OpenEuler mysql-8.0.42
maxscale192.168.25.100rocky linux9.4 maxscale-24.02.6
  • rocky9安装maxscale和mariadb
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bashyum -y install maxscaleyum -y install mariadb

在这里插入图片描述

配置maxscale

  • 在主库配置授权用户
mysql -uroot -p123456
create user maxscale@'%' identified by 'maxscale';
## 必须更新密码组件 否则不能连接
ALTER USER 'maxscale'@'%' IDENTIFIED WITH mysql_native_password BY 'maxscale';
grant select on *.* to maxscale@'%';
grant show databases on *.* to maxscale@'%';
create user admin@'192.168.25.%' identified by 'admin';
## 必须更新密码组件 否则不能连接
ALTER USER admin@'192.168.25.%' IDENTIFIED WITH mysql_native_password BY 'admin';
GRANT CREATE, SELECT, INSERT, UPDATE, DELETE ON *.* TO 'admin'@'192.168.25.%';
create user monitor@'%' identified by 'monitor';
## 必须更新密码组件 否则不能连接
ALTER USER monitor@'%' IDENTIFIED WITH mysql_native_password BY 'monitor';
grant replication client on *.* to monitor@'%';
grant replication slave on *.* to monitor@'%';
grant super,reload on *.* to monitor@'%';
flush privileges;

在这里插入图片描述

在这里插入图片描述

  • 在maxscale上测试连接
mariadb -u admin -padmin -h 192.168.25.51 -P 3306 --skip-ssl

在这里插入图片描述

  • 修改maxscale配置文件
# /etc/maxscale.cnf
[maxscale]
threads=auto[server1]
type=server
address=192.168.25.51
port=3306protocol=MySQLBackend
[server2]
type=server
address=192.168.25.52
port=3306
protocol=MySQLBackend[server3]
type=server
address=192.168.25.53
port=3306
protocol=MySQLBackend[MariaDB-Monitor]
type=monitor
module=mariadbmon
servers=server1,server2,server3
user=monitor
password=monitor
monitor_interval=2s[Read-Write-Service]
type=service
router=readwritesplit
servers=server1,server2,server3
user=maxscale
password=maxscale
version_string=8.0[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=mariadbprotocol
port=3306
  • 启动maxscale并查看提供服务
systemctl start maxscale
maxctrl list services
maxctrl list servers

在这里插入图片描述

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

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

相关文章

RabbitMQ面试精讲 Day 2:RabbitMQ工作模型与消息流转

【RabbitMQ面试精讲 Day 2】RabbitMQ工作模型与消息流转 开篇 欢迎来到"RabbitMQ面试精讲"系列的第2天,今天我们将深入探讨RabbitMQ的工作模型与消息流转机制。这是面试中最常被问到的核心知识点之一,90%的RabbitMQ面试都会涉及消息流转流程…

基于SpringBoot3集成Kafka集群

1. build.gradle依赖引入 implementation org.springframework.kafka:spring-kafka:3.2.02. 新增kafka-log.yml文件 在resource/config下面新增kafka-log.yml,配置主题与消费者组 # Kafka消费者群组 kafka:consumer:group:log-data: log-data-grouptopic:log-data: …

wpf Canvas 导出图片

在WPF中将Canvas导出为图片主要涉及以下关键步骤和注意事项: ‌核心实现方法‌使用RenderTargetBitmap将Canvas渲染为位图,再通过PngBitmapEncoder保存为PNG文件。需注意临时移除Canvas的布局变换(LayoutTransform)以避免渲染异常‌1。示例代码片段:CanvasExporter.cs pu…

lvs负载均衡实操模拟

目录 一、配置准备 二、NET模式 修改LVS端 开启路由 修改对内网卡 ens160 修改对外网卡 ens224 加载网卡配置文件 修改web1端 修改网卡信息 重启网络 检测 配置web2 检测 验证配置是否正常 启动nginx服务 验证以上配置 添加lvs规则 验证 三、DR模式 修改…

Spring Boot 是如何简化 IoC 的配置的?

首先Spring Boot 并没有发明新的 IoC 理论,它做的也不是替换掉 Spring IoC 容器。相反,Spring Boot 是 Spring IoC 思想的实践者和简化者。它通过**“约定优于配置”(Convention over Configuration)**的理念,将原本繁…

Go语言中的组合式接口设计模式

文章目录Go语言中的组合式接口设计模式背景和需求组合式接口设计Go语言中的组合式接口设计模式 背景和需求 在微服务架构和复杂业务系统中,我们经常需要调用多个外部服务或内部模块。传统的做法是将所有方法都放在一个大接口中,但这种设计会导致接口臃…

React - createPortal

什么是createPortal&#xff1f;注意这是一个API&#xff0c;不是组件&#xff0c;他的作用是&#xff1a;将一个组件渲染到DOM的任意位置&#xff0c;跟Vue的Teleport组件类似。用法 import { createPortal } from react-dom;const App () > {return createPortal(<div…

Cursor的使用

Cursor的使用 Ctrl L 打开历史对话记录 Tab智能助手 1.单行/多行补全 已有代码片段&#xff1a; //需求&#xff1a;写一个工具类计算数组平均值 public class ArrayUtils {//按tab会完成补全 }按tab键- Cursor 自动生成代码: //需求&#xff1a;写一个工具类计算数组平均值 p…

17.使用DenseNet网络进行Fashion-Mnist分类

17.1 DenseNet网络结构设计import torch from torch import nn from torchsummary import summary #卷积层 def conv_block(input_channels,num_channels):netnn.Sequential(nn.BatchNorm2d(input_channels),nn.ReLU(),nn.Conv2d(input_channels,num_channels,kernel_size3,pad…

网安系列【16】之Weblogic和jboss漏洞

文章目录一 Weblogic1.1 Weblogic相关漏洞1.2 Weblogic漏洞发现1.3 Weblogic漏洞利用二 Jboss2.1 Jboss漏洞2.2 Jboss识别与漏洞利用一 Weblogic WebLogic 是由 Oracle公司 开发的一款基于Java EE&#xff08;现称Jakarta EE&#xff09;的企业级应用服务器&#xff0c;主要用…

Unity URP + XR 自定义 Skybox 在真机变黑问题全解析与解决方案(支持 Pico、Quest 等一体机)

在使用 Unity 的 URP 渲染管线开发 XR 应用&#xff08;如 Pico Neo、Pico 4、Quest 2/3 等一体机&#xff09;时&#xff0c;很多开发者遇到一个奇怪的问题&#xff1a;打包后&#xff0c;Skybox&#xff08;天空盒&#xff09;在某些角度下突然变黑&#xff0c;只在转动头部后…

Cursor、飞算JavaAI、GitHub Copilot、Gemini CLI 等热门 AI 开发工具合集

Cursor&#xff1a;代码编写的智能伙伴​Cursor 是 Anysphere 公司推出的一款 AI 编程工具&#xff0c;它基于微软开源代码编辑器 VS Code 开发&#xff0c;将 AI 技术深度整合到开发人员的工作流程中。Cursor 的功能十分强大&#xff0c;不仅能够自动用纯英文编写代码&#xf…

如何安装历史版本或指定版本的 git

背景 有的时候&#xff0c;我们需要安装指定版本的git&#xff0c;或者希望旧一点的&#xff0c;毕竟我就遇到最新的2.50.1在win10安装后打开就一闪而过&#xff0c;而安装2.49.1就不会 下载 官网可能比较难找&#xff0c;但是这个github仓库&#xff1a;https://github.com/gi…

LaCo: Large Language Model Pruning via Layer Collapse

发表&#xff1a;EMNLP_FINDING_2024 机构&#xff1a;Shanghai Jiao Tong University 连接&#xff1a;LaCo: Large Language Model Pruning via Layer Collapse - ACL Anthology 代码&#xff1a;https://github.com/yangyifei729/LaCo Abstract 基于 Transformer 的大语…

服务器内核级故障排查

目录 **检查内核级故障(Oops/Panic)的具体操作步骤****1. 查看完整 `dmesg` 日志(含时间戳)****2. 过滤关键错误信息****3. 检查系统日志中的内核消息****4. 分析最近一次启动的日志****5. 检查是否有 `vmcore` 转储文件****常见内核错误示例及含义**补充说明:检查内核级故…

Flink学习笔记:整体架构

开一个新坑&#xff0c;系统性的学习下 Flink&#xff0c;计划从整体架构到核心概念再到调优方法&#xff0c;最后是相关源码的阅读。 今天就来学习 Flink 整体架构&#xff0c;我们先看官网的架构图图中包含三部分&#xff0c;分别是 Client、JobManager 和 TaskManager。其中…

【LeetCode 热题 100】105. 从前序与中序遍历序列构造二叉树——(解法二)O(n)

Problem: 105. 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 【LeetCode 热题 100】105. 从前序与中序遍历序列构…

完美卸载 Ubuntu 双系统:从规划到实施的完整指南

&#x1f4d6; 前言 最近成功完成了一次 Ubuntu 双系统的完整卸载&#xff0c;从最初的分区删除到最终解决 GRUB 引导问题&#xff0c;整个过程虽然有些曲折&#xff0c;但最终完美解决。本文将详细分享整个卸载过程&#xff0c;希望能帮助到有类似需求的朋友。 &#x1f3af…

深入理解oracle ADG和RAC

1. 引言 本节详细介绍oracle ADG和RAC。当然这里讲得的详细是相对理论的深入&#xff0c;不涉及到实验&#xff0c;比如ADG和RAC的搭建及调优等。 RAC (Real Application Clusters) 和 ADG (Active Data Guard)是Oracle 的两大核心高可用和灾备技术。它们是 Oracle 数据库高可用…

网络安全实践:从环境搭建到漏洞复现

要求&#xff1a;1.搭建docker2.使用小皮面板搭建pikachu靶场3.使用BP的爆破模块破解pikachu的登陆密码步骤4.Kail的msf复现永恒之蓝一.搭建docker1. Docker介绍Docker 是容器&#xff0c;可以部分完全封闭。封闭意味&#xff1a;一个物质&#xff08;放到容器&#xff09;&…