搭建高性能数据库集群之一:主从复制

news2024/11/24 9:35:47

一、概述

1. 数据库主从概念、优点、用途
  主从数据库是什么意思呢,主是主库的意思,从是从库的意思。数据库主库对外提供读写的操作,从库对外提供读的操作。
在这里插入图片描述
数据库为什么需要主从架构呢?
  高可用,实时灾备,用于故障切换。比如主库挂了,可以切从库。读写分离,提供查询服务,减少主库压力,提升性能备份数据,避免影响业务。
  
2. 数据库主从复制原理
主从复制原理,简言之,分三步曲进行:
①主数据库有个 binlog 二进制文件,记录了所有增删改 SQL 语句;
②(binlog线程)从数据库把主数据库的binlog文件的 SQL 语句复制到自己的中继日志relaylog;
③(io线程)从数据库的relaylog重做日志文件,再执行一次这些sql语句。
(sql执行线程)详细的主从复制过程如图:
在这里插入图片描述

二、安装mysql数据库

在主从服务器上均需要完成以下工作:

1.创建本地工作目录: /usr/rdc/mysql-8.0.23 以及 其下的 文件夹 conf、logs、data、binlogs;并给工作目录授权

cd /usr/rdc
chmod 777 mysql-8.0.23

在这里插入图片描述

2.安装mysql数据库(基于docker)

docker search mysql
docker pull mysql:8.0.23

3.获取mysql配置文件模板

#将/etc/my.cnf文件拷贝到/usr/rdc/mysql-8.0.23/conf/
cp /etc/my.cnf /usr/rdc/mysql-8.0.23/conf

二、配置master库

1.在主服务器中编辑my.cnf文件

vi /usr/rdc/mysql-8.0.23/conf/my.cnf

2.配置文件的[mysqld]节点中添加以下内容

#服务器ID
server-id=1

#启用二进制日志
log-bin=/usr/rdc/mysql-8.0.23/master-bin
#设置logbin格式:STATEMENT / ROW / MIXED
binlog_format=ROW

#设置忽略同步的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql

#设置需要同步的数据库
binlog-do-db=pmonitor-cloud
binlog-do-db=ucoal

保存文件后授权

chmod 777 my.cnf

3.创建容器(映射数据卷)

docker run -p 3306:3306 --name mysql -v /usr/rdc/mysql-8.0.23/conf:/etc/mysql/conf.d -v /usr/rdc/mysql-8.0.23/logs:/var/log -v /usr/rdc/mysql-8.0.23/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.23

4.进入容器访问mysql

#查看容器id
docker ps

#进入容器
docker exec -it 容器id /bin/bash

#访问mysql数据库
mysql -uroot -p

在这里插入图片描述

5.创建从机访问主库使用的账号

#创建账号
create user 'slave1'@'%' identified by 'slave1';
#授权
grant replication slave on *.* to 'slave1'@'%';
#更新用户密码方案(一定要执行否则无法远程访问)
alter user 'slave1'@'%' identified with mysql_native_password by 'slave1';

#刷新
flush privileges;

6.获取日志文件名和偏移量
执行一下命令:

show master status;

记住file 和 position两个字段的值,配置从机时需要。
在这里插入图片描述

7.重启容器

docker restart 容器id或名称

在这里插入图片描述

三、配置slave库

1.在从服务器中编辑my.cnf文件

vi /usr/rdc/mysql-8.0.23/conf/my.cnf

2.配置文件的[mysqld]节点中添加以下内容

#服务器ID
server-id=2

#启用中继日志
relay-log=/usr/rdc/mysql-8.0.23/binlogs/slave-relay
relay-log-index=/usr/rdc/mysql-8.0.23/binlogs/slave-relay-log.index
#设置日志最长保存时间
expire_logs_days=30

#设置允许复制的库
replicate-do-db=pmonitor-cloud
replicate-do-db=ucoal

#设置忽略复制的库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema


#1代表slave写进自己的二进制
log_slave_updates=1

保存文件后授权

chmod 777 my.cnf

3.创建容器(映射数据卷)

docker run -p 3306:3306 --name mysql -v /usr/rdc/mysql-8.0.23/conf:/etc/mysql/conf.d -v /usr/rdc/mysql-8.0.23/logs:/var/log -v /usr/rdc/mysql-8.0.23/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.23

4.进入容器访问mysql

#查看容器id
docker ps

#进入容器
docker exec -it 容器id /bin/bash

#访问mysql数据库
mysql -uroot -p

在这里插入图片描述
5.主库参数关联设置

change master to master_host='192.168.0.201', master_user='slave1', master_password='slave1', master_log_file='binlog.000002', master_log_pos=3151, get_master_public_key=1;

6.重启容器

docker restart 容器id或名称

在这里插入图片描述

7.查看从机状态

show slave status \G;

使用上述命令查看状态,Slave_IO_Running、Slave_SQL_Running两个参数均为YES时,表示集群状态正常。
否则,需要根据 Last_IO_Error 的报错信息进行排查。
在这里插入图片描述
上图中报错信息表示集群中的服务器ID重复,使用使用下列命令分别在主从机上查看server_id

show variables like 'server_id';

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

说明从机配置文件中的server-id未生效。
可以通过以下两种方式修复:
①将my.cnf文件中的server-id 改成 server_id,重启mysql容器;
②在从机mysql控制台执行如下命令:

stop slave;
set global server_id = 2;
start slave;

执行完成后再查看从机状态,服务正常了。
在这里插入图片描述

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

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

相关文章

手把手教你撸一个接口自动化测试平台(一)

项目构思:开发一个web版的接口自动化测试平台 功能包括:接口导入、自动化测试用例生成、自动化测试报告、可持续集成 项目框架:django vue mysql 技术要求:熟悉django后台开发、熟悉vue开发 第一节:搭建django 项…

被ChatGPT戏耍的周末

被ChatGPT戏耍的周末 1. 被ChatGPT戏耍全过程2. 拆穿ChatGPT的把戏3. AIGC与内容安全 1. 被ChatGPT戏耍全过程 电动垂直起降飞行器(eVTOL,Electric Vertical Takeoff and Landing)技术越来越成熟,为了解下相关产品我周末打开了Cha…

OpenGLES:相机实时滤镜四宫格、九宫格

一.概述 今天继续OpenGLES的学习 今天在之前博文《OpenGLES:GLSurfaceView实现Android Camera预览》 的基础上,使用OpenGLES实现相机 四宫格滤镜 和 九宫格滤镜。 二.四宫格 先定义几个名词: 之前博文中实现的相机普通预览叫:…

【人工智能】“AI + 算力 = 最强龙头”,你怎么看?

文章目录 一、AI 与算力相辅相成1.1 AI 和算力的概念1.2 AI 和算力的应用领域1.3 AI 需要算力的支持1.4 AI 和算力的结合带来的巨大价值1.4.1 人脸识别1.4.2 语音识别1.4.3 自动驾驶1.4.4 医疗诊断1.4.5 自然语言处理 二、AI算力催生“最强龙头”2.1 “最强龙头”的概念2.2 AI …

Unity核心4——SpriteShape

Sprite Shape 是精灵形状的意思,它主要是方便我们以节约美术资源为前提,制作 2D 游戏场景地形或者背景的 ​ 在 Window --> Package Manager 中搜索 2D,选择 2D Sprite Shape,导入项目 一、Sprite Shape Profile 精灵形状概述文…

FPGA基础知识-用户自定义原语

目录 学习目标 学习内容 1.UDP的组成 2.UDP定义规则 3.表示组合逻辑的UDP 4.表示时序逻辑的UDP 5.UDP表中的缩写符号 6.UDP设计指南 学习时间 学习总结 学习目标: 提示:这里可以添加学习目标 理解编写UDP的规则,明白UDP的各个组成部分。 学…

设计师常用的网页设计素材网站大全

设计师不仅需要源源不断的灵感,还需要与时俱进的网页设计素材。 本文推荐4个非常不错的设计素材网站 即时设计资源社区 ​即时设计资源社区是国内优秀的网页设计素材网站,内置阿里、字节、腾讯、京东、谷歌、华为等设计系统,超过3000UI组件…

DDoS攻击导致Azure和Outlook中断

微软已经证实,最近Azure、Outlook和OneDrive门户网站的中断是由于针对该公司服务的第7层DDoS攻击造成的。 这些攻击是由微软追踪到的一个名为Storm-1359的攻击组织造成的,他们自称是匿名苏丹。 故障发生在6月初,Outlook.com的网络门户在6月…

分布式配置中心Apollo中Namespace的类型整理

Namespace的类型 Namespace类型有三种: 【1】私有类型 【2】公共类型 【3】关联类型(继承类型) (1)私有类型 私有类型的Namespace具有private权限。例如上文提到的“application” Namespace就是私有类型。 &…

【计算机网络】运输层端口号、复用与分用

1、复用和分用 2.端口号 3.举例 4.详细学习视频 https://www.bilibili.com/video/BV1c4411d7jb?p58&vd_source621b166d35a3636b23f3c4d270272c53

WSL子系统启动报错 Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE

今天琢磨着WindowsLinux子系统研究研究新东西,结果当我启动WSL时却出现了下面的提示: WSL启动报错 由于未安装所需的特性,无法启动操作。 Error code: Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE问题排查 于是分析…

Audio API 实现音频播放器

市面上实现音频播放器的库有很多,比如wavesurfer.js、howler.js等等,但是都不支持大音频文件处理,100多M的文件就有可能导致程序崩溃。总之和我目前的需求不太符合,所以打算自己实现一个音频播放器,这样不管什么需求 在…

软件工程是否迎来iPhone时刻?

“软件工程是否迎来iPhone时刻?” 是2023K全球软件研发行业创新峰会上海站主会场的Panel discussion的主题,出场的几位嘉宾给出了不同的答案,其中有两位嘉宾给出了“No”,一位给出了“塞班时刻”(后来给我朋友圈投票是…

设计模式—“状态变化”

在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?"状态变化"模式为这一问题提供了解决方案。 典型模式有:Memento、State 一、State 动机 在软件构建过程中,某些对象的状态如果改变,其行为也会随之而…

18-BOM对象

一、是什么 🍕🍕🍕BOM (Browser Object Model),浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象 其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退,前进,刷新&#xff0…

SSM幼儿园管理系统的设计与实现-计算机毕设 附源码86673

SSM幼儿园管理系统的设计与实现 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于幼儿管理系统也是十分常见的。过去使用手工的管理方式对幼儿园进行管理,造成了管理繁琐、难以维护等问题,如今使用计算…

搜索表单的触发方式

1、按键盘触发 配套监听 _keydownHandler: function (event) { // 获取表单数据 let formValue this.$[frm-mach-break].serializeMyForm(); let params { machineName: formValue.mach_id }; this.requestAjax(ajx-view-mach-break, params); }, onKeypress: function ({ ke…

抖音seo账号矩阵系统源码sign解密.技术

抖音SEO矩阵系统源码是一种用于优化抖音视频内容的工具,可以帮助用户提高抖音视频的搜索排名和流量,从而增加视频曝光和转化率。该系统包括两部分,即数据收集和分析模块以及SEO策略和实施模块。 返回示例 错误: { "ec…

搜索算法(五) DFS BFS 练习题

练习题 1.力扣https://leetcode.cn/problems/surrounded-regions/这题和417类似,都是从边界朝内部搜索,417用的是DFS,这里为了练习,就用BFS。 首先从四条边界得到‘O’的坐标,加入队列。接着一层一层搜索&#xff0c…

11个AI绘画软件大全,赶紧收藏

随着人工智能技术的不断发展,越来越多的AI绘画软件应运而生。AI绘画软件利用人工智能技术,通过计算机自动生成或辅助生成艺术作品。 AI绘画软件通常集深度学习、计算机视觉、自然语言处理等技术于一体,可以模拟人类的创作过程,生…