mysql 数据库主从复制搭建
MySQL 主从复制主要用于实现高可用性和备份。在主从复制中,一个 MySQL 实例(称为主节点)将其数据更改复制到至少一个其他 MySQL 实例(称为从节点)上。主要借助于数据库二进制日志binlog进行数据的复制。
主从数据库对应的操作系统、数据库版本要一致。
1、主库配置
设定一个唯一的server ID,开启二进制日志。serverId默认值是1,最大可取值2^32-1。
配置文件:my.cnf
[mysqld]
#配置serverId
server_id=1
# 开启 binlog
log-bin=mysql-bin
#配置不需要同步的库
binlog-ignore-db = mysql
binlog-ignore-db = sys
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
重启服务
systemctl restart mysqld
2、从库配置
配置文件my.cnf
[mysqld]
server-id=21
log-bin=mysql-bin
read_only=1
read_only设置数据库为只读,注意如果用户有super权限还是可以修改数据的。
3、创建复制用户
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'repl';
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'%';
数据复制只需要REPLICATION SLAVE权限就可以了,REPLICATION CLIENT权限是为了能查看复制状态。如下面的show master status命令就需要该权限。
4、获取二进制日志坐标
mysql> SHOW MASTER STATUS \G;
*************************** 1. row ***************************File: mysql-bin.000003Position: 11199Binlog_Do_DB: Binlog_Ignore_DB:
Executed_Gtid_Set:
File是当前的binlog日志文件,position是当前位置。
5、创建数据快照
如果要同步的数据库有存量数据,先进行同步数据
主库卸数
mysqldump -uroot -p --master-data db_test > db_test.sql
db_test是要同步的数据库名称,也可以不指定数据库,使用–all-databases来dump所有的数据库。
–master-data用来在从库自动生成一条设置master信息的语句。会设置对应的MASTER_LOG_FILE和MASTER_LOG_POS。这样可以达到不停机备份同步的效果。
例:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=11199;
在高版本的mysql中,已经过时使用–source-data替代。
备库导入初始数据
首先要创建对应的数据库:create database db_test;
mysql -u root -p db_test < db_test.sql
如果是已经命令行登录,可以在命令行直接执行:source 数据文件来导入初始数据。
6、开启复制
CHANGE MASTER TO MASTER_HOST='192.168.1.101',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=9026;
这里几个参数都很好理解,host,port是主库的连接地址,user,passowrd是上面主库上创建的复制用户。
master_log_file是主库当前binlog日志文件,master_log_pos指定从哪个位置开始复制。可以通过上面的show master status获取后面两个参数。
另外上面在导出主库数据时也说了,如果mysqldump加上–master-data参数在备份数据文件会自动生成设置后面两个参数的语句。这里可以不用CHANGE MASTER命令配置了就。
CHANGE MASTER命令在高版本(8.0.23)中也替换成了CHANGE REPLICATION SOURCE命令。
开始复制
>start slave;
查看复制状态
mysql> show slave status \G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.1.100Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000003Read_Master_Log_Pos: 11199Relay_Log_File: 50-relay-bin.000004Relay_Log_Pos: 1273Relay_Master_Log_File: mysql-bin.000003Slave_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: 11199Relay_Log_Space: 2246Until_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: 1Master_UUID: ceeb46c0-c925-11ed-8e74-fa163efb83e8Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica 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: Master_public_key_path: Get_master_public_key: 0Network_Namespace:
复制状态后很多信息,这里可以核对下CHANGE MASTER配置的master基本信息是否正确。Slave_IO_Running和Slave_SQL_Running可以查看当前复制线程状态。
Read_Master_Log_Pos和Exec_Master_Log_Pos对比,SQL_Delay数量可以查看当前复制进度是否偶延迟。也可以通过Slave_SQL_Running_State描述信息来看当前复制状态。
如果复制过程中有错误,Last_SQL_Errno和Last_SQL_Error会有对应的错误信息,更详细的信息记录在performance_schema.replication_applier_status_by_worker表中。
跳过错误
如果从库在复制过程中发生了错误(某条语句在从库上执行失败),如手动修改了从库,导致复制语句无法执行,在经过具体错误信息分析后,可以通过sql_slave_skip_counter参数来设置跳过当前错误。
>stop slave;
>set global sql_slave_skip_counter = 1;
>start slave;
sql_slave_skip_counter参数设置跳过数量,start slave开启复制使用过该变量后会将该参数重新归0.
相关文章:
mysql 数据库主从复制搭建
MySQL 主从复制主要用于实现高可用性和备份。在主从复制中,一个 MySQL 实例(称为主节点)将其数据更改复制到至少一个其他 MySQL 实例(称为从节点)上。主要借助于数据库二进制日志binlog进行数据的复制。 主从数据库对应…...
小白水平理解面试经典题目LeetCode 1025 Divisor Game【动态规划】
1025 除数游戏 小艾 和 小鲍 轮流玩游戏,小艾首先开始。 最初,黑板上有一个数字 n 。在每个玩家的回合中,该玩家做出的动作包括: 选择任意 x,使 0 < x < n 和 n % x 0 。将黑板上的数字 n 替换为 n - x 。 此…...
基于单片机的智能宠物喂食器设计
摘要:阐述智能宠物喂食器的实现方式,以STC89C52单片机为核心芯片,控制LCD的显示、语音芯片的启动和步进电机的运行。通过按键设置预设时间,当时间到达预设时间时,语音电路发出提示,步进电机工作,提供食物。此系统解决了主人由于各种原因不在家,使得宠物不能按时吃饭的问…...
探索单片机应用领域:从智能家居到工业自动化
单片机作为一种微型计算机芯片,在智能家居和工业自动化领域有着广泛的应用。以下将从智能家居和工业自动化两个方面分点论述单片机的应用。 智能家居领域: 1. 智能灯光控制: 单片机可以用于控制智能灯光系统,实现灯光的远程控制…...
Nginx介绍和使用
Nginx是一个高性能的HTTP和反向代理web服务器,其使用方法包括安装、配置以及与其他软件的配合使用。 Nginx被广泛认为是一个轻量级、占用资源少、并发处理能力强大的web服务器软件。它不仅可以作为HTTP服务器提供静态内容服务,还可以作为反向代理服务器…...
异步编程——CompletableFuture用法详解
文章目录 前言1. Future 线程池2. 什么是CompletableFuture 前言 我们异步执行一个任务时,需要用线程池Executor去创建,有两种方式: 如果不需要有返回值, 任务继承Thread类或实现Runnable接口;如果需要有返回值&…...
Linux常用命令(不断更新)
cd 切换目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 pwd 显示工作路径 ls -l 显示文件和目录的详细信息 ls -a 列出全部文件 ls -R 连同子目录的内容一起列出 ls -lh 显示权限 cp 复制 mv 移动 rm 删除 cat 查看文件内容 find 文件搜索 文件权限 …...
C++ 浮点数二分 数的三次方根
给定一个浮点数 n ,求它的三次方根。 输入格式 共一行,包含一个浮点数 n 。 输出格式 共一行,包含一个浮点数,表示问题的解。 注意,结果保留 6 位小数。 数据范围 −10000≤n≤10000 输入样例: 1000.00…...
辽宁博学优晨教育科技有限公司视频剪辑培训专业之选
随着数字时代的到来,视频剪辑技术已成为各行各业不可或缺的一项技能。为了满足市场需求,辽宁博学优晨教育科技有限公司(以下简称“博学优晨”)推出了专业的视频剪辑培训课程,旨在为广大学员提供系统、高效的学习机会。…...
数据转换成json格式
// List<SpinfokuZD> xm GetmoreSpinfoku(id); // return JsonConvert.SerializeObject(xm); //将数据转换成json格式 return JsonConvert.SerializeObject(ds); //将数据转换成json格式 spcgjlZD spselld JsonConvert.Deseriali…...
css3的var()函数
css3的var()函数 变量要以两个连字符--(横杆)(减号)为开头 变量可以在:root{}中定义, :root可以在css中创建全局样式变量。通过 :root本身写的样式,相当于 html,但优先级比后者高。 在CSS3中,var()函数是一个用于插入CSS自定义属性ÿ…...
武汉灰京文化展望未来游戏产业,科技创新引领全面升级的游戏体验
随着科技的迅速发展,未来游戏产业的发展将迎来一个全新的纪元。科技创新将引领游戏体验的全面升级,让玩家不再仅仅是通过屏幕与游戏互动,而是能够亲身感受到游戏世界的存在。这种全新的游戏体验将推动游戏产业不断突破创新,吸引更…...
SOLIDWORKS Visualize 界面介绍
现在有越来越多的朋友在工作中选择使用SOLIDWORKS Visualize正版软件,这真是太棒了!这次的主题是小索带大家了解SOLIDWORKS Visualize界面,让更多的朋友快速的熟悉SOLIDWORKS Visualize界面。 【菜单栏】位于界面的顶端,菜单栏包含多个下拉菜…...
负载均衡下webshell连接nginx解析漏洞、sql注入第一关
首先搭建环境找到php较低的版本改一下账号密码输入?id1 正常 输入?id1 报错 .0 输入?id1-- 正常 判断是字符型注入,闭合方式是 id是1后台看是数据表里第一行 查询id1出错前端打印出了报错信息语法错误这里是找到了库名,接下来是找表名这个方法是…...
养老项目技术架构和工程结构
数据层:MySQL、Redis 服务层:SpringBoot、SpringMVC、SpringCache结合Redis的缓存、定时任务XXL-JOB、和swagger配合使用生成接口文档的Knife4j、Lombok、双向通信使用的WebSocket以及Spring Security 接入层使用的nginx——反向代理、负载均衡 前端使…...
免费白嫖一个互联网创业者交流论坛,真香!
先说最重要的 当前小报童39.9,2.23之后会涨价到99.9 现在扫码购买,然后凭借截图找我全款报销,全款报销! 扫码报销,备注“烽狂创客” 下面来看下这个专栏的内容 专栏作者是谁 挽歌,20岁,985大…...
Zilliz Cloud 再发新版本:性能提升超 10 倍,AI 应用开发流程再简化!
Zilliz Cloud 再发新版本! 本次新版本的主要内容包括:大幅提升的向量搜索性能(性能提升 10 倍以上)、企业级数据安全和无缝数据集成。新版本发布后,用户无需自定义代码,便可快速顺畅地完成非结构化数据处理…...
基于SpringBoot的高校竞赛管理系统
基于SpringBoot的高校竞赛管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 个人中心 管理员界面 老师界面 摘要 高校竞赛管理系统是为了有效管理学校…...
【国产MCU】-CH32V307-通用定时器(GPTM)-编码模式与旋转编码器驱动
通用定时器(GPTM)-编码模式与旋转编码器驱动 文章目录 通用定时器(GPTM)-编码模式与旋转编码器驱动1、通用定时器编码模式介绍2、旋转编码器介绍3、驱动API介绍4、编码模式使用示例本文将详细介绍如何使用CH32V307通用定时器的编码模式。 1、通用定时器编码模式介绍 编码器…...
国外高防服务器需要注意哪些方面
随着互联网的快速发展,网络安全问题日益突出,高防服务器逐渐成为企业和个人用户的首选。然而,在选择和使用国外高防服务器时,需要注意以下几个方面,以确保安全和稳定。 一、防御能力 首先,需要考虑国外高防…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...
