当前位置: 首页 > news >正文

MySQL主从搭建--保姆级教学

MYSQL主从搭建步骤

主节点

# 进入目录
cd /opt# 下载安装包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 拷贝到/usr/local
mv /opt/mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local# 进入/usr/local
cd /usr/local# 修改名称为mysql-8.0.20
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0.20# 创建存放数据文件夹
mkdir /usr/local/mysql-8.0.20/data# 创建用户及用户组
groupadd mysql
useradd -g mysql mysql# 授权
chown -R mysql.mysql /usr/local/mysql-8.0.20# 初始化数据库(记录临时密码)
cd /usr/local/mysql-8.0.20/./bin/mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql-8.0.20/ --datadir=/usr/local/mysql-8.0.20/data/ --initialize ;# 配置my.cnf
vi /etc/my.cnf# 清空,使用下面内容
// 文件内容开始[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password# 主从复制-主机配置
# 主服务器唯一ID
server-id=1
# 启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置需要复制的数据库(可设置多个)
binlog-do-db=test
# 设置logbin格式
binlog_format=STATEMENT// 文件内容结束# 建立Mysql服务
cp -a ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql# 检查服务是否生效
chkconfig --list mysql# 启动、停止、重启
service mysql start
service mysql stop
service mysql restart# 创建软连接
ln -s /usr/local/mysql-8.0.20/bin/mysql /usr/bin # 登录(使用临时密码)
mysql -uroot -p# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';# 退出,使用新密码登录
quit
mysql -uroot -p# 修改root权限,增加远程连接
use mysql
update user set host ='%' where user='root';
alter user 'root'@'%' identified with mysql_native_password by 'new password';
flush privileges;# 退出
quit

从节点

# 进入目录
cd /opt# 下载安装包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 拷贝到/usr/local
mv /opt/mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local# 进入/usr/local
cd /usr/local# 修改名称为mysql-8.0.20
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0.20# 创建存放数据文件夹
mkdir /usr/local/mysql-8.0.20/data# 创建用户及用户组
groupadd mysql
useradd -g mysql mysql# 授权
chown -R mysql.mysql /usr/local/mysql-8.0.20# 初始化数据库(记录临时密码)
cd /usr/local/mysql-8.0.20/./bin/mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql-8.0.20/ --datadir=/usr/local/mysql-8.0.20/data/ --initialize ;# 配置my.cnf
vi /etc/my.cnf# 清空,使用下面内容
// 文件内容开始[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password# 主从复制-从机配置
# 从服务器唯一ID
server-id=2
# 启用中继日志
relay-log=mysql-relay// 文件内容结束# 建立Mysql服务
cp -a ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql# 检查服务是否生效
chkconfig --list mysql# 启动、停止、重启
service mysql start
service mysql stop
service mysql restart# 创建软连接
ln -s /usr/local/mysql-8.0.20/bin/mysql /usr/bin # 登录(使用临时密码)
mysql -uroot -p# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';# 退出,使用新密码登录
quit
mysql -uroot -p# 修改root权限,增加远程连接
use mysql
update user set host ='%' where user='root';
alter user 'root'@'%' identified with mysql_native_password by 'new password';
flush privileges;# 退出
quit
  • 关闭主从数据库服务器防火墙或开放3306端口
# 查看防火墙状态
systemctl status firewalld# 关闭防火墙
systemctl stop firewalld
  • 主从数据库测试是否已经可以远程访问
# 主数据库服务器测试从数据库
mysql -uroot -p -h192.168.182.132(从节点ip) -P3306# 从数据库服务器测试主数据库
mysql -uroot -p -h192.168.182.128(主节点ip) -P3306
  • 主数据库创建用户slave并授权
# 登录
mysql -uroot -p# 创建用户
create user 'slave'@'%' identified with mysql_native_password by 'password';# 授权
grant replication slave on *.* to 'slave'@'%';# 刷新权限
flush privileges;
  • 从数据库验证slave用户是否可用
mysql -uslave -p -h192.168.182.128(主节点) -P3306
  • 主数据库查询服务ID及Master状态
# 登录
mysql -uroot -p# 查询server_id是否可配置文件中一致
show variables like 'server_id';# 若不一致,可设置临时ID(重启失效)
set global server_id = 1;# 查询Master状态,并记录 File 和 Position 的值
show master status;# 注意:执行完此步骤后退出主数据库,防止再次操作导致 File 和 Position 的值发生变化
  • 从数据库中设置主数据库
# 登录
mysql -uroot -p# 查询server_id是否可配置文件中一致
show variables like 'server_id';# 若不一致,可设置临时ID(重启失效)
set global server_id = 2;# 设置主数据库参数
change master to master_host='192.168.182.128',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156;#注意:master_log_file和master_log_pos为主节点中执行show master status;后的值!!!
#注意:master_log_file和master_log_pos为主节点中执行show master status;后的值!!!
#注意:master_log_file和master_log_pos为主节点中执行show master status;后的值!!!# 开始同步
start slave;# 若出现错误,则停止同步,重置后再次启动
stop slave;
reset slave;
start slave;# 查询Slave状态
show slave status\G# 查看是否配置成功
# 查看参数 Slave_IO_Running 和 Slave_SQL_Running 是否都为yes,则证明配置成功。若为no,则需要查看对应的 Last_IO_Error 或 Last_SQL_Error 的异常值。

测试

通过工具连接主从数据库或者在服务器连接。
  注意:主数据库的配置文件中配置了需要同步的数据库,因此只会同步配置的数据库,不配置则同步全部。

# 在主数据库创建数据库test
create database test;# 从数据库查看
show databases;# 在主数据库创建表
use test;
create table t_user(id int, name varchar(20));# 插入数据
insert into t_user values(1, 'C3Stones');# 在从数据库查看
use test;
select * from t_user;# 其他删改查操作请自行测试

异常

1.Slave_IO_Running为NO

问题原因:

(1)网络不通

(2)防火墙端口未开放

(3)mysql账户密码错误

(4)mysql主从机配置文件写错

(5)配置从机连接语法错误

(6)主机未开放账户连接权限

解决步骤:

(1)网络不通:用ping指令尝试是否可以接收到返回的数据

(2)防火墙端口未开放:

1:查看防火状态
systemctl status firewalld
service  iptables status2:暂时关闭防火墙
systemctl stop firewalld
service  iptables stop3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off4:重启防火墙
systemctl enable firewalld
service iptables restart 

(3)mysql账户密码错误:用"mysql -u用户名 -p密码 -h主机ip"尝试登录主机

(4)主数据库参数设置错误(注意此条命令的参数)

change master to master_host='192.168.182.128',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156;

若配置错误

1.停止已经启动的绑定
stop slave;2.重置绑定
reset master;3.重新配置、执行复制主机命令
change master to master_host='192.168.182.128',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156;4.启动复制
start slave;
2.Slave_SQL_Running为NO
原因
主节点中有数据库test,执行drop database test时成功,但是从节点中没有test库,所以执行失败。此失败不对数据库造成影响,所以可忽略,选择跳过此处错误。#停止从服务
mysql> stop slave;  #表示跳过一步错误,后面的数字可变 
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;#重启slave服务
mysql> start slave;之后再用mysql> show slave status\G 查看: 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
ok,现在主从同步状态正常了。。。

相关文章:

MySQL主从搭建--保姆级教学

MYSQL主从搭建步骤 主节点 # 进入目录 cd /opt# 下载安装包 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 解压 tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 拷贝到/usr/local mv /opt/mysql-8.0.20-linux-g…...

Modbus通信协议--RTU

一、RTU介绍 MODBUS协议支持多种功能码,不同的功能码对应不同的操作: 0x01读线圈状态0x02读离散输入状态0x03读保持寄存器0x04读输入寄存器0x05写单个线圈0x06写单个保持寄存器0x0F写多个线圈0x10写多个保持寄存器 二、实验 1.0x03功能码读单个保持寄…...

我是大学生,应该选系统运维方向,还是web开发方向?

选择系统运维方向还是Web开发方向取决于你的兴趣、职业目标和个人技能。以下是对这两个方向的详细对比和建议,帮助你做出更明智的选择 双方比较 🤦‍♀️系统运维方向 优点: 稳定性:系统运维工作通常比较稳定,许多…...

Qt窗口与对话框

目录 Qt窗口 1.菜单栏 2.工具栏 3.状态栏 4.滑动窗口 QT对话框 1.基础对话框QDiaog 创建新的ui文件 模态对话框与非模态对话框 2.消息对话框 QMessageBox 3.QColorDialog 4.QFileDialog文件对话框 5.QFontDialog 6.QInputDialog Qt窗口 前言:之前以上…...

【笔记】Windows 中 一键部署本地私人专属知识库:MaxKB + Docker + MaxKB docker + Ollama

Docker的部署: Docker下载直接进入链接: https://www.docker.com/ Docker使用需要启动Docker,启动Docker以后,会在桌面右下角看到Docker的一个图标: 只有启动了Docker以后,Docker的各种命令才可以使用。 好像还需要…...

【Vue】scoped解决样式冲突

默认情况下写在组件中的样式会 全局生效 → 因此很容易造成多个组件之间的样式冲突问题。 全局样式: 默认组件中的样式会作用到全局,任何一个组件中都会受到此样式的影响 局部样式: 可以给组件加上scoped 属性,可以让样式只作用于当前组件 一、代码示例 BaseOne…...

word模板内容替换

1.pom引入依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version> </dependency> <dependency><groupId>com.deepoove</groupId><a…...

docker安装和使用

1. docker-ce Docker Community Edition (CE): 功能: 这是 Docker 的主要组件&#xff0c;用于创建、管理和运行容器。它包括 Docker 守护进程 (dockerd)&#xff0c;该守护进程负责处理容器的生命周期&#xff0c;包括创建、启动、停止和删除容器。用途: 允许用户在其系统上…...

【AIGC X UML 落地】通过多智能体实现自然语言绘制UML图

前天写了篇博文讲到用PlantUML来绘制C类图和流程图。后台有读者留言&#xff0c;问这步能否自动化生成&#xff0c;不想学习 PlantUML 语法。 我想了下&#xff0c;发现这事可行&#xff0c;确实可以做到通过自然语言的描述就能实现 UML图的绘制&#xff0c;昨天晚上加了个班到…...

C++访问越界

常见场景 访问数组元素越界vector容器访问等 vector<int>;vec<2>&#xff1b;字符串访问越界string str;str[2];array数组访问越界字符串处理&#xff0c;没有添加’\0’字符&#xff0c;导致访问字符串的时候越界了&#xff1b;使用类型强转&#xff0c;让一个大…...

MATLAB format

在MATLAB中&#xff0c;format 是一个函数&#xff0c;用于控制命令窗口中数值的显示格式。这个函数可以设置数值的精度、显示的位数等。以下是一些常用的 format 命令&#xff1a; format long&#xff1a;以默认的长格式显示数值&#xff0c;通常显示15位有效数字。format s…...

Face Forgery Detection by 3D Decomposition

文章目录 Face Forgery Detection by 3D Decomposition研究背景研究目标创新点方法提出问题研究过程技术贡献实验结果未来工作Face Forgery Detection by 3D Decomposition 会议:CVPR2021 作者: 研究背景 面部伪造引发关注传统面部伪造检测主要关注原始RGB图像研究目标 将…...

socket网络编程——多进程、多线程处理并发

如下图所示, 当一个客户端与服务器建立连接以后,服务器端 accept()返回,进而准备循环接收客户端发过来的数据。 如果客户端暂时没发数据,服务端会在 recv()阻塞。此时,其他客户端向服务器发起连接后,由于服务器阻塞了,无法执行 accept()接受连接,也就是其他客户端发送…...

C++---模板进阶(非类型模板参数,模板的特化,模板分离编译)

我们都学习和使用过模板&#xff0c;而这篇文章我们来将一些更深入的知识。在此之前&#xff0c;我们在使用C编程时可以看到模板是随处可见的&#xff0c;它能支持泛型编程。模板包括函数模板和类模板&#xff0c;我们有的人可能会说是模板函数和模板类&#xff0c;但严格讲这样…...

锂电池寿命预测 | Matlab基于SSA-SVR麻雀优化支持向量回归的锂离子电池剩余寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 【锂电池剩余寿命RUL预测案例】 锂电池寿命预测 | Matlab基于SSA-SVR麻雀优化支持向量回归的锂离子电池剩余寿命预测&#xff08;完整源码和数据&#xff09; 1、提取NASA数据集的电池容量&#xff0c;以历史容量作…...

整理好了!2024年最常见 20 道 Kafka面试题(十)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道 Kafka面试题&#xff08;九&#xff09;-CSDN博客 十九、Kafka的消费者如何实现幂等性&#xff1f; 在Kafka中&#xff0c;幂等性指的是消费者处理消息时&#xff0c;即使多次接收到同一条消息&#xff0c;也能…...

Paper Survey——3DGS-SLAM

之前博客对多个3DGS SLAM的工作进行了复现及代码解读 学习笔记之——3DGS-SLAM系列代码解读_gs slam-CSDN博客文章浏览阅读1.9k次&#xff0c;点赞15次&#xff0c;收藏45次。最近对一系列基于3D Gaussian Splatting&#xff08;3DGS&#xff09;SLAM的工作的源码进行了测试与…...

搜索与图论:深度优先搜索

搜索与图论&#xff1a;深度优先搜索 题目描述参考代码 题目描述 参考代码 #include <iostream>using namespace std;const int N 10;int n; int path[N]; bool st[N];void dfs(int u) {// u n 搜索到最后一层if (u n){for (int i 0; i < n; i) printf("%d …...

AMD显卡和英伟达显卡哪个好?

显卡是计算机中负责处理图形和视频输出的硬件设备&#xff0c;主要分为两种类型&#xff1a;AMD的A卡和NVIDIA的N卡。那么AMD显卡和英伟达显卡哪个好&#xff1f;怎么选&#xff1f; 答&#xff1a;不能一概而论地说哪个好&#xff0c;因为它们各有优势&#xff0c;选择应基于…...

5.31.8 学习深度特征以实现判别定位

1. 介绍 尽管没有对物体的位置提供监督,但卷积神经网络 (CNN) 各层的卷积单元实际上可以充当物体检测器。尽管卷积层具有这种出色的物体定位能力,但当使用全连接层进行分类时,这种能力就会丧失。最近,一些流行的全卷积神经网络,如 Network in Network (NIN) [13] 和 Goog…...

SEO_资深专家分享的3个高级SEO策略与思路

SEO资深专家分享的3个高级SEO策略与思路 在当今竞争激烈的数字营销环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;不仅仅是一个技术问题&#xff0c;更是一个战略问题。作为一名资深SEO专家&#xff0c;我有幸分享三个高级SEO策略&#xff0c;帮助你在竞争中脱颖…...

你的Windows Defender是否正在拖慢系统性能?3步彻底解决方案

你的Windows Defender是否正在拖慢系统性能&#xff1f;3步彻底解决方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirro…...

思科故障排查命令 TOP50

在网络运维这行干久了,你会发现一个很现实的事情:90% 的故障,其实靠“几条命令”就能定位. 但问题是——很多人不是不会,而是: 想不起来用哪个命令 不知道该从哪一步查 查了但不会“看输出” 所以这篇文章,我不单是给你列命令,而是帮你建立一个: 👉 “排查思路 + 命…...

盟接之桥®:当新ERP撞上“紧急接入”,WebEDI如何成为制造业的“救命稻草”?

在制造业的数字化征途中&#xff0c;最令人焦虑的场景之一莫过于&#xff1a;“下游客户&#xff08;如汽车主机厂&#xff09;明天就要看EDI对接数据&#xff0c;而你们的全新ERP系统&#xff0c;还在测试环境里试运行。”这绝非危言耸听。在汽车供应链、高端装备制造等领域&a…...

OpenCore Legacy Patcher终极指南:老款Mac焕新升级的完整解决方案

OpenCore Legacy Patcher终极指南&#xff1a;老款Mac焕新升级的完整解决方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款…...

Java的迪米特原则介绍

01.问题思考的分析什么是迪米特原则&#xff0c;这个原则如何理解&#xff0c;如何运用到实际开发&#xff0c;举例说明一下&#xff1f;什么是高内聚松耦合&#xff0c;能否举例说明一下&#xff1f;迪米特法则。尽管它不像 SOLID、KISS、DRY 原则那样&#xff0c;人尽皆知&am…...

Windows驱动存储深度管理:DriverStore Explorer全方位解决方案

Windows驱动存储深度管理&#xff1a;DriverStore Explorer全方位解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 一、驱动管理困境与突破路径 1.1 系统驱动管理的核心挑战 W…...

告别空谈!用Langchain4j的Function Calling,为你的Java AI助手加上“查询订单”的实战能力

实战Langchain4j函数调用&#xff1a;为Java AI助手赋予订单查询能力 想象一下&#xff0c;当你的医疗预约AI助手不仅能回答"如何预防感冒"&#xff0c;还能在你说"查看我下周的挂号记录"时&#xff0c;直接调取数据库返回具体预约信息——这种"能说…...

AI 时代小团队生产力天花板:不是靠工具,而是靠低损耗沟通、好氛围和心力

一位创业 3 年的创始人&#xff0c;团队从 8 人扩张到 24 人&#xff0c;AI 工具从 Cursor 到 Claude Code 全都用上&#xff0c;表面上看每个人都带了 3-5 个 Agent&#xff0c;生产力应该指数级提升。 可实际结果是&#xff1a;周会还是要开、决策还是要层层同步、关键任务依…...

保姆级教学:FLUX.1文生图+SDXL Prompt风格,从环境准备到图片生成的完整流程

保姆级教学&#xff1a;FLUX.1文生图SDXL Prompt风格&#xff0c;从环境准备到图片生成的完整流程 你是否曾经遇到过这样的困扰&#xff1a;明明输入了详细的描述词&#xff0c;但生成的图片却与预期相差甚远&#xff1f;或者尝试混合多种风格时&#xff0c;结果变得不伦不类&…...