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

mysql主从复制-使用心得

文章目录

  • 前言
  • 环境
  • 配置
    • 主库
    • 从库
  • STATEMENT
  • binlog
  • gtid
  • log-error
  • DistSQL
  • 总结


前言

mysql 主从复制使用感受,遇到一些问题的整理,也总结了一些排查问题技巧。


环境

mysql5.7

配置

附:千万级数据快速插入配置可以参考:mysql千万数据快速插入-实战

主库

主要配置

server_id=16523
log_bin=/laday/mysql/logbin/log_bin
# 这里为啥使用 STATEMENT 后面细讲
binlog_format=STATEMENT
# 日志过期时间天数
expire_logs_days=7
log-error=/laday/mysql/log/err.log
# 是否开启慢查询日志收集, 1为启用, 0为禁用
slow_query_log=1
# 慢查询日志文件
slow_query_log_file=/laday/mysql/log/slow.log
# 记录慢查询超时时间, 秒
long_query_time=20
tmpdir=/laday/mysql_tmpdir# 开启 gtid, 自动寻找同步点
gtid_mode=ON
enforce_gtid_consistency=ON# 数据库同步白名单(库级)
binlog-do-db=laday# 数据库同步黑名单
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

从库

主要配置

# mysql 启动时是否忽略启动slave,  ON=mysql 启动后slave不会自动启动,需要手动启动。
skip_slave_start=ON
# 忽略同步过程出现所有错误,根据实际情况制定
slave-skip-errors=all
# 开启 gtid
gtid_mode=ON
enforce_gtid_consistency=ON# 同步表白名单 (表级)
replicate_wild_do_table=laday.table_1%
replicate_wild_do_table=laday.table_2%# 同步表黑名单
replicate_wild_ignore_table=laday.%
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=sys.%

STATEMENT

binlog_format=STATEMENT

最开始是使用 ROW 的,但是后面发现从库同步任务一直卡,发现是主库使用了 DELETE 语句删除一个千万级的大表,导致从库是一行一行删除,也就卡si了。
在这里插入图片描述
后面换成:MIXED
还随手测试了一下 delete from 【表名】 看着正常。后面还是卡了, 原来主库有一个语句 delete from 【表名】 where … sysdate() … 删除大表,导致从库又卡了。罪魁祸首->sysdate

最终我决定使用: STATEMENT

binlog

有时候主从复制会有延迟的情况,可以通过 show slave status 查看此刻进度,包括 pos 和 file。

show slave status

在这里插入图片描述
然后带入 pos 和 file 在主库执行如下语句:
在这里插入图片描述
使用SQL查询看不出执行时间,可以使用 mysqlbinlog(在mysql 安装目录里面) 命令:

./bin/mysqlbinlog --start-datetime='2023-11-02 20:00:00' --stop-datetime='2023-11-02 23:00:00'  ./logbin/log_bin.000613 > /home/xyz/temp001.sql./bin/mysqlbinlog --start-position=314712945   --stop-position=315156780  ./logbin/log_bin.000973 > /home/xyz/temp002.sql

在这里插入图片描述

gtid

开启 gtid,方便从库自动寻找续点。
初始化如下:

CHANGE MASTER TO MASTER_HOST='10.111.xxx.xxx',MASTER_PORT=3308,MASTER_USER='账号', MASTER_PASSWORD='密码',master_auto_position=1;

也可以手动定义同步点,如下:

CHANGE MASTER TO MASTER_HOST='10.111.xxx.xxx',MASTER_PORT=3308,MASTER_USER='账号', MASTER_PASSWORD='密码',master_auto_position=0,
master_log_file='log_bin.000694',master_log_pos=194;

log-error

对于很多问题,错误日志会有很多信息提示,不要错过。

DistSQL

DistSQL(Distributed SQL)是 Apache ShardingSphere 特有的操作语言,读写分离用到,在此顺便记录一下。
常用语句:

-- 查询存储单元信息
SHOW STORAGE UNITS;-- 查询所有分片规则
SHOW SHARDING TABLE RULES FROM pddyjc;
-- 查询指定逻辑表的分片规则
SHOW SHARDING TABLE RULE  表 FROM  库;
-- 删除指定逻辑表的分片规则
DROP SHARDING TABLE RULE  表;-- 查询指定数据库中具有广播规则的表
SHOW BROADCAST TABLE RULES FROM  库;
-- 删除指定数据库中具有广播规则的表
DROP BROADCAST TABLE RULE  表  FROM 库;
-- 将 test_br 添加到广播规则中
CREATE BROADCAST TABLE RULE  test_br ;-- 设置单表默认存储单元
SET  DEFAULT single table storage unit = ds_0;-- 创建规则(分库)
-- test_a 以 sjsj 字段分库。
-- allow-range-query-with-inline-sharding=true , 支持 between 等区间关键字跨库查询。
CREATE SHARDING TABLE RULE test_a(
DATANODES("ds_${0..1}.test_a"),
DATABASE_STRATEGY(TYPE="standard",SHARDING_COLUMN=sjsj,
SHARDING_ALGORITHM(TYPE(NAME="inline",PROPERTIES("algorithm-expression"="ds_${ sjsj >='2023-10'?0:1 }","allow-range-query-with-inline-sharding"="true"))))
);-- 创建规则(分表)
-- testtable 以 zzbm 字段分表。
ALTER SHARDING TABLE RULE testtable(
DATANODES("ds_0.testtable_${['0501','0502','0503','0504','0505','0506','0507','0508','0509','0510','0511','0512','0513','0514','0515','0516','0522','0581']}"),
TABLE_STRATEGY(TYPE="standard",SHARDING_COLUMN=zzbm,
SHARDING_ALGORITHM(TYPE(NAME="inline",PROPERTIES("algorithm-expression"="iamskh_ydkh_${ zzbm }"))))
);-- 同时有分库分表
-- 伪语法
CREATE SHARDING TABLE RULE t_order_item (
DATANODES("ds_${0..1}.t_order_item_${0..1}"),
DATABASE_STRATEGY(TYPE="standard",SHARDING_COLUMN=user_id,SHARDING_
ALGORITHM(TYPE(NAME="inline",PROPERTIES("algorithm-expression"="ds_${user_id % 2}
")))),
TABLE_STRATEGY(TYPE="standard",SHARDING_COLUMN=order_id,SHARDING_
ALGORITHM(TYPE(NAME="inline",PROPERTIES("algorithm-expression"="t_order_item_$
{order_id % 2}"))))
);-- 导出当前配置信息
EXPORT DATABASE CONFIGURATION;

总结

实践是检验真理的唯一标准


—————— 但行好事莫问前程,你若盛开蝴蝶自来

相关文章:

mysql主从复制-使用心得

文章目录 前言环境配置主库从库 STATEMENTbinloggtidlog-errorDistSQL总结 前言 mysql 主从复制使用感受,遇到一些问题的整理,也总结了一些排查问题技巧。 环境 mysql5.7 配置 附:千万级数据快速插入配置可以参考:mysql千万数…...

今年副业比主业赚得多...

我是从20年开始接触副业的,主要是在程序员外包平台上接单。从一开始的月入0到几百,到现在每个月稳定有小一万的收入。这个月接了一个比较大的项目,结款之后发现今年的副业已经比主业赚得多了,简直美滋滋~ 今年主业收入8w&#xff…...

debian12安装fail2ban

趁着阿里云活动,买了一台一年99的VPS,装了debian12 rootdebian:~# neofetch _,met$$$$$gg. …...

openpnp - 74路西门子飞达控制板(主控板STM32_NUCLEO-144) - 验证

文章目录 openpnp - 74路西门子飞达控制板(主控板STM32_NUCLEO-144) - 验证概述笔记重复数字IO的问题想法手工实现程序实现确定要摘掉的数字重合线自动化测试的问题测试程序的场景测试程序的运行效果测试程序实现备注END openpnp - 74路西门子飞达控制板(主控板STM32_NUCLEO-14…...

从房地产先后跨界通信、文旅演艺领域,万通发展未来路在何方?

近年来,房地产市场可谓负重前行,各大房企纷纷谋求新出路。 作为中国最早的房企之一,万通发展再次处在转型变革的十字路口。自去年以来,万通发展在转型升级之路上动作频频,可谓忙得不亦乐乎。 大幕落下之时,…...

LLM 中的参数单位

M (Mega) 相比于 Million: 1M (Mega) 在计算机科学中等于 ( 2^{20} )(即 1,048,576)字节。1 Million 等于 ( 10^6 )(即 1,000,000)。因此,1M (Mega) 在数字上略小于 1 Million。 G (Giga) 相比于 Billion&…...

【探索Linux】—— 强大的命令行工具 P.15(进程间通信 —— system V共享内存)

阅读导航 引言一、system V的概念二、共享内存(1) 概念(2) 共享内存示意图(3) 共享内存数据结构 三、共享内存的使用1. 共享内存的使用步骤(1)包含头文件(2)获取键值(ftok函数)(3)创…...

MCU通过KT6368A用SPP透传发送1K左右的数据,手机APP显示是3个包或者4个包,但是我看手册说最大一个包是512,理论应该是两个包吧,请问这正常吗?

一、问题简介 MCU通过KT6368A用SPP透传发送1K左右的数据,手机APP显示是3个包或者4个包,但是我看手册说最大一个包是512,理论应该是两个包吧,请问这正常吗? 详细说明 实际测试的截图如下:使用的是安卓app…...

童装CPC认证检测哪些内容?童装上架亚马逊美国站CPC认证办理

童装是指适合儿童穿着的服装。按年龄分,包括婴儿服装、儿童服装、童装、中年童装、大童服装。CPC认证即儿童产品证书(CPC),主要针对12岁以下的儿童,如玩具、摇篮、童装等。跨境卖家作为“进口商”,想要将中…...

2023鸿蒙预定未来,环境搭建学习

鸿蒙开发基础知识 鸿蒙的基本概念和特点 鸿蒙(HarmonyOS)是华为公司开发的一款全场景分布式操作系统。它的设计目标是为各种设备提供统一的、无缝的用户体验。鸿蒙的核心特点包括以下几个方面: 分布式架构:鸿蒙采用分布式架构&…...

技术架构 - 应用数据分离,应用服务集群架构

前言 上一篇文章介绍了单机架构,由于性能瓶颈,满足不了高访问量,所以演化出了数据分离架构。 这种架构也很简单只是将应用服务和数据库服务分离开来,避免单一架构的资源争夺的情况。 一、 应用数据分离架构 1. 简介 应用服务和…...

YOLO目标检测——树叶检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用:生物多样性研究、林业管理、环境监测和教育科研等方面数据集说明:树叶分类检测数据,真实场景的高质量图片数据,数据场景丰富,总共十个类别。标签说明:使用lableimg标注软件标注,标…...

ubuntu 20通过docker安装onlyoffice,并配置https访问

目录 一、安装docker (一)更新包列表和安装依赖项 (二)添加Docker的官方GPG密钥 (三)添加Docker存储库 (四)安装Docker (五)启动Docker服务并设置它随系…...

Vue 模板语法 v-bind

红色框里面的都是vue的模板。有了模板就得有模板的特殊语法。上面只是简单的双括号加上表达式,这种叫做插值语法,除了这种语法还有其他语法吗? 插值语法实现的功能很单一,就是将指定的值放到指定的位置。还有一种叫做指令语法&am…...

定义宏,字符串、枚举、接口类绑定

在项目中,有一些接口处理类,比如 "value1"对应的类处理使用class Cvalue1 "value2"对应的类处理使用class Cvalue2 使用 X-Macros 技术能够很大程度上帮助我们,减少代码量并且使得代码简洁。 如果我们需要对每一个字…...

盘点30个Python树莓派源码Python爱好者不容错过

盘点30个Python树莓派源码Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1LA4cLunntKW3qO5aok3xAQ?pwd8888 提取码:8888 项目名称 PiCar-raspber…...

「Verilog学习笔记」用优先编码器①实现键盘编码电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 用此编码器实现键盘的编码电路。 注意:编码器的输出是低电平有效,而键盘编码电路输出的是正常的8421BCD码,是高电平有效。因此将编…...

APT攻击的特点及含义

APT(高级持续性威胁Advanced Persistent Threat)攻击是一种高级、持续性的攻击模式,通过先进的攻击手段对特定目标进行长期持续性的网络攻击,一般针对拥有敏感数据的大型企业及重要机构。 APT攻击的特点 一、目标性强 APT攻击并…...

使用html2canvas插件进行页面截屏

使用纯html实现过程 <!DOCTYPE html> <html><head><title>使用html2canvas生成网页截图</title><script src"https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script> </head><body><h1>…...

Java --- JVM的执行引擎

目录 一、执行引擎概述 1.1、执行引擎的工作过程 二、Java代码编译和执行的过程 三、解释器 3.1、解释器工作机制 3.2、解释器分类 3.3、解释器现状 四、JIT编译器 五、热点代码及探测方式 六、方法调用计数器 6.1、热点衰减 七、回边计数器 八、HotSpot VM设置程序…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

Python常用模块:time、os、shutil与flask初探

一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...