msyql 24day 数据库主从 主从复制 读写分离 master slave 有数据如何增加
目录
- 环境介绍
- 读写分离
- 纵向扩展
- 横向扩展
- 数据库主从
- 准备环境
- 主库环境(master)
- 从库配置(slave)
- 状态分析
- 重新配置
- 问题分析 报错解决
- 从库验证
- 有数据的情况下 去做主从
- 清理环境
- 环境准备
- 数据库中的锁的机制
- 主库配置
- 从库配置
- 最后给主库解锁
- 常见错误
环境介绍
将一个数据库的数据 复制到另外一个 或者多个
master 主库
slave 从库


主库开了一个二进制日志
从库开了两个线程
LO可以是多线程(快) 请求二进制文件
SQL 线程 执行sql 语句
读写分离
所有写入的数据 在主库上写 所有读取在从库上读取
纵向扩展
一台不行 用两台
横向扩展
提升一台服务器的配置
数据库主从
准备环境
- 关闭防火墙
- 关闭selinx
- 固定IP
- 配置dns 在目录 /etc/hosts 文件中
- 开启 bin_log 咱文件 /etc/my.cnf
- 在主库中授权用户
# 防火墙
systemctl stop firewalld# 关闭selinx
getenforce
setenforce 0# 固定IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33 rm -rf /etc/sysconfig/network-scripts/.cfg-ens33.swp
修改参数
BOOTPROTO=static
----------------------------------------------------------------
IPADDR={ip}
PREFIX=24
GATEWAY={网关地址}
DSN1={dns地址}
DSN1={dns地址}
----------------------------------------------------------------
参考
IPADDR=10.12.155.146
PREFIX=24
GATEWAY=10.12.155.254
DNS1=223.5.5.5
DNS2=223.6.6.6----------------------------------------------------------------
# 参考实例
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.203
PREFIX=24
GATEWAY=192.168.100.2
DNS1=223.5.5.5
DNS2=223.6.6.6
----------------------------------------------------------------# 重启
systemctl restart network# 修改主机名
hostnamectl set-hostname master# 主机名解析
涉及到几个ip 就要写多少个
实例
vim /etc/host
192.168.100.203 master
192.168.100.203 slave10.12.155.146 master
10.12.155.120 slave# 清理环境
# 卸载包
yum -y erase `rpm -qa | egrep "mysql|mariadb"`# 删除配置文件
rm -rf /etc/my* && rm -rf /var/lib/mysql && rm -rf /usr/bin/mysql# 检查
[[ ! -f /etc/my.cnf ]] && [[ ! -d /var/lib/mysql ]] && [[ ! -f /usr/bin/mysql ]] && echo "环境已经清理完成" || echo "环境未清理"# 安装mysql
yum -y install mysql-server...
## 本地安装
cd 解压包路径
yum -y localinstall *# 修改密码
## 查看密码
awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log
## 修改密码为@Baipiao123
mysqladmin -uroot -p"`awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log`" password '@Baipiao123'
主库环境(master)
## 创建二进制文件目录
mkdir /data
chown mysql.mysql /data# 开启二进制日志
vim /etc/my.cnf
写在[mysqld] 标识下边 写道其他表示下边 就不生效了
server-id=203
log-bin=/data/mysql-binsystemctl restart mysqld# 授权一个账号(开启一个复制权限)msyql> grant replication slave on *.* to 'master'@'%' identified by '{密码}'
msyql> grant replication slave on *.* to 'master'@'%' identified by '@Baipiao123';
mysql> flush privileges;
# 查看当前binlog 日志文件用的哪个 以及post
msyql> show master status\G## 重新设置 设置轮转日志
mysql> reset master;

从库配置(slave)
# 从库配置
vim /etc/my.cnf
server-id=204
# 重启数据
systemctl restart mysqld# 主机名解析
10.12.155.146 master
10.12.155.120 slave可以使用 ? change master to 来查看语法
# 配置信息
change master to
master_host ={解析的dns名},
master_port=3306, // 这里是端口号
master_user='{刚刚授权的用户名}',
master_password='{刚刚授权的密码}',
master_log_file=mysql-bin.000001, //bin_log 文件名字 不懂请看下图
master_pos=154; //二进制日志 开始位置
master_connect_retry=10; //十秒刷新## 实例
CHANGE MASTER TOMASTER_HOST='master',MASTER_USER='king',MASTER_PASSWORD='@Baipiao123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=145,MASTER_CONNECT_RETRY=10;# 启动slave
msyql> start slave;# 产看状态
msyql>show slave status\GLO 和 SQL 都是yes 则说明配置成功# 如果uuid 一样的话
cat /var/lib/mysql/auto.cnf

状态分析
## 14 15行。两个YES表示主从成功
## 关注39-42的信息
## 38行表示主从复制延迟时间
## 46 行UUID要不一致mysql> show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: masterMaster_User: relicationMaster_Port: 3306Connect_Retry: 10Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 154Relay_Log_File: slave-relay-bin.000002Relay_Log_Pos: 320Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 154Relay_Log_Space: 527Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 203Master_UUID: 6f6d0551-a073-11ee-9f28-000c298a6e96Master_Info_File: /var/lib/mysql/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version:
1 row in set (0.00 sec)
重新配置
如果配置出错了 才需要从这里开始 重新配置
mysql>stop slave;
mysql> reset slave;
mysql>CHANGE MASTER TOMASTER_HOST='master',MASTER_USER='master',MASTER_PASSWORD='@Baipiao123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154,MASTER_CONNECT_RETRY=10;
## 启动slave
mysql>start slave;
# 产看状态
msyql>show slave status\G;

问题分析 报错解决
- ip 地址 错误
- dns 没有配置
- ip配置
- 用户名密码
- 二进制文件配置
- UUID 一样 也会导致 失败
从库验证
最好在主库中写一下 再去 从库中看一下
# master_sql 在主库中写入如下内容
create database king;
create table king.t1(id int,myname varchar(40));
insert into king.t1 values (1,"king");# clave_sql 在从库中查看写入的内容
show databases;use king;select * from king.t1;要往主库(master)里边写,如果写在从库,则会导致主键冲突
有数据的情况下 去做主从
清理环境
此步骤是测试步骤 实战请跳过此处
yum -y erase `rpm -qa | egrep "mysql|mariadb"`# 删除配置文件
rm -rf /etc/my* && rm -rf /var/lib/mysql && rm -rf /usr/bin/mysqlrm -rf /data/*# 检查
[[ ! -f /etc/my.cnf ]] && [[ ! -d /var/lib/mysql ]] && [[ ! -f /usr/bin/mysql ]] && echo "环境已经清理完成" || echo "环境未清理"# 安装mysql
yum -y install mysql-server...
## 本地安装
cd 解压包路径
yum -y localinstall *## 启动数据库
systemctl start mysqld# 修改密码
## 查询密码
awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log## 修改密码
mysqladmin -uroot -p"`awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log`" password '@Baipiao123'## 登录数据库
mysql -p"@Baipiao123"
环境准备
这里是模拟数据库中原有的数据
create database king;create table king.t1(id int, myname varchar(40));insert into king.t1 values (1,"aaa"),(2,"bbb"),(3,"cccc"),(4,"dddd"),(5,"eee");select * from king.t1;
数据库中的锁的机制
读锁
可以查询。
写锁
读写都不能执行。
主库配置
# 锁表备份## 备份文件为 all.sql
mysqldump -uroot -p{密码} -A > all.sql
mysqldump -uroot -p"@Baipiao123" -A > all.sql## 配置主从
### 创建必要目录
mkdir /data
chown mysql.mysql /data### 修改配置文件
vim /etc/my.cnf
server-id = 203
log-bin= /data/mysql-bin### 重启数据库
systemctl restart mysqld### 授权slave 用户
mysql> grant replication slave on {库}.{表} to "{用户名}"@"%" identified by "{密码}"
#### 实例
mysql> grant replication slave on *.* to "king"@"%" identified by "@Baipiao123";## 上一个读锁 () 到这里之后就不要动了 把这个窗口挂在这里mysql> flush tables with read lock;-----------------------------------------------------------------------------------------------
# 再重新开一个窗口进行如下操作### 重置bin_log
mysql> flush privileges;
### 查看主库 信息 已经bin_log 位置
mysql> show master status\G;


从库配置
## 传输数据
scp {备份文件.sql} {从库服务器}## 导入数据
mysql -uroot -p{密码} < {备份文件}mysql -uroot -p"@Baipiao123" < all.sql#配置从
vim /etc/my.cnf
在文件中写入下方内容 号码随意 不是1 就行
server-id = 204# 重启数据库
systemctl restart mysqld# 主机名解析
vim /etc/host
{主库服务器ip} master
{从库服务器ip} slave##实例
192.168.100.203 master
192.168.100.203 slave# 进入数据库 配置从库
mysql -uroot -p"@Baipiao123"## 查看格式 (show master to;)CHANGE MASTER TOMASTER_HOST='master',MASTER_USER='king',MASTER_PASSWORD='@Baipiao123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=720,MASTER_CONNECT_RETRY=10;## 启动从库
mysql> start slave;
## 查看主从信息
mysql> show slave status\G;
最后给主库解锁
配置完成之后 我们的主数据库 还是锁着的
这个时候就需要 给主数据库解锁了 (就是哪个 刚开始 主服务器 挂在哪里的窗口)
可以直接退出数据库
也可以使用命令来解锁
unlock tables;

常见错误
如果出现这些错误编号则可能是如下错误
1062 主从重复, 也就是说 从库插入了重复的数据 则可以跳过 具体还是需要做好分析
vim /etc/my.cnf
slave-skip-errors=10621053 主服务器宕机1045 账号密码错误 导致的链接错误
完结撒花
🌸🌸🌸 自强不息,不忘初心🌸🌸🌸
🌸🌸🌸 承蒙厚爱,不负佳人🌸🌸🌸
相关文章:
msyql 24day 数据库主从 主从复制 读写分离 master slave 有数据如何增加
目录 环境介绍读写分离纵向扩展横向扩展 数据库主从准备环境主库环境(master)从库配置(slave)状态分析重新配置问题分析 报错解决从库验证 有数据的情况下 去做主从清理环境环境准备数据库中的锁的机制主库配置从库配置最后给主库解锁常见错误 环境介绍 将一个数据库的数据 复…...
使用 Taro 开发鸿蒙原生应用 —— 探秘适配鸿蒙 ArkTS 的工作原理
背景 在上一篇文章中,我们已经了解到华为即将发布的鸿蒙操作系统纯血版本——鸿蒙 Next,以及各个互联网厂商开展鸿蒙应用开发的消息。其中,Taro作为一个重要的前端开发框架,也积极适配鸿蒙的新一代语言框架 —— ArkTS。 本文将…...
Linux下 自定义多线程并发快速压缩解压缩脚本
文章目录 自定义多线程压缩解压缩脚本使用 Linux下 自定义多线程并发快速压缩解压缩脚本 Linux下常用的tar工具无法支持并行 压缩和解压,对于大量小文件的解压缩,可借助pigz工具实现多线程并行工作,实现更为高效的压缩和解压缩。 自定义多线…...
ubuntu20.04下安装pcl_ubuntu安装pcl
pcl点云数据库,用来进行3D信息的获取与处理,和opencv相比较,opencv是用来处理二维信息,他是学术界与工业界针对点云最全的库,且网络上相关的资料很多。以下是pcl的安装步骤以及遇到的问题。 提前说明,本人…...
阿里云常用配置:日志采集、OSS、RAM 权限策略
文章目录 引言I 日志采集1.1 具体查询语法1.2 查询示例1.3 设置token时间(登录过期时间)II OSS2.1 设置防盗链2.2 验证Referer防盗链是否生效III 通义灵码 (智能编码)IV RAM 权限策略4.1 短信策略4.2 内容风险检测引言 SLS I 日志采集...
回顾丨2023 SpeechHome 第三届语音技术研讨会
下面是整体会议的内容回顾: 18日线上直播回顾 18日上午9:30,AISHELL & SpeechHome CEO卜辉宣布研讨会开始,并简要介绍本次研讨会的筹备情况以及报告内容。随后,CCF语音对话与听觉专委会副主任、清华大学教授郑方,…...
【flink】状态清理策略(TTL)
flink的keyed state是有有效期(TTL)的,使用和说明在官网描述的篇幅也比较多,对于三种清理策略没有进行横向对比得很清晰。 全量快照清理(FULL_STATE_SCAN_SNAPSHOT)增量清理(INCREMENTAL_CLEANUP)rocksdb压缩清理(ROCKSDB_COMPACTION_FILTER) 注意&…...
4. 行为模式 - 中介者模式
亦称: 调解人、控制器、Intermediary、Controller、Mediator 意图 中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建…...
2015年第四届数学建模国际赛小美赛A题飞机上的细长座椅解题全过程文档及程序
2015年第四届数学建模国际赛小美赛 A题 飞机上的细长座椅 原题再现: 航空公司座位是指在旅途中乘客可以乘坐的座位。一些航空公司现在推出了新的经济舱“超薄”座位。这些座椅除了重量较轻外,理论上还允许航空公司在不显著影响乘客舒适度的情况下增加运…...
机器学习笔记(二)使用paddlepaddle,再探波士顿房价预测
目标 用paddlepaddle来重写之前那个手写的梯度下降方案,简化内容 流程 实际上就做了几个事: 数据准备:将一个批次的数据先转换成nparray格式,再转换成Tensor格式前向计算:将一个批次的样本数据灌入网络中ÿ…...
【Linux】权限篇(二)
权限目录 1. 前言2. 权限2.1 修改权限2.2 有无权限的对比2.3 另外一个修改权限的方法2.3.1 更改用户角色2.3.2 修改文件权限属性 3. 第一个属性列4. 目录权限5. 默认权限 1. 前言 在之前的一篇博客中分享了关于权限的一些知识,这次紧接上次的进行,有需要…...
reduce累加器的应用
有如下json数据,需要统计Status的值为0和1的数量 const data {"code": "001","results": [{"Status": "0",},{"Status": "0",},{"Status": "1",}] }方法一:用reduce方…...
助力硬件测试工程师之EMC项目测试。
1:更新该系列的目的 接下来的一个月内,将更新硬件测试工程师的其中测试项目--EMC项目,后续将会出安规等项目,助力测试工程师的学习。 2:如何高效率的展现项目的基础以及一些细节知识点 通过思维导图以及标准的规定进行…...
Github 2023-12-23 开源项目日报 Top10
根据Github Trendings的统计,今日(2023-12-23统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6C项目2C项目1Jupyter Notebook项目1HTML项目1Go项目1非开发语言项目1 免费API集体清单 创建周期…...
Quartz.net 正则表达式触发器
1、创建项目 项目类型控制台应用程序,.Net Framework框架版本 4.7.2 2、引入框架 NuGet\Install-Package Quartz -Version 3.8.0 3、创建Job 自定义Job实现接口IJob,在Execute方法实现定时逻辑, using Quartz; using System; using Sys…...
【已解决】修改了网站的class样式name值,会影响SEO,搜索引擎抓取网站及排名吗?
问题: 修改了网站的class样式name值,会影响搜索引擎抓取网站及排名吗? 解答: 如果你仅仅修改了网站class样式的名称,而没有改变网站的结构和内容,那么搜索引擎通常不会因此而影响它对网站的抓取和排名。但…...
微信小程序开发系列-02注册小程序
上一篇文章,创建了一个最小的小程序,但是,还有3个疑问没有弄清楚,还是基于demo1工程,这篇文章继续探索。 当前的目录结构是否是完备的呢?(虽然小程序可以运行起来)app.js文件内容还…...
安装 PyCharm 2021.1 保姆级教程
作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 目前能下载到的最新版本是 PyCharm 2021.1。 请注意对应 Python 的版本: Python 2: 2.7Python 3: >3.6, <3.11…...
浏览器 cookie 的原理(详)
目录 1,cookie 的出现2,cookie 的组成浏览器自动发送 cookie 的条件 3,设置 cookie3.1,服务端设置3.1,客户端设置3.3,删除 cookie 4,使用流程总结 整理和测试花了很大时间,如果对你有…...
StringBuilder和StringBuffer区别是什么?
想象一下,你在写信,但是你需要不断地添加新的内容或者修改一些词句。在编程中,当你需要这样操作字符串时,就可以用StringBuffer或StringBuilder。 StringBuffer StringBuffer就像是一个多人协作写作的工具。如果你和你的朋友们一…...
计算机毕业设计springboot四川特色小吃管理系统 基于SpringBoot的巴蜀风味小吃数字化运营平台 基于SpringBoot的川渝美食文化传承与商业管理系统
计算机毕业设计springboot四川特色小吃管理系统29ji1c34 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 在数字经济蓬勃发展的当下,传统餐饮业正经历着深刻的数字化…...
DNS解析 HTTP TCP/IP ICMP/NAT/NAPT相关知识点
DNS解析 HTTP TCP/IP ICMP/NAT/NAPT 文章目录DNS解析 HTTP TCP/IP ICMP/NAT/NAPT📌 一、DNS相关面试题答案1. DNS解析过程是怎样的?2. DNS使用的是TCP还是UDP?为什么?3. 什么是DNS缓存污染?如何防止?4. DNS…...
2026年专科生必看!学生热捧的降AIGC平台 —— 千笔·专业降AI率智能体
在AI技术迅速渗透学术写作领域的今天,越来越多的学生和研究人员开始依赖AI工具提升写作效率。然而,随之而来的“AI率超标”问题也愈发严峻——随着查重系统不断升级,AI生成内容的痕迹被更加精准地识别,论文一旦被判定为AI痕迹过重…...
PHP的SAAS版跨境电商ERP实战的庖丁解牛
PHP 构建 SaaS 版跨境电商 ERP 是软件工程与国际贸易规则的深度结合。 这不仅仅是写代码,而是构建一个多租户、多平台、多币种、多时区的复杂分布式系统。它要求数据绝对一致(库存、资金),接口高度稳定(平台 API 限制&…...
GTNH汉化完全指南:零基础高效实现中文界面切换
GTNH汉化完全指南:零基础高效实现中文界面切换 【免费下载链接】Translation-of-GTNH GTNH整合包的汉化 项目地址: https://gitcode.com/gh_mirrors/tr/Translation-of-GTNH GTNH(GregTech: New Horizons)作为Minecraft科技模组的集大…...
Debian/Ubuntu 18.04 上安装 GLIBC 2.28 (2026)
Ubuntu 18.04 上安装 GLIBC 2.28 (2026) 引言 某些现代软件(例如 Visual Studio Code Server 1.88 及更新版本)要求系统 GLIBC 版本不低于 2.28,而 Ubuntu 18.04 默认提供的是 GLIBC 2.27。直接升级系统级 GLIBC 可能导…...
文墨共鸣大模型快速开发:.NET后端集成与API封装
文墨共鸣大模型快速开发:.NET后端集成与API封装 最近在做一个需要集成大语言模型的项目,后端用的是.NET技术栈。市面上很多教程都是Python的,对.NET开发者不太友好。其实用ASP.NET Core来封装大模型调用,既简单又高效,…...
泰山派3M-RK3576开发板部署YOLOv8目标检测模型实战指南
泰山派3M-RK3576开发板部署YOLOv8目标检测模型实战指南 最近有不少朋友在问,怎么把现在很火的YOLOv8目标检测模型,部署到泰山派3M-RK3576这块开发板上跑起来。确实,在嵌入式设备上跑AI模型,尤其是目标检测,是很多AIoT项…...
DirectX修复有什么用?解决游戏闪退dll报错,DirectX修复工具下载安装教程
什么是DirectX修复工具? DirectX修复工具(DirectX Repair)是一款系统级工具软件,主要功能是用来自动修复和安装Windows系统常用的DirectX和C运行库。程序分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能,而增强版则额外…...
终极指南:Upspin核心架构完全解析——三大服务如何构建全球命名系统
终极指南:Upspin核心架构完全解析——三大服务如何构建全球命名系统 【免费下载链接】upspin Upspin: A framework for naming everyones everything. 项目地址: https://gitcode.com/gh_mirrors/up/upspin Upspin是一个创新的全球命名系统框架,旨…...
