Mysql主从搭建
Mysql主从搭建
- 1.Mysql下载
- 1.1 查看操作系统
- 2.2 下载mysql安装包
- 2.Mysql安装
- 2.1 解压
- 2.2 目录重命名
- 2.3 创建data,存储文件
- 2.4 创建用户组
- 2.5 授权用户
- 2.6 配置环境变量
- 2.7 编辑my.cnf
- 2.8 创建相关目录和文件
- 2.9 初始化数据库
- 2.10 复制mysql.server到/etc/init.d/下,这样我们可以在任意目录使用mysql命令
- 2.11 赋予权限
- 2.12 启动
- 2.13 启动报错
- 2.14 修改数据库密码
- 3.搭建主从集群
- 3.1主节点配置
- 3.1.1 重启mysql
- 3.1.2 给root用户分配一个replication slave的权限
- 3.2 从节点配置
- 3.2.1 重启mysql
- 3.1.2 主节点同步状态
windos上安装比较简单且实际工作中我们的服务器都是linux。所以以linux上安装举例。
1.Mysql下载
1.1 查看操作系统
查看当前使用linux的操作系统使用的red hat 还是debian 还是ubuntn
uname -r
cat /etc/redhat-release
我自己这里使用的是red hat。
2.2 下载mysql安装包
// 官方下载网站
https://downloads.mysql.com/archives/community/
打开如下图

选择我们需要安装的 版本、系统。下载安装包

下载结果如下图

2.Mysql安装
前言:
- 如果您之前使用操作系统本机包管理系统(例如 Yum 或 APT)安装了 MySQL,则使用本机二进制文件安装时可能会遇到问题。确保您以前安装的 MySQL 已被完全删除(使用您的包管理系统),并且所有其他文件(例如旧版本的数据文件)也已被删除。您还应该检查配置文件(例如/etc/my.cnf 或/etc/mysql目录)并将其删除。
- MySQL对该库有依赖性libaio 。如果本地未安装此库,数据目录初始化和后续服务器启动步骤将失败。如有必要,请使用适当的包管理器安装它。例如,在基于 Yum 的系统上:
yum search libaio # search for infoyum install libaio # install library或者,在基于 APT 的系统上:
apt-cache search libaio # search for infoapt-get install libaio1 # install library`
- Oracle Linux 8 / Red Hat 8 (EL8):这些平台默认情况下不安装 /lib64/libtinfo.so.5MySQL 客户端bin/mysql包 mysql-VERSION-el7-x86_64.tar.gz和 mysql-VERSION-linux-glibc2.12-x86_64.tar.xz. 要解决此问题,请安装该 ncurses-compat-libs软件包:
$> yum install ncurses-compat-libs
以下操作使用root权限
2.1 解压
cd /usr/local
tar -zxvf mysql-8.0.20-el7-x86_64.tar.gz
2.2 目录重命名
mv mysql-8.0.20-el7-x86_64 mysql-8.0.20
2.3 创建data,存储文件
cd /usr/local/mysql-8.0.20
mkdir data
2.4 创建用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
因为用户只需要用于所有权目的,而不需要用于登录目的,所以useradd命令使用-r和-s /bin/false选项来创建一个没有服务器主机登录权限的用户。如果您的useradd不支持这些选项,请忽略它们。
2.5 授权用户
chown -R mysql.mysql /usr/local/mysql-8.0.20chmod 750 /usr/local/mysql-8.0.20/data -R
2.6 配置环境变量
vim /etc/profile
#在配置文件最后增加一行:
export PATH=$PATH:/usr/local/mysql-8.0.20/bin:/usr/local/mysql-8.0.20/lib
#使修改配置文件生效
source /etc/profile
2.7 编辑my.cnf
vim /etc/my.cnf
[mysql]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.socket[client]
port=3306
socket=/var/lib/mysql/mysql.socket[mysqld]
port=3306
server-id=3306
user=mysql
general_log=1
general_log_file=/var/log/mysql/mysql.log #如果系统中不存在需要自己创建
socket=/var/lib/mysql/mysql.socket
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
log-bin=/usr/local/mysql-8.0.20/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql-8.0.20/data
innodb_log_group_home_dir=/usr/local/mysql-8.0.20/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
symbolic-links=0
default_authentication_plugin=mysql_native_password[mysqld_safe]
log-error=/usr/local/mysql-8.0.20/data/mysql.log
pid-file=/usr/local/mysql-8.0.20/data/mysql.pid
2.8 创建相关目录和文件
mkdir -p /var/log/mysql/
mkdir -p /var/lib/mysql
touch /var/log/mysql/mysql.log
chown -R mysql:mysql /var/log/mysql/
chown -R mysql:mysql /var/lib/mysql/
2.9 初始化数据库
cd /usr/local/mysql-8.0.20/bin/
./mysqld --user=mysql --basedir=/usr/local/mysql-8.0.20 --datadir=/usr/local/mysql-8.0.20/data/ --initialize

第一个红色error,提示文件不存在。(检查下2.8是否漏掉了)
2.10 复制mysql.server到/etc/init.d/下,这样我们可以在任意目录使用mysql命令
cd /usr/local/mysql-8.0.20
cp -a ./support-files/mysql.server /etc/init.d/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
2.11 赋予权限
chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld
2.12 启动
service mysql start

2.13 启动报错

创建pid文件
vim /usr/local/mysql-8.0.20/data/localhost.localdomain.pid
## 随便写入一个数字
如果部署过程除了问题且解决不了,可以使用rm -rf /usr/local/mysql-8.0.20/ 删除目录,然后重新从第一步开始执行。步骤经过我多次验证应该是可以部署成功的!
如果启动失败了也可查看mysql.log查看报错原因。
2.14 修改数据库密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
use mysql;
## 配置数据库可被远程连接
update user set host='%' where user='root';
flush privileges;
3.搭建主从集群
3.1主节点配置
vim /etc/my.cnf
# 找到mysqld增加如下配置
server-id=47
#开启binlog
log_bin=master-bin
log_bin-index=master-bin.index
skip-name-resolve
# 注释如下配置
#log-bin=/usr/local/mysql-8.0.20/data/mysql-bin
3.1.1 重启mysql
service mysqld restart

3.1.2 给root用户分配一个replication slave的权限
#登录主数据库
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
flush privileges;
#查看主节点同步状态:
show master status;

这个指令结果中的File和Position记录的是当前日志的binlog文件以及文件中的索引。
而后面的Binlog_Do_DB和Binlog_Ignore_DB这两个字段是表示需要记录binlog文件的库以及不需要记录binlog文件的库。目前我们没有进行配置,就表示是针对全库记录日志。这两个字段如何进行配置,会在后面进行介绍。
3.2 从节点配置
vim /etc/my.cnf
# 找到mysqld增加如下配置
#主库和从库需要不一致
server-id=48
#打开MySQL中继日志
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
#打开从服务二进制日志
log-bin=mysql-bin
#使得更新的数据写进二进制日志中
log-slave-updates=1
# 注释如下配置
#log-bin=/usr/local/mysql-8.0.20/data/mysql-bin
3.2.1 重启mysql
service mysqld restart

3.1.2 主节点同步状态
#登录从服务
mysql -u root -p;
#设置同步主节点:
CHANGE MASTER TO
MASTER_HOST='192.168.80.136',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='master-bin.000002',
MASTER_LOG_POS=156;
#开启slave
start slave;
#查看主从同步状态
show slave status;
或者用 show slave status \G; 这样查看比较简洁

到这里mysql主从搭建完成。
相关文章:
Mysql主从搭建
Mysql主从搭建 1.Mysql下载1.1 查看操作系统2.2 下载mysql安装包 2.Mysql安装2.1 解压2.2 目录重命名2.3 创建data,存储文件2.4 创建用户组2.5 授权用户2.6 配置环境变量2.7 编辑my.cnf2.8 创建相关目录和文件2.9 初始化数据库2.10 复制mysql.server到/etc/init.d/下…...
WPF程序给按钮增加不同状态的图片
首先我们在资源里添加几个图片,Up,Over和Down状态。 然后我们创建一个Style。默认我们的背景设置成Up 然后在Triggers里添加代码,当Property:IsMouseOver为True的时候更换成Over;当Property:IsPressed为Tr…...
Java编程陷阱(三)
陷阱11:不要使用StringBuffer类来拼接字符串 StringBuffer是Java中的一个类,它可以表示一个可变的字符串,也就是可以对字符串进行修改和追加的操作,比如使用append或insert方法来拼接字符串。有时候,我们需要使用StringBuffer类来拼接字符串,比如在循环中动态地构建一个字…...
数据仓库相关
在阿里巴巴的数据体系中,我们建议将数据仓库分为三层,自下而上为:数据引入层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(…...
SpringBoot学习笔记-创建个人中心页面(下)
笔记内容转载自 AcWing 的 SpringBoot 框架课讲义,课程链接:AcWing SpringBoot 框架课。 CONTENTS 1. 实现个人中心页面2. POJO时区修改3. 集成代码编辑器 本节实现个人中心的前端页面,用户能够查看自己的 Bot 信息,并能创建、修改…...
电子秤方案:做一个宠物勺方案设计
养宠物是一件费心劳力的事情,但同时也是能够给你带来快乐和幸福感的事情。就是有时候会怕宠物毫无征兆地生病令人措手不及,所以电子秤方案设计鼎盛合科技分享一个小方案,能够及时了解到宠物的身体状况问题。 蓝牙宠物勺是一种具有记录和称重…...
Debezium-Embedded 实时监控MySQL数据变更
1.Debezium-Embedded 简介 Debezium连接器的操作通常是将它们部署到Kafka Connect服务,并配置一个或多个连接器来监控上游数据库,并为它们在上游数据库中看到的所有更改生成数据更改事件。这些数据更改事件被写入Kafka,在那里它们可以被许多不…...
计算机是如何工作的(简单介绍)
目录 一、冯诺依曼体系 二、CPU基本流程工作 逻辑⻔ 电⼦开关——机械继电器(Mechanical Relay) ⻔电路(Gate Circuit) 算术逻辑单元 ALU(Arithmetic & Logic Unit) 算术单元(ArithmeticUnit) 逻辑单元(Logic Unit) ALU 符号 寄存器(Regis…...
JSP基本表单和Request对象使用例子
表单的jsp; <%page contentType"text/html;charsetgbk" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><titl…...
【Redux】Redux 基本使用
1. Redux 快速上手 Redux 是 React 最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行。 <button id"decrement">-</button> <span id"count">0</span> <…...
多线程Thread(初阶一:认识线程)
目录 一、引用线程的原因 二、线程的概念 三、进程和线程的区别 四、多线程编程 一、引用线程的原因 多任务操作系统,希望系统能同时运行多个任务。所以会涉及到进程,需要对进程进行管理、调度等。 而单任务操作系统,就完全不涉及到进程…...
系列五、GC垃圾回收【四大垃圾算法-复制算法】
一、堆的内存组成 二、复制算法 2.1、发生位置 复制算法主要发生在新生代,发生在新生代的垃圾回收也被叫做Minor GC。 2.2、 Minor GC的过程 复制>清空》交换 1、eden、from区中的对象复制到to区,年龄1 首先,当eden区满的时候会触发第一…...
LeetCode(24)文本左右对齐【数组/字符串】【困难】
目录 1.题目2.答案3.提交结果截图 链接: 文本左右对齐 1.题目 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单…...
Spring-Spring之事务底层源码解析
EnableTransactionManagement工作原理 开启Spring事务本质上就是增加了一个Advisor,但我们使用EnableTransactionManagement注解来开启Spring事务是,该注解代理的功能就是向Spring容器中添加了两个Bean: AutoProxyRegistrarProxyTransactio…...
后端面经学习自测(三)
文章目录 1、ArrayList和Linkedlist区别?2、ArrayList扩容机制?3、ArrayList和Linkedlist分别能做什么场景?4、事务特性?MySQL事务Redis事务Spring事务5、在Spring中事务失效的场景?6、Java泛型?7、泛型擦除…...
力扣labuladong——一刷day40
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣341. 扁平化嵌套列表迭代器 前言 N叉树的结构,构造迭代器 一、力扣341. 扁平化嵌套列表迭代器 /*** // This is the interface that allo…...
在VS Code中使用VIM
文章目录 安装和基本使用设置 安装和基本使用 VIM是VS Code的强大对手,其简化版本VI是Linux内置的文本编辑器,堪称VS Code问世之前最流行的编辑器,也是VS Code问世之后,我仍在使用的编辑器。 对VIM无法割舍的原因有二࿰…...
注解【元数据,自定义注解等概念详解】(超简单的好吧)
注解的理解与使用 注解的释义元数据的含义基础阶段常见的注解注解的作用(包括但不限于)教你读懂注解内部代码内容五种元注解尝试解读简单注解我当时的疑惑点 自定义注解自定义注解举例 注解的原理总结 注解的释义 我们都知道注释是拿来给程序员看的&…...
vue-pdf在vue框架中的使用
在components目录下新建PdfViewer/index.vue vue-pdf版本为4.3.0 <template><div :id"containerId" v-if"hasProps" class"container"><div class"right-btn"><div class"pageNum"><input v-m…...
Wordpress页面生成器:Elementor 插件制作网站页面教程(图文完整)
本文来教大家怎么使用Wordpress Elementor页面编辑器插件来自由创建我们的网页内容。很多同学在面对建站的时候,一开始都是热血沸腾信心满满的,等到实际上手的时候就会发现有很多问题都是无法解决的,希望本篇Elementor插件使用指南能够帮助到你。 Wordpress Elementor页面编…...
5分钟掌握Windows窗口置顶神器:PinWin完整使用指南
5分钟掌握Windows窗口置顶神器:PinWin完整使用指南 【免费下载链接】PinWin Pin any window to be always on top of the screen 项目地址: https://gitcode.com/gh_mirrors/pin/PinWin Windows窗口置顶工具PinWin是一款让你彻底告别频繁窗口切换的神器。无论…...
基于树莓派与开源硬件的虾类养殖水质监控系统设计与实践
1. 项目概述:一个开源的虾类养殖监控系统最近在翻看GitHub上的开源项目,偶然发现了一个挺有意思的仓库,叫“openshrimp”。光看名字,你可能会觉得这是个跟海鲜或者生物相关的项目,但实际上,它是一个面向水产…...
从开源技能库到精英能力体系:构建个人技术护城河的实践指南
1. 项目概述:从开源技能库到个人能力体系的构建最近在GitHub上看到一个挺有意思的项目,叫“openclaw-elite-skills”。初看这个标题,你可能会有点摸不着头脑——“openclaw”是什么?“精英技能”又指什么?但作为一个长…...
FPGA在软件无线电系统中的并行处理与动态重配置技术
1. FPGA在软件无线电系统中的核心价值FPGA(现场可编程门阵列)已成为现代软件无线电(SDR)系统的核心处理引擎。与传统DSP处理器相比,FPGA凭借其并行架构和可重构特性,在实时信号处理领域展现出独特优势。在典…...
如何用Sticky便签应用提升Linux桌面工作效率的5个秘诀
如何用Sticky便签应用提升Linux桌面工作效率的5个秘诀 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 你是否厌倦了在多个窗口间切换查找笔记?是否经常忘记重要的待办事项&#x…...
Windows进程内存操作实战:ClawMem库核心原理与应用指南
1. 项目概述:一个内存操作工具箱的诞生在软件开发和逆向工程领域,对进程内存进行安全、高效、可控的读写操作,是一个既基础又充满挑战的需求。无论是为了调试、分析程序行为,还是为了实现特定的功能扩展,直接与内存打交…...
PRIME OS:基于React与Supabase的浏览器操作系统架构解析
1. 项目概述如果你和我一样,对“浏览器里的操作系统”这个概念着迷,同时又对市面上那些要么过于玩具化、要么复杂到无从下手的项目感到失望,那么今天聊的这个项目——PRIME OS,绝对值得你花时间深入研究。它不是一个简单的桌面模拟…...
物联网时代:从技术连接到价值过滤的思辨与实践
1. 从“动能”到“意义”:一场关于技术本质的思辨“你能发出闪电,叫它行去,使它对你说:‘我们在这里’?”——《约伯记》38:35。这句古老的诘问,在今天读来,竟意外地切中了我们与技术关系的核心…...
企业级AI助手框架:私有化部署、工具调用与RAG实战指南
1. 项目概述:一个面向企业级应用的开源AI助手框架最近在GitHub上闲逛,发现了一个挺有意思的项目,叫entaoai。第一眼看到这个仓库名,我下意识地觉得这可能又是一个基于某个大模型API的简单封装工具。但点进去仔细研究了一下源码和文…...
Midjourney 8x10高保真输出崩溃诊断:内存溢出日志解析、--sref跨模型参考失效、以及GPU显存碎片化导致的upscale中断(附实时监控脚本)
更多请点击: https://intelliparadigm.com 第一章:Midjourney 8x10高保真输出崩溃现象全景概览 近期,大量 Midjourney 用户在使用 --s 1000 --q 2 --v 6.3 配合 --ar 8:10 参数生成高分辨率人像/建筑类图像时,遭遇高频次任务中…...
