DM 的断点续传测试
作者: 大鱼海棠 原文来源: https://tidb.net/blog/4540ae34
一、概述
DM有all、full、incremental三种数据迁移同步方式(task-mode),在all同步模式下,因一些特殊情况,需要变更上游MySQL的数据源IP,一般有如下几种处理方式:
- 放弃已同步的数据,重新用all模式同步(适合数据量比较小的场景,操作简单)
- 记录同步到的位点信息,停掉task和数据源,将同步模式改为incremental并在task配置中指定MySQL示例的位点信息重新拉起任务
task中meta配置下游数据库的 checkpoint 不存在时 binlog 迁移开始的位置; 如果 checkpoint 存在,则以 checkpoint 为准。如果 meta 项和下游数据库的 checkpoint 都不存在,则从上游当前最新的 binlog 位置开始迁移
- 不修改task-mode的情况下,基于检查点断点续传, 本文主要基于该场景测试
二、MySQL环境准备
mysql
set global validate_password_mixed_case_count=0;
set global validate_password_policy='LOW';
set global validate_password_number_count=0;
set global validate_password_special_char_count=0;
set global validate_password_length=4;
alter user root@'localhost' identified by 'dm_test';
配置文件
[mysqld]
datadir=/mysql57/data
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
binlog_format=ROW
log_bin=/mysql57/logbin/logbin
log-error=/mysql57/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
gtid_mode=ON
enforce_gtid_consistency=ON
# 主从使用不同的server_id
server_id=2
# 从库开启binlog记录
log-slave-updates = 1
主从搭建
reset master;
change master to master_host='172.1.1.4', master_user='root', master_password='dm_test', master_port=3306, master_auto_position=1;
start slave;
show slave status\G
三、DM任务创建
1. 创建数据源
创建数据源配置文件
[tidb@vm10-2-103-112 ~]$ cat source-01.yaml
source-id: "mysql-01"
enable-gtid: true from: host: "172.1.1.2" port: 3306 user: "root" password: "dm_test"
上游数据源账户所需权限
上游数据源用户所需权限:
- information_schem和需要同步的表的select权限
- reload权限
- REPLICATION CLIENT、REPLICATION SLAVE
创建数据源
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 operate-source create ./source-01.yaml
查看创建的数据源
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 config source mysql-01
2. 创建同步任务
task配置文件准备
vim task01.yamlname: test1
task-mode: all
shard-mode: "pessimistic" meta-schema: "dm_meta1"
# timezone: "Asia/Shanghai" case-sensitive: false
online-ddl: true
clean-dump-file: true # 是否清理 dump 阶段产生的文件,包括 metadata 文件、建库建表 SQL 文件以及数据导入 SQL 文件
collation_compatible: "loose" # 同步 CREATE 语句中缺省 Collation 的方式,可选 "loose" 和 "strict",默认为 "loose"。"loose" 模式不会显式补充上游缺省的 Collation,"strict" 会显式补充上游缺省的 Collation。当使用 "strict" 模式,但下游不支持上游缺省的 Collation 时,下游可能会报错。
ignore-checking-items: [] target-database:host: "172.1.1.4"port: 4000user: "dm_test"password: "dm_test" block-allow-list: bw-rule-1: do-dbs: ["dm_test.*"]mydumpers: global: threads: 4 chunk-filesize: 64 extra-args: "--consistency auto" loaders: global: pool-size: 16dir: "./dumped_data"import-mode: "logical"on-duplicate-logical: "replace"syncers: global: worker-count: 16 batch: 100 safe-mode: falsesafe-mode-duration: "60s"compact: falsemultiple-rows: false
# ----------- 实例配置 -----------
mysql-instances:-source-id: "mysql-01"block-allow-list: "bw-rule-1"mydumper-config-name: "global"loader-config-name: "global"syncer-config-name: "global"
下游tidb同步用户所需权限:
- 待同步库表的SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER、INDEX权限
- dm元数据库表的 ALL 权限
前置检查
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 check-task ./task01.yaml
创建task
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 start-task ./task01.yaml
查看同步状态
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 query-status test1
四、单实例更换数据源IP
验证不修改task配置,直接更换数据源IP
1. 不修改source-id
Stop 任务和数据源
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 stop-task test1
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 operate-source stop mysql-01
仅修改数据源IP
source-id: "mysql-01"
enable-gtid: true from: host: "120.1.1.115" port: 3306 user: "root" password: "dm_test"
创建数据源和task
tiup dmctl:v7.1.3 --master-addr 172.16.201.4:8261 operate-source create ./source-01.yaml
tiup dmctl:v7.1.3 --master-addr 172.16.201.4:8261 start-task ./task01.yaml
tiup dmctl:v7.1.3 --master-addr 172.16.201.4:8261 query-status test1
验证同步无异常
不改变source-id的情况下,dm会去元数据表中找到断点,进行断点续传,不会重新dump数据
2. 修改source-id
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 stop-task test1
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 operate-source stop mysql-01
修改数据源IP和source-id
source-id: "mysql-02"
enable-gtid: true from: host: "172.1.1.2" port: 3306 user: "root" password: "dm_test"
创建数据源和task
需要修改task01.yaml的数据源
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 operate-source create ./source-01.yaml
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 start-task ./task01.yaml
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 query-status test1
验证同步无异常
修改了source-id的情况下,会触发重新dump全量数据
3. 更换IP期间新增了表
在停掉task和数据源后,模拟MySQL增加表和数据(只修改数据源IP)
mysql> create table t3(id int primary key,b int);
Query OK, 0 rows affected (0.04 sec) mysql> insert into t3 values (1,1);
Query OK, 1 row affected (0.01 sec) mysql> insert into t3 values (2,1);
Query OK, 1 row affected (0.01 sec)
修改数据源IP后,创建task
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 operate-source create ./source-01.yaml
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 start-task ./task01.yaml
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 query-status test1
同步无异常,未dump全量数据
检查点分为针对单表的同步位点和数据源的同步位点,如果存在当前表的位点,则基于位点继续同步,如不存在,基于数据源位点往后同步
五、分片集群修改数据源IP
环境准备
基于单实例的环境,新增MySQL节点来测试
数据源配置
source-id: "mysql-04"
enable-gtid: true from: host: "172.1.1.4" port: 3306 user: "root" password: "dm_test"
task配置
name: test2
task-mode: all
shard-mode: "pessimistic" meta-schema: "dm_meta2"
# timezone: "Asia/Shanghai" case-sensitive: false
online-ddl: true
clean-dump-file: false # 是否清理 dump 阶段产生的文件,包括 metadata 文件、建库建表 SQL 文件以及数据导入 SQL 文件
collation_compatible: "loose" # 同步 CREATE 语句中缺省 Collation 的方式,可选 "loose" 和 "strict",默认为 "loose"。"loose" 模式不会显式补充上游缺省的 Collation,"strict" 会显
式补充上游缺省的 Collation。当使用 "strict" 模式,但下游不支持上游缺省的 Collation 时,下游可能会报错。
ignore-checking-items: [] target-database: host: "172.1.1.4" port: 4000 user: "dm_test" password: "dm_test" block-allow-list: bw-rule-1: do-dbs: ["dm_test"] mydumpers: global: threads: 4 chunk-filesize: 64 extra-args: "--consistency auto" loaders: global: pool-size: 16 dir: "./dumped_data" import-mode: "logical" on-duplicate-logical: "replace" syncers: global: worker-count: 16 batch: 100 safe-mode: false safe-mode-duration: "60s" compact: false multiple-rows: false
# ----------- 实例配置 -----------
mysql-instances: - source-id: "mysql-04" block-allow-list: "bw-rule-1" mydumper-config-name: "global" loader-config-name: "global" syncer-config-name: "global"
创建数据源和任务
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 operate-source create ./source-02.yaml
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 start-task ./task01.yaml
tiup dmctl:v7.1.3 --master-addr 172.1.1.4:8261 query-status test2
重复单实例数据源IP修改过程,验证结果与单实例一致
六、总结
断点续传来源于dm元数据信息(dm_meta库的表记录信息),主要包含以下几点
- task.yaml的name的值
- task.yaml的meta-schema是否改变
- 数据源配置中source-id是否改变
如有其他变更项,可结合检查点进行分析,通过检查点信息是否改变来判断是否可以断点续传
前提:
-
使用
query-status
命令获取当前 binlog replication 处理单元已复制到下游的 binlog 对应的 GTID sets (syncerBinlogGtid
),记为gtid-S
。 -
在将要切换到的 MySQL 实例上使用
SELECT @@GLOBAL.gtid_purged;
获取已经被 purged 的 binlog 对应的 GTID sets,记为gtid-P
。 -
在将要切换到的 MySQL 实例上使用
SELECT @@GLOBAL.gtid_executed;
获取所有已经执行成功的事务对应的 GTID sets,记为gtid-E
。 -
确保满足以下关系,否则不支持将 DM-worker 连接切换到相应的 MySQL 实例:
-
gtid-S
包含gtid-P
(gtid-P
可以为空) -
gtid-E
包含gtid-S
-
七、附加测试
1. 测试一
数据源的配置文件默认 enable-gtid: false
,现验证同步过程中,是否可修改该参数
验证修改后同步正常,在 enable-gtid: false
情况下,检查点会同时携带position信息和gitd信息,修改后可基于位点断点续传
2. 测试二
DM配置文件 extra-args: "--consistency none"
默认值为none,none的官网解释是不做一致性保障
none模式下
2024-06-21T08:23:44.159963Z 18511 Query SELECT @@max_allowed_packet
2024-06-21T08:23:44.160052Z 18511 Query SET time_zone = '+08:00'
2024-06-21T08:23:44.160149Z 18511 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2024-06-21T08:23:44.160242Z 18511 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
2024-06-21T08:23:44.160343Z 18511 Query SHOW MASTER STATUS
2024-06-21T08:23:44.160534Z 18511 Query SHOW SLAVE STATUS
2024-06-21T08:23:44.160731Z 18511 Query SHOW DATABASES 2024-06-21T08:23:44.161956Z 18511 Query SELECT COUNT(1) as c FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='SEQUENCE'
2024-06-21T08:23:44.171027Z 18511 Query SHOW TABLE STATUS FROM `dm_test`
2024-06-21T08:23:44.174675Z 18511 Query SHOW MASTER STATUS
2024-06-21T08:23:44.174826Z 18511 Query SHOW CREATE DATABASE `dm_test`
2024-06-21T08:23:44.174981Z 18511 Query SHOW COLUMNS FROM `dm_test`.`customer`
2024-06-21T08:23:44.175584Z 18511 Query SELECT `c_id`,`c_d_id`,`c_w_id`,`c_first`,`c_middle`,`c_last`,`c_street_1`,`c_street_2`,`c_city`,`c_state`,`c_zip`,`c_phone`,`c_
since`,`c_credit`,`c_credit_lim`,`c_discount`,`c_balance`,`c_ytd_payment`,`c_payment_cnt`,`c_delivery_cnt`,`c_data` FROM `dm_test`.`customer` LIMIT 1
2024-06-21T08:23:44.178285Z 18511 Query SHOW CREATE TABLE `dm_test`.`customer`
2024-06-21T08:23:44.178529Z 18511 Query SHOW INDEX FROM `dm_test`.`customer`
2024-06-21T08:23:44.178805Z 18511 Query EXPLAIN SELECT `c_w_id` FROM `dm_test`.`customer`
2024-06-21T08:23:44.179002Z 18511 Query SHOW INDEX FROM `dm_test`.`customer`
2024-06-21T08:23:44.179269Z 18511 Query SHOW INDEX FROM `dm_test`.`customer`
2024-06-21T08:23:44.179510Z 18511 Query EXPLAIN SELECT `c_w_id` FROM `dm_test`.`customer`
2024-06-21T08:23:44.179748Z 18511 Query SELECT MIN(`c_w_id`),MAX(`c_w_id`) FROM `dm_test`.`customer` 2024-06-21T08:23:44.173952Z 18512 Query SELECT @@max_allowed_packet
2024-06-21T08:23:44.174104Z 18512 Query SET time_zone = '+08:00'
2024-06-21T08:23:44.174281Z 18512 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2024-06-21T08:23:44.174546Z 18512 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
2024-06-21T08:23:44.182494Z 18512 Query SELECT `c_id`,`c_d_id`,`c_w_id`,`c_first`,`c_middle`,`c_last`,`c_street_1`,`c_street_2`,`c_city`,`c_state`,`c_zip`,`c_phone`,`c_
2024-06-21T08:23:45.888538Z 18512 Query SELECT `d_id`,`d_w_id`,`d_name`,`d_street_1`,`d_street_2`,`d_city`,`d_state`,`d_zip`,`d_tax`,`d_ytd`,`d_next_o_id` FROM `dm_test`.`district` ORDER BY `d_w_id`,`d_id`
2024-06-21T08:23:45.889394Z 18512 Query SELECT `h_c_id`,`h_c_d_id`,`h_c_w_id`,`h_d_id`,`h_w_id`,`h_date`,`h_amount`,`h_data` FROM `dm_test`.`history` WHERE `h_w_id` IS NULL OR (`h_w_id` >= 1 AND `h_w_id` < 11)
2024-06-21T08:23:46.281664Z 18512 Query SELECT `i_id`,`i_im_id`,`i_name`,`i_price`,`i_data` FROM `dm_test`.`item` ORDER BY `i_id`
2024-06-21T08:23:46.352202Z 18512 Query SELECT `no_o_id`,`no_d_id`,`no_w_id` FROM `dm_test`.`new_order` ORDER BY `no_w_id`,`no_d_id`,`no_o_id`
none模式使用 SESSION RR
隔离级别 和 START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
来构建一致性视图,不存在非事务引擎表的时候,操作比FTWRL轻量
注意:
- 备份期间有DDL的话,有几率触发锁等待,原因为DM开启了两个
START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */ SESSION
,一个用来看表结构、构造导出执行计划、查看索引等;另外一个用来dump数据,如果期间有DDL,有几率出现等MDL锁的情况(图一) - 不开启FTWRL的话,那么backupmeta的gtid信息有可能是不准的(show master status获取的是当前值,不受
START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
限制)。备份文件 metadata 记录的位点可能比 dumped data 要早,可以开启safe-mode来规避(不能完全避免),DM会自行记录两次show master status
位点信息来判断是否进入safe-mode,以及何时退出safe-mode。
auto模式下
2024-06-21T09:31:56.773773Z 18684 Connect root@vm10-2-103-3 on using SSL/TLS
2024-06-21T09:31:56.776319Z 18684 Query SELECT version()
2024-06-21T09:31:56.776529Z 18684 Query FLUSH TABLES WITH READ LOCK
2024-06-21T09:31:56.778052Z 18684 Query UNLOCK TABLES
2024-06-21T09:31:56.778166Z 18684 Query SET SESSION time_zone = '+08:00'
2024-06-21T09:31:56.778236Z 18684 Quit
2024-06-21T09:31:56.780010Z 18685 Connect root@vm10-2-103-3 on using SSL/TLS
2024-06-21T09:31:56.780202Z 18685 Query SET time_zone = '+08:00'
2024-06-21T09:31:56.780405Z 18685 Query FLUSH TABLES WITH READ LOCK
2024-06-21T09:31:56.783146Z 18686 Connect root@vm10-2-103-3 on using SSL/TLS
2024-06-21T09:31:56.783335Z 18686 Query SET time_zone = '+08:00'
2024-06-21T09:31:56.783421Z 18686 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2024-06-21T09:31:56.783518Z 18686 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
2024-06-21T09:31:56.783611Z 18686 Query SHOW MASTER STATUS
2024-06-21T09:31:56.783755Z 18686 Query SHOW SLAVE STATUS
2024-06-21T09:31:56.786107Z 18686 Query SHOW DATABASES
2024-06-21T09:31:56.786563Z 18686 Query SELECT COUNT(1) as c FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='SEQUENCE'
2024-06-21T09:31:56.916141Z 18686 Query SHOW TABLE STATUS FROM `dm_test`
2024-06-21T09:31:56.919220Z 18687 Connect root@vm10-2-103-3 on using SSL/TLS
2024-06-21T09:31:56.919398Z 18687 Query SET time_zone = '+08:00'
2024-06-21T09:31:56.919483Z 18687 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
2024-06-21T09:31:56.919570Z 18687 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
2024-06-21T09:31:56.919726Z 18685 Query UNLOCK TABLES
相对于mysqldump少了flush table的步骤(mysqldump在执行FTWRL前会执行flush tables),直接执行了FTWRL,第一次做权限探测,第二次执行备份
结论
结合业务应用情况综合考虑,选择auto/none模式
相关文章:
![](https://static.oschina.net/uploads/img/202406/28230004_9pA1.png)
DM 的断点续传测试
作者: 大鱼海棠 原文来源: https://tidb.net/blog/4540ae34 一、概述 DM有all、full、incremental三种数据迁移同步方式(task-mode),在all同步模式下,因一些特殊情况,需要变更上游MySQL的数…...
![](https://img-blog.csdnimg.cn/direct/471f207c3cd9415581a09a7b3dedbd0f.jpeg)
力扣每日一题 6/30 记忆化搜索/动态规划
博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 494.目标和【中等】 题目: 给你一个非负整数数组 nums 和一个…...
![](https://img-blog.csdnimg.cn/direct/e3a8c2c675644e64a8475be519f7a249.png)
图像基础知识入门【图像概念不同图像格式】
图像基础知识入门【图像概念&不同图像格式】 最近有在处理图像转换,因此稍微补足了一下图像相关知识,特在此记录。下面汇总是我根据自己理解和网上查阅资料而来。如有错误,欢迎大家指正。 1 基础概念 像素/分辨率 像素(Pixel)ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
HP服务器基于SNMP-ilo4的硬件监控指标解读
监控易是一款功能全面的IT基础设施监控软件,它通过SNMP协议与HP服务器内置的ilo4远程管理卡进行通信,实现对HP服务器硬件状态的实时监控。本文将针对监控易中基于SNMP-ilo4的HP服务器硬件监控指标进行解读,帮助运维团队更好地理解和应用这些监…...
![](https://www.ngui.cc/images/no-images.jpg)
Android13系统导航栏添加音量加减键按钮功能
不知道为什么拿到芯片原厂发布给我们的Android13系统源码编译后,导航栏没有音量加减键,客户有反馈这个问题,所以特意加了一下,修改记录如下:frameworks/base目录下 commit 9cb2244d61a237cab03c540bfcca6e4fac2bea2c …...
![](https://img-blog.csdnimg.cn/direct/cb0c06083f464519ad8e3f97c35e84da.png#pic_center)
普及GIS知识,推动产业发展
915 GIS节:普及GIS知识,推动产业发展 自2008年起,每年的9月15日被定为“GIS节”,这一特殊的节日由超图首次发起倡议,旨在打造一个普及和传播GIS(地理信息系统)知识的平台,促进大众对…...
![](https://img-blog.csdnimg.cn/img_convert/d96679b3e8dc3993a95688af7c22ad32.png)
第2章-Python编程基础
#本章目标 1,了解什么是计算机程序 2,了解什么是编程语言 3,了解编程语言的分类 4,了解静态语言与脚本语言的区别 5,掌握IPO程序编写方法 6,熟练应用输出函数print与输入函数input 7,掌握Python…...
![](https://img-blog.csdnimg.cn/img_convert/60ab4d1bae9899290a9b06f6f19bab5a.png)
LDO产品的基础知识解析
低压降稳压器 (LDO)是一种用于调节较高电压输入产生的输出电压的简单方法。在大多数情况下,低压降稳压器都易于设计和使用。然而,如今的现代应用都包括各种各样的模拟和数字系统,而有些系统和工作条件将决定哪种LDO最适合相关电路,…...
![](https://img-blog.csdnimg.cn/direct/7dc40ea6e73f48f9bca3ae4b90e4614a.png)
如何利用python画出AHP-SWOT的战略四边形(四象限图)
在企业或产业发展的相关论文分析中,常用到AHP-SWOT法进行定量分析,形成判断矩阵后,如何构造整洁的战略四边形是分析的最后一个环节,本文现将相关代码发布如下: import mpl_toolkits.axisartist as axisartist import …...
![](https://img-blog.csdnimg.cn/img_convert/60e244ad8e9ffe70794083594fc412aa.webp?x-oss-process=image/format,png)
适用于智慧城市、智慧文旅等在线场景的轻量级3D数字人引擎MyAvatar简介
本人研发的国内首个纯面向web应用和小程序的轻量级3D虚拟人引擎MyAvatar。 功能简述 支持3D模型定制(写实或卡通风格均可,人物模型需实现绑定和变形)动画可以内置于模型中,也可以单独以glb或fbx格式导出并动态加载支持readyplay…...
![](https://img-blog.csdnimg.cn/img_convert/76003c0ecbaebe231aee9afa556fa5a2.png)
Excel显示/隐藏批注按钮为什么是灰色?
在excel中,经常使用批注来加强数据信息的提示,有时候会把很多的批注显示出来,但是再想将它们隐藏起来,全选工作表后,“显示/隐藏批注”按钮是灰色的,不可用。 二、可操作方法 批注在excel、WPS表格中都是按…...
![](https://img-blog.csdnimg.cn/direct/7e7b2dca254c4f6b9b74a46e1c6ab7e1.gif#pic_center)
ArtTS系统能力-通知的学习(3.1)
上篇回顾: ArtTS语言基础类库-容器类库内容的学习(2.10.2) 本篇内容: ArtTS系统能力-通知的学习(3.1) 一、 知识储备 1. 基础类型通知 按内容分成四类: 类型描述NOTIFICATION_CONTENT_BASIC_TEXT普通文…...
![](https://www.ngui.cc/images/no-images.jpg)
Apollo9.0 PNC源码学习之Planning模块(三)—— public_road_planner
前面文章: (1)Apollo9.0 PNC源码学习之Planning模块(一)—— 规划概览 (2)Apollo9.0 PNC源码学习之Planning模块(二)—— planning_component 1 planning_interface_base 规划接口基类: planning\planning_interface_base\planner_base\planner.h #pragma once#in…...
![](https://img-blog.csdnimg.cn/direct/49aa1855d16f463090641dda47635d0a.png)
【Elasticsearch】linux使用supervisor常驻Elasticsearch,centos6.10安装 supervisor
背景: linux服务器,CentOS 6操作系统,默认版本python2.6.6,避免安装过多的依赖不升级python 在网上查的资料python2.6.6兼容supervisor版本 3.1.3 安装supervisor 手动在python官网下载supervisor,并上传到服务器 下…...
![](https://img-blog.csdnimg.cn/direct/850e5974e6f440b6ba0ac566b7275275.png)
推荐系统三十六式学习笔记:原理篇.模型融合14|一网打尽协同过滤、矩阵分解和线性模型
目录 从特征组合说起FM模型1.原理2.模型训练3.预测阶段4.一网打尽其他模型5.FFM 总结 在上一篇文章中,我们讲到了使用逻辑回归和梯度提升决策树组合的模型融合办法,用于CTR预估,给这个组合起了个名字,叫“辑度组合”。这对组合中&…...
![](https://img-blog.csdnimg.cn/img_convert/aaa840459092ebddc691d98f536247ca.jpeg)
如何使用mapXplore将SQLMap数据转储到关系型数据库中
关于mapXplore mapXplore是一款功能强大的SQLMap数据转储与管理工具,该工具基于模块化的理念开发,可以帮助广大研究人员将SQLMap数据提取出来,并转储到类似PostgreSQL或SQLite等关系型数据库中。 功能介绍 当前版本的mapXplore支持下列功能…...
![](https://img-blog.csdnimg.cn/direct/c2d9114822db4cc59a6c9c1a8188fe59.png)
JAVA设计模式-大集合数据拆分
背景 我们在做软件开发时,经常会遇到把大集合的数据,拆分成子集合处理。例如批量数据插入数据库时,一次大约插入5000条数据比较合理,但是有时候待插入的数据远远大于5000条。这时候就需要进行数据拆分。数据拆分基本逻辑并不复杂&…...
![](https://img-blog.csdnimg.cn/img_convert/62f6840adee7b7b23071d2ed59d81942.jpeg)
如何使用sr2t将你的安全扫描报告转换为表格格式
关于sr2t sr2t是一款针对安全扫描报告的格式转换工具,全称为“Scanning reports to tabular”,该工具可以获取扫描工具的输出文件,并将文件数据转换为表格格式,例如CSV、XLSX或文本表格等,能够为广大研究人员提供一个…...
![](https://img-blog.csdnimg.cn/direct/f97fa48283b94d9d949b1562afadcf28.png)
ansible自动化运维,(2)ansible-playbook
三种常见的数据格式: XML:可扩展标记语言,用于数据交换和配置 JSON:对象标记法,主要用来数据交换或配置,不支持注释 YAML:不是一种标记语言,主要用来配置,大小写敏感&…...
![](https://img-blog.csdnimg.cn/direct/19806ebfeca046d382dba6006295d4be.png)
一分钟学习数据安全—自主管理身份SSI分布式标识DID介绍
SSI标准化的两大支柱,一个是VC,之前简单介绍过,另一个就是DID。基本层次上,DID就是一种新型的全局唯一标识符,跟浏览器的URL没有什么不同。深层次上,DID是互联网分布式数字身份和PKI新层级的原子构件。 一…...
![](https://www.ngui.cc/images/no-images.jpg)
[单master节点k8s部署]11.服务service
service service是一个固定接入层,客户端 可以访问service的ip和端口,访问到service关联的后端pod,这个service工作依赖于dns服务(coredns) 每一个k8s节点上都有一个组件叫做kube-proxy,始终监视着apiser…...
![](https://www.ngui.cc/images/no-images.jpg)
ES6面试题——箭头函数和普通函数有什么区别
1. this指向问题 <script> let obj {a: function () {console.log(this); // 打印出:{a: ƒ, b: ƒ}},b: () > {console.log(this); // 打印出Window {window: Window, self: Window,...}}, }; obj.a(); obj.b(); </script> 箭头函数中的this是在箭…...
![](https://img-blog.csdnimg.cn/img_convert/e66e0a1404dfd6d516e231d2ef843a3a.png)
WordPress中文网址导航栏主题风格模版HaoWa
模板介绍 WordPress响应式网站中文网址导航栏主题风格模版HaoWa1.3.1源码 HaoWA主题风格除行为主体导航栏目录外,对主题风格需要的小控制模块都开展了敞开式的HTML在线编辑器方式的作用配备,另外预埋出默认设置的编码构造,便捷大伙儿在目前…...
![](https://img-blog.csdnimg.cn/img_convert/7e93029307c4a376c1c90751d7622ade.png)
ThreadPoolExecutor基于ctl变量的声明周期管理
个人博客 ThreadPoolExecutor基于ctl变量的声明周期管理 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor?可以参考: 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog ctl字段的应用 线程池内部使用一个变量ctl维护两个值ÿ…...
![](https://img-blog.csdnimg.cn/direct/e7468eb51dab4b05b3ee845cf4267dbc.png)
运维锅总详解Prometheus
本文尝试从Prometheus简介、架构、各重要组件详解、relable_configs最佳实践、性能能优化及常见高可用解决方案等方面对Prometheus进行详细阐述。希望对您有所帮助! 一、Prometheus简介 Prometheus 是一个开源的系统监控和报警工具,最初由 SoundCloud …...
![](https://www.ngui.cc/images/no-images.jpg)
深入解析Tomcat:Java Web服务器(上)
深入解析Tomcat:Java Web服务器(上) Apache Tomcat是一个开源的Java Web服务器和Servlet容器,用于运行Java Servlets和JavaServer Pages (JSP)。Tomcat在Java Web应用开发中扮演着重要角色。本文将详细介绍Tomcat的基本概念、安装…...
![](https://www.ngui.cc/images/no-images.jpg)
【第9章】MyBatis-Plus持久层接口之SimpleQuery
文章目录 前言一、使用步骤1.引入 SimpleQuery 工具类2.使用 SimpleQuery 进行查询 二、使用提示三、功能详解1. keyMap1.1 方法签名1.2 参数说明1.3 使用示例1.4 使用提示 2. map2.1 方法签名2.2 参数说明2.3 使用示例2.4 使用提示 3. group3.1 方法签名3.2 参数说明3.3 使用示…...
![](https://img-blog.csdnimg.cn/direct/71a52bdae16b465ea73bbb7809104611.png)
一文带你了解乐观锁和悲观锁的本质区别!
文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题࿰…...
![](https://img-blog.csdnimg.cn/direct/7332f974ea6c48719a8c9745c6107588.png)
Android Studio环境搭建(4.03)和报错解决记录
1.本地SDK包导入 安装好IDE以及下好SDK包后,先不要管IDE的引导配置,直接新建一个新工程,进到开发界面。 SDK路径配置:File---->>Other Settings---->>Default Project Structure 拷贝你SDK解压的路径来这,…...
![](https://img-blog.csdnimg.cn/direct/d0e1b40494b645ce8e9a3b77f3ff17d9.jpeg#pic_center)
基于协同过滤的电影推荐与大数据分析的可视化系统
基于协同过滤的电影推荐与大数据分析的可视化系统 在大数据时代,数据分析和可视化是从大量数据中提取有价值信息的关键步骤。本文将介绍如何使用Python进行数据爬取,Hive进行数据分析,ECharts进行数据可视化,以及基于协同过滤算法…...
![](https://img-blog.csdnimg.cn/direct/38c711ab62d046a7b4f9ebc228dd1e43.png)
修复vcruntime140.dll方法分享
修复vcruntime140.dll方法分享 最近在破解typora的时候出现了缺失vcruntime140.dll文件的报错导致软件启动失败。所以找了一番资料发现都不是很方便的处理,甚至有的dll处理工具还需要花钱????,我本来就是为…...
![](https://www.ngui.cc/images/no-images.jpg)
PostgreSQL的系统视图pg_stat_wal_receiver
PostgreSQL的系统视图pg_stat_wal_receiver 在 PostgreSQL 中,pg_stat_wal_receiver 视图提供了关于 WAL(Write-Ahead Logging)接收进程的统计信息。WAL 接收器是 PostgreSQL 集群中流复制的一部分,它在从节点中工作,…...
![](https://img-blog.csdnimg.cn/direct/9b221bc402284c79850eb87d2079f9b7.png)
Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)
文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…...
![](https://img-blog.csdnimg.cn/direct/de5703e751a94b21956e8801c97a1db0.jpeg)
视频号视频怎么保存到手机,视频号视频怎么保存到手机相册里,苹果手机电脑都可以用
随着数字媒体的蓬勃发展,视频已成为我们日常生活中不可或缺的一部分。视频号作为众多视频分享平台中的一员,吸引了大量用户上传和分享各类精彩视频。然而,有时我们可能希望将视频号上的视频下载下来,以下将详细介绍如何将视频号的视频。 方法…...
![](https://img-blog.csdnimg.cn/direct/8dcc58fd58684e07a76a7295e6da4c85.png)
Softmax函数的作用
Softmax 函数主要用于多类别分类问题,它将输入的数值转换为概率分布。 具体来说,对于给定的输入向量 x [x_1, x_2,..., x_n] ,Softmax 函数的输出为 y [y_1, y_2,..., y_n] ,其中: 这样,Softmax 函数的输…...
![](https://img-blog.csdnimg.cn/direct/a7e6ce10b0e54b8d9b2a012117c9279b.gif#pic_center)
cesium 添加 Echarts 图层(空气质量点图)
cesium 添加 Echarts 图层(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <html lan…...
![](https://img-blog.csdnimg.cn/direct/f0ee1c828df1462fa60fbc8611bc6560.jpeg)
Python技术笔记汇总(含语法、工具库、数科、爬虫等)
对Python学习方法及入门、语法、数据处理、数据可视化、空间地理信息、爬虫、自动化办公和数据科学的相关内容可以归纳如下: 一、Python学习方法 分解自己的学习目标:可以将学习目标分基础知识,进阶知识,高级应用,实…...
![](https://img-blog.csdnimg.cn/direct/97315ed78906465b9005d111e24251c5.png)
Nacos-注册中心
一、注册中心的交互流程 注册中心通常有两个角色: 服务提供者(生产者):对外提供服务的微服务应用。它会把自身的服务地址注册到注册中心,以供消费者发现和调用。服务调用者(消费者):调用其他微服务的应用程序。它会向注册中心订阅自己需要的服…...
![](https://img-blog.csdnimg.cn/direct/6322a7afd8844813b94c508fe9d99412.png)
Unity制作一个简单抽卡系统(简单好抄)
业务流程:点击抽卡——>播放动画——>显示抽卡面板——>将随机结果添加到面板中——>关闭面板 1.准备素材并导入Unity中(包含2个抽卡动画,抽卡结果的图片,一个背景图片,一个你的展示图片) 2.给…...
![](https://img-blog.csdnimg.cn/direct/2ef7b349bad04516958520dc3b249445.png)
简单多状态DP问题
这里写目录标题 什么是多状态DP解决多状态DP问题应该怎么做?关于多状态DP问题的几道题1.按摩师2.打家劫舍Ⅱ3.删除并获得点数4.粉刷房子5.买卖股票的最佳时期含手冷冻期 总结 什么是多状态DP 多状态动态规划(Multi-State Dynamic Programming, Multi-St…...
![](https://img-blog.csdnimg.cn/direct/0cd4d3b9e36f41369546d45aadceac11.png)
cpu,缓存,辅存,主存之间的关系及特点
关系图 示意图: ------------------- | CPU | | ------------- | | | 寄存器 | | | ------------- | | | L1缓存 | | | ------------- | | | L2缓存 | | | ------------- | | | L3缓存 | | | ------------- | ----…...
![](https://img-blog.csdnimg.cn/direct/85ce8be6fb80424295b29ee4a15b80ce.gif)
【每日刷题】Day77
【每日刷题】Day77 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 159. 库存管理 III - 力扣(LeetCode) 2. LCR 075. 数组的相对排序 - 力…...
![](https://www.ngui.cc/images/no-images.jpg)
chrome-base源码分析(1)macros模块
Chrome-base源码分析(2)之Macros模块 Author:Once Day Date:2024年6月29日 漫漫长路,才刚刚开始… 全系列文章请查看专栏: 源码分析_Once-Day的博客-CSDN博客 参考文档: macros - Chromium Code SearchChrome base 库详解:工…...
![](https://www.ngui.cc/images/no-images.jpg)
玩转springboot之springboot定制嵌入式的servlet
springboot定制嵌入式的servlet容器 修改容器配置 有两种方式可以修改容器的配置 可以直接在配置文件中修改和server有关的配置 server.port8081 server.tomcat.uri-encodingUTF-8//通用的Servlet容器设置 server.xxx //指定Tomcat的设置 server.tomcat.xxx编写一个EmbeddedSer…...
![](https://img-blog.csdnimg.cn/direct/65672821635f4a0ab3c0be87bcc6e4aa.png)
dell服务器RAID5磁盘阵列出现故障的解决过程二——热备盘制作与坏盘替换过程
目录 背景方案概念全局热备(Global Hot Spare):独立热备(Dedicated Hot Spare): 过程8号制作成热备清除配置制作独立热备热备顶替坏盘直接rebuild 更换2号盘2号热备 注意注意事项foreign状态要先清除配置 背…...
![](https://img-blog.csdnimg.cn/direct/69b7a5575ae247cea51c4deaf5ad40df.png)
Elasticsearch开启认证|为ES设置账号密码|ES账号密码设置|ES单机开启认证|ES集群开启认证
文章目录 前言单节点模式开启认证生成节点证书修改ES配置文件为内置账号添加密码Kibana修改配置验证 ES集群开启认证验证 前言 ES安装完成并运行,默认情况下是允许任何用户访问的,这样并不安全,可以为ES开启认证,设置账号密码。 …...
![](https://img-blog.csdnimg.cn/img_convert/753bbe661495e5ee305533b9b6062a1d.png)
Excel 数据筛选难题解决
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…...
![](https://img-blog.csdnimg.cn/direct/9818fa50f19f458aa709d5ffaed2b754.png#pic_center)
Web实时通信的学习之旅:WebSocket入门指南及示例演示
文章目录 WebSocket的特点1、工作原理2、特点3、WebSocket 协议介绍4、安全性 WebSocket的使用一、服务端1、创建实例:创建一个webScoket实例对象1.1、WebSocket.Server(options[,callback])方法中options对象所支持的参数1.2、同样也有一个加密的 wss:/…...
![](https://img-blog.csdnimg.cn/direct/fdd1f8a0f7c04eb688510543d8824642.gif)
分治精炼宝库-----快速排序运用(⌯꒪꒫꒪)੭
目录 一.基本概念: 一.颜色分类: 二.排序数组: 三.数组中的第k个最大元素: 解法一:快速选择算法 解法二:简单粗暴优先级队列 四.库存管理Ⅲ: 解法一:快速选择 解法二:简单粗…...
![](https://img-blog.csdnimg.cn/direct/84ef9308c598495f9de0123cb391f28d.png)
快速修复mfc100u.dll丢失解决方案
相连文章:SecureCRT的安装破解 [详细过程2024] 有小伙伴向我反馈在打开SecureFX注册机之后显示【mfc100u.dll找不到】重装之后也没有用,这个是因为Microsoft Visual C的运行时组件和库出现了错误,直接选择重新安装就可以 出现这种情况的原因…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL之高可用性(二)
高可用性 避免单点失效 找到并消除系统中的可能失效的单点,并结合切换到备用组件的机制,这是一种通过减少恢复时间(MTTR)来改善可用性的方法。如果你够聪明,有时候甚至能将实际的恢复时间降低至0,但总的来说这很困难。(即使一些…...
![](https://www.ngui.cc/images/no-images.jpg)
Node.js_流Stream
Node.js 中的流(Streams)是一种处理读取和写入数据的抽象接口,它允许你以非阻塞的方式处理数据,这对于处理大文件或网络请求等 I/O 密集型任务非常有用。流主要分为四种类型:可读流(Readable)、…...
![](https://img-blog.csdnimg.cn/direct/e4a74b510a8e4981892d9753e64bb420.png)
Maven列出所有的依赖树
在 IntelliJ IDEA 中,你可以使用 Maven 插件来列出项目的依赖树。Maven 插件提供了一个名为dependency:tree的目标,可以帮助你获取项目的依赖树详细信息。 要列出项目的依赖树,可以执行以下步骤: 打开 IntelliJ IDEA,…...
![](https://www.ngui.cc/images/no-images.jpg)
探索Vim表达式寄存器:提升文本处理的高级技巧
探索Vim表达式寄存器:提升文本处理的高级技巧 Vim是一款功能强大的文本编辑器,它拥有丰富的寄存器系统,用于存储文本、命令等。表达式寄存器是Vim中一种特殊的寄存器,允许用户存储并操作表达式的结果。本文将详细介绍如何在Vim中…...
![](https://img-blog.csdnimg.cn/direct/16cf0c0cb0ad476c99c1fac6f35b535c.jpeg#pic_center)
Spring Cacheable 注解
Spring Cacheable 注解 在Spring框架中,缓存是一种提高应用程序性能的重要技术手段。Cacheable注解是Spring Cache中最常用的注解之一,它用于将方法的返回值缓存起来,以便后续调用时直接从缓存中获取,而不是再次执行方法。本文将…...
![](https://www.ngui.cc/images/no-images.jpg)
opencv简单小项目
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。使用OpenCV可以开发各种简单的小项目,例如: 图像基本操作: 读取和显示图像。调整…...
![](https://www.ngui.cc/images/no-images.jpg)
15万级!2.0T+2.0T双擎+8AT,大5座SUV!
最近汽车圈热度大多聚集在比亚迪汽车,比亚迪汽车新发布了两款全新中级车型,并且定价极低,不少消费者对此非常关注。其实除了比亚迪汽车有新车上市以外,还有一系列的新车也陆续上市了,只不过关注的小伙伴不多。近期广汽传祺GS8的5座豪华版正式迎来上市,厂家指导价15.98万元…...
![](https://www.ngui.cc/images/no-images.jpg)
荣威D5XDMH:长续航大动力,开启混动SUV新篇章
随着汽车市场的日益繁荣,消费者对车辆性能与品质的要求也在不断提升。荣威品牌深谙此道,于5月20日正式推出了其全新力作——荣威D5X DMH插混SUV,不仅为消费者带来了"入门即享长续航大动力"的极致体验,更以超高的性价比,在混动SUV市场掀起了一股"价值革命&q…...
![](https://img-blog.csdnimg.cn/direct/30f0ad7f0e4e43c388fba07027cfc845.png)
【busybox记录】【shell指令】unlink
目录 内容来源: 【GUN】【unlink】指令介绍 【busybox】【unlink】指令介绍 【linux】【unlink】指令介绍 使用示例: 删除文件 - 默认 常用组合指令: 指令不常用/组合用法还需继续挖掘: 内容来源: GUN &#x…...
![](https://www.ngui.cc/images/no-images.jpg)
新人开发新系统,旧人维护旧系统
通常来说旧系统存在一些难以解决的问题,软件架构及逻辑实现可能会有一定的缺陷和复杂度,甚至有些烂系统可以称为”焦油坑“,意思是出现问题难以分析解决,谁来谁陷进去。因此,如果同时存在新系统(可能正在开…...
![](https://www.ngui.cc/images/no-images.jpg)
python——__future__模块
__future__模块是Python的一个特殊内建模块,它提供了一种方式来让程序员在当前版本的Python中使用未来版本的语言特性,从而帮助代码实现向前兼容。这意味着,即使你正在使用的是旧版本的Python,也可以通过导入__future__模块中的某…...