【数据库集群】之一主一从

目录

  • 一、mysql集群概念
  • 二、mysql集群环境配置实验
    • 1、全新的服务器安装全新的数据库(可以在vm中克隆比较快,克隆的服务器要没有安装好数据库,实验环境:mysql80)
    • 2、配置域名解析
    • 3、一主一从服务器的配置:
      • 一、主服务器的配置:
      • 二、从服务器的配置:
    • 4、一主一从服务器的配置(自动协商二进制数据的位置)

一、mysql集群概念

集群架构设计的三个维度:可用性、扩展性、一致性
所谓mysql集群就是把多台数据库集成在一起提供数据库服务。
集群的目的:
负载均衡:解决高并发
高可用HA:服务可用性
远程备灾:数据有效性

对于数据库之上的业务层来说,基于 MySQL 的主从复制集群,单点写入 Master ,在 event 同步到 Slave 后,读逻辑可以从任何一个 Slave 读取数据,以读写分离的方式,大大降低 Master 的运行负载,同时提升了 Slave 的资源利用。

二、mysql集群环境配置实验

1、全新的服务器安装全新的数据库(可以在vm中克隆比较快,克隆的服务器要没有安装好数据库,实验环境:mysql80)

yum install mysql-community-server --downloadonly
find / -iname “mysql” 查找在哪个位置,在/var/cache/dnf/下

解释:从mysql官网下载rpm,yum下载,为了节约时间,可以只下载先不安装,然后把下载的安装包传到其他服务器去安装下一台数据库。

出现这些软件包
[root@localhost packages]# ll
total 59700
-rw-r--r--. 1 root root  3669387 Dec 17 01:27 mysql-community-client-8.0.35-1.el9.x86_64.rpm
-rw-r--r--. 1 root root  1429852 Dec 17 01:27 mysql-community-client-plugins-8.0.35-1.el9.x86_64.rpm
-rw-r--r--. 1 root root   570718 Dec 17 01:27 mysql-community-common-8.0.35-1.el9.x86_64.rpm
-rw-r--r--. 1 root root  2381873 Dec 17 01:28 mysql-community-icu-data-files-8.0.35-1.el9.x86_64.rpm
-rw-r--r--. 1 root root  1518324 Dec 17 01:28 mysql-community-libs-8.0.35-1.el9.x86_64.rpm
-rw-r--r--. 1 root root 51552173 Dec 17 01:29 mysql-community-server-8.0.35-1.el9.x86_64.rpm
[root@localhost packages]# pwd
/var/cache/dnf/mysql80-community-22d3d3ecd3d92106/packages

[root@localhost packages]# scp ./* root@192.168.85.134:~/

传到对方服务器去安装

[root@localhost packages]# yum install *.rpm 安装mysql

自此两台数据库安装完成。

2、配置域名解析

[root@localhost ~]# vim /etc/hosts
192.168.85.133 master
192.168.85.134 slave
[root@localhost ~]# scp /etc/hosts 192.168.85.134:/etc/hosts

3、一主一从服务器的配置:

一、主服务器的配置:

给主服务器创建库表,插入一点数据。

mysql> create database master;
mysql> create table master.master_table(-> name varchar(10));
mysql> insert into master.master_table values("111");

主服务器开启二进制日志并设置好id,后来用来在集群中区分数据库。

[root@localhost ~]# vim /etc/my.cnf
log_bin
server-id=1
[root@localhost ~]# systemctl restart mysqld

创建复制用户(从服务器要想从主服务器去拷贝数据是需要身份的):

mysql> create user ‘rep’@‘192.168.85.%’ identified by ‘Liang@123’;
mysql> grant replication slave,replication client on . to
‘rep’@‘192.168.85.%’;

备份Master数据库中的数据:

[root@localhost ~]# mysqldump -uroot -pLiang@123 --all-databases --single-transaction --source-data=2 --flush-logs > date +%F-mysql-all.sql
在这个备份的过程会产生新的数据,去模拟一下插入数据,,后面用日志备份。

二、从服务器的配置:

注意:关闭防火墙和selinux
在从服务器测试是否能连接到主服务器的数据库:

[root@localhost ~]# mysql -urep -pLiang@123 -h master
成功

设置数据库序号,在集群中区分数据库

[root@localhost ~]# vim /etc/my.cnf
log_bin
server-id=2
[root@localhost ~]# systemctl restart mysqld

手动同步数据:

mysql>set sql_log_bin=0 设置临时二进制文件不启用

mysql> source /root/2023-12-17-mysql-all.sql; 还原数据库在集群开始之前的数据

开始设置主服务:

mysql> change master to
master_host=‘master’,master_user=‘rep’,master_password=‘Liang@123’,master_log_file=‘localhost-bin.000003’,master_log_pos=157;

这条命令配置好后,从服务器就会主动向主服务器去拷贝新数据。

启动从设备:
mysql> start slave;

这个时候这个实验算是完成了,主服务的数据一旦发生改变,从服务器的数据库也会更着更新😁

查看启动状态:
mysql> show slave status\G;

     Slave_IO_Running: YesSlave_SQL_Running: Yes都是yes就非常欧克。

4、一主一从服务器的配置(自动协商二进制数据的位置)

这种不需要手动去指定从服务器学习新增主服务器的二进制数据位置,而是自动协商。
跟上面的实验差不多。
区别就是:
主从服务器都需要启动二进制日志,服务器ID,GTID

vim /etc/my.cnf
log_bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1
从服务器也是一样,只是修改哈server-id就行

然后在从服务器中修改这个
mysql> change master to
master_host='master',master_user='rep',master_password='Liang@123',master_auto_position=1;

mysql> start slave;
这个实验就完成了,跟上个实验差不多。

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

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

相关文章

算法训练营Day39

#Java #动态规划 Feeling and experiences&#xff1a; 爬楼梯&#xff08;进阶版&#xff09;&#xff1a;卡码网题目链接 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; …

Innosetup 读写注册表,读写INI文件

一.innosetup读写注册表 1.注册表读写字符串 (RegQueryStringValue&#xff0c;RegWriteStringValue) RegQueryStringValue(HKEY_CURRENT_USER, SOFTWARE\SODA, appversion, appversion) RegWriteStringValue(HKEY_CURRENT_USER, SOFTWARE\SODA, appversion, s…

MySQL之多表连接查询、AS别名、扩展内容(information_schema的基本应用)

文章目录 前言一、引入多表连接查询二、多表连接查询案例1.准备对应的库表2.案例 三、AS别名用法示例 四、扩展内容1、information_schema的基本应用2、创建视图示例3、information_schema.tables视图的应用3.1、示例 五、show命令总结总结 前言 第三章内容主要描述了mysql使用…

InternLM第4次课笔记

XTuner 大模型单卡低成本微调实战 1 Finetune介绍 2 XTuner介绍 XTuner中微调的技术&#xff1a; 3 8GB显卡玩转LLM 4 动手实战环节 https://github.com/InternLM/tutorial/tree/main/xtuner

@RequestBody 注解内置的 HttpMessageConverter 实现类来解析请求体

在 Spring MVC 中&#xff0c;RequestBody 注解默认使用内置的 HttpMessageConverter 实现类来解析请求体&#xff0c;并尝试将其转换为方法参数所需的对象类型。如果需要指定解析的数据类型&#xff0c;可以通过在方法参数上添加更具体的注解来实现。 以下是一些常见的用于指…

第九部分 使用函数 (一)

目录 一、简介 二、函数的调用语法 一、简介 在 Makefile 中可以使用函数来处理变量&#xff0c;从而让我们的命令或是规则更为的灵活和具 有智能。make 所支持的函数也不算很多&#xff0c;不过已经足够我们的操作了。函数调用后&#xff0c;函数 的返回值可以当做变量来使用…

YOLOv8 Ultralytics:使用Ultralytics框架进行FastSAM图像分割

YOLOv8 Ultralytics&#xff1a;使用Ultralytics框架进行FastSAM图像分割 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行FastSAM图像分割参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容…

力扣(leetcode)第696题计数二进制字串(Python)

696.计数二进制字串 题目链接&#xff1a;696.计数二进制字串 给定一个字符串 s&#xff0c;统计并返回具有相同数量 0 和 1 的非空&#xff08;连续&#xff09;子字符串的数量&#xff0c;并且这些子字符串中的所有 0 和所有 1 都是成组连续的。 重复出现&#xff08;不同…

uniCloud 云数据库(1)

目录 1&#xff1a;云数据库入门,基本概念了解 1.1 云数据库是关系型还是Nosql? 1.2 uniCloud 云数据库和关系型数据库的对比 1.3 官方文档传送门 2: 基本操作表 创建 在uniCloud web控制台 进行创建 数据表的3个组成部分 通过传统方式操作数据库 获取集合的引用 集…

【Cocotb】cocotbext-axi拓展库

用于Cocotb的AXI接口模块&#xff0c;GitHub仓库: https://github.com/alexforencich/cocotbext-axi 介绍 AXI、AXI lite和AXIStream仿真模型 安装 从pip安装&#xff08;发布版本&#xff0c;稳定&#xff09;&#xff1a; $ pip install cocotbext-axi从git安装&#xf…

企业异地访问办公系统:对比运营商MPLS专线,内网穿透有何优势?

为了实现连锁门店、企业内部各地分支机构ERP、OA、远程监控、自建邮件服务器、智能网络设备等数据传输、互访&#xff0c;使用运营商专线或是采用内网穿透方案&#xff0c;彼此之间究竟有何区别呢&#xff1f; 简单来说&#xff0c;MPLS专线和普通宽带类似是运营商提供的网络租…

ruoyi后台管理系统部署-2-安装mysql

centos7 mysql 安装 1. 手动安装 安装 首先查看系统是否安装了&#xff1a; rpm -qa|grep mariadb rpm -qa | grep mysql systemctl status mysqld find / -name mysql.cnf卸载自带的 mariadb: rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps去官网下载 mysql 安装包&…

【数据结构与算法】之数组系列-20240113

这里写目录标题 一、66. 加一二、121. 买卖股票的最佳时机三、136. 只出现一次的数字四、268. 丢失的数字五、350. 两个数组的交集 II 一、66. 加一 简单 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&…

NVMe系统内存结构 - PRP与PRP List

NVMe系统内存结构 - PRP与PRP List 1 为什么需要PRP2 PRP3 PRP List4 PRP寻址算法4.1 仅PRP1指向数据4.2 PRP1指向数据&#xff0c;PRP2指向数据4.3 PRP1指向数据&#xff0c;PRP2指向PRP List 本文属于《 NVMe协议基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 为什么…

【C++】“Hello World!“

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 ​ 2024.1.14 纪念一下自己编写的第一个C程序 #include<iostream>int main() {/*我的第一个C程序*/std::cout << "Hello world!:>" <<std::endl;ret…

【开发板资料】Arduino NANO 资料分享(引脚分布图、原理图、亮灯程序等)

给出部分参考资料以及来源 引脚分布 PINOUT 来源&#xff1a;Nano | Arduino Documentation https://docs.arduino.cc/hardware/nano PINOUT PINOUT 来源&#xff1a;https://www.tumblr.com/pighixxx/42591353009/arduino-nano-pinout https://www.tumblr.com/pighixxx/…

在关系模式中,如何求所有候选码?

求所有候选码(键)&#xff1a; 根据函数依赖集F&#xff0c;找出L(只在左部传递)、R(只在右部传递)、LR(既出现在左边也出现在右边)找出候选码&#xff0c;候选码一般出现在L处&#xff0c;不可能出现在R处判断在L中找出的候选码是否是唯一候选码&#xff1a; 若L中找出的候选码…

Leetcode 3007. Maximum Number That Sum of the Prices Is Less Than or Equal to K

Leetcode 3007. Maximum Number That Sum of the Prices Is Less Than or Equal to K 1. 解题思路2. 代码实现 题目链接&#xff1a;3007. Maximum Number That Sum of the Prices Is Less Than or Equal to K 1. 解题思路 这一题我的思路上就是一个二分的思路&#xff0c;先…

C++深入学习之STL:1、容器部分

标准模板库STL的组成 主要由六大基本组件组成&#xff1a;容器、迭代器、算法、适配器、函数对象(仿函数)以及空间配置器。 容器&#xff1a;就是用来存数据的&#xff0c;也称为数据结构。 本文要详述的是容器主要如下&#xff1a; 序列式容器&#xff1a;vector、list 关联…