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

6、mysql的MHA故障切换

MHA的含义

MHA:master  high  availability,建立在主从复制基础上的故障切换的软件系统。

主从复制的单点问题:

当主从复制当中,主服务器发生故障,会自动切换到一台从服务器,然后把从服务器升格成主,然后继续主从的架构。

  1. master开启二进制日志,并允许从节点复制主节点的二进制日志的内容
  2. 通过vip地址,当主宕机之后,vip会自动的飘移到从节点。
  3. 从节点升级为主服务器,然后从宕机的master保存二进制日志,将更新的内容同步到新主,然后再同步到从节点。

启动MHA实验

我们建立一个主从复制架构,如下:

主:mysql1,192.168.254.31                             VIP:192.168.254.100

从1(主备):mysql2,192.168.254.32

从2:mysql3,192.168.254.33

nginx1:MHA的manager节点,192.168.254.14

zw-virtual-machine:客户端,192.168.254.11

MHA建立在主从复制基础上的,所以首先完成主从复制

1、先检查所以服务器时间是否同步,不同步使用命令:ntpdate ntp.aliyun.com

2、配置三台服务器mysql的主配置文件

配置主服务器mysql的主配置文件,添加如下内容

  • relay_log_recovery=1           #启用之后,从库崩溃或者重启时,会自动尝试从日志当中恢复

配置从1(备)服务器mysql的主配置文件,添加如下内容

  • relay-log=relay-log-bin                               #指定了从服务器上中继日志的文件
  • relay-log-index=slave-relay-bin.index        #中继日志索引文件的名称
  • relay_log_recovery = 1                             #指定了从服务器在启动时,是否执行中继日志的恢                                                                      复操作,保持数据的一致。

配置从2服务器mysql的主配置文件,添加如下内容

三台修改完之后,都要重启mysql服务

3、三台服务器创建mysql用户

创建主从同步用户myslave

CREATE USER 'myslave'@'192.168.233.%' IDENTIFIED WITH mysql_native_password BY '123456';

GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.233.%'; 

创建mha用户

CREATE USER 'mha'@'192.168.233.%' IDENTIFIED WITH mysql_native_password BY 'manager';
GRANT ALL PRIVILEGES ON *.* TO 'mha'@'192.168.233.%' WITH GRANT OPTION;

创建用户,防止从库通过主机名连接不上主库

CREATE USER 'mha'@'master' IDENTIFIED WITH mysql_native_password BY 'manager';
GRANT ALL PRIVILEGES ON *.* TO 'mha'@'master';

CREATE USER 'mha'@'slave1' IDENTIFIED WITH mysql_native_password BY 'manager';
GRANT ALL PRIVILEGES ON *.* TO 'mha'@'slave1';

CREATE USER 'mha'@'slave2' IDENTIFIED WITH mysql_native_password BY 'manager';
GRANT ALL PRIVILEGES ON *.* TO 'mha'@'slave2';

最后刷新权限
flush privileges;

4、开启从服务器同步,建立与主服务器的同步关系

获取主服务器二进制文件名和位置

两台从服务器建立与主服务器的同步,并开启slave以及查看同步状态

5、终端测试是否同步

在主服务器的mysql终端创建库和表,检查是否在2台从服务器上同步

成功的话,将两个从库设置成只读模式,模拟读写分离即可。

6、安装MHA的node节点和manager节点

四台主机安装依赖环境

apt install -y libdbd-mysql-perl \
libconfig-tiny-perl \
liblog-dispatch-perl \
libparallel-forkmanager-perl \
libextutils-cbuilder-perl \
libmodule-install-perl \
make

四台主机都要编译安装mha-node节点

  • NODE  MANAGER:node表示监控每台机器上mysql的状态,传回给manager;manager表示管理节点,控制mha的状态

perl Makefile.PL    #perl编译

make && make install

nginx1上再另外编译安装mha-manager节点

perl Makefile.PL

make && make install

我们可以在/usr/local/bin目录下,查看mha配置文件

  • masterha_check_ssh:检查mha节点之间ssh的配置和通信
  • masterha_manager:manager的启动脚本
  • masterha_check_status:检查mha的运行状态
  • masterha_stop:关闭manager
  • masterha_master_switch:控制故障转移的方式
  • ave_binary_logs:检查,保存,复制master节点的二进制日志
  • apply_diff_relay_logs:识别二进制日志当中的差异部分,把差异部分同步到slave

7、配置所有节点之间的MHA的ssh通信,免密登录彼此之之间的服务器 

也就是说,nginx1与三台mysql服务器进行免密通信,三台mysql服务器之间相互设置免密通信

直接回车即可

注意要输入服务器的密码

8、在nginx1保留权限复制/opt/mha4mysql-manager-0.57/samples/scripts/ 到/usr/local/bin/下

然后将/scripts/master_ip_failover文件复制到/usr/local/bin/下

查看scripts/mha-manager配置文件

  • master_ip_failover:自动切换vip的管理脚本
  • master_ip_online_change:在线切换vip的管理脚本
  • power_manager:故障发生后关闭主机的脚本
  • send_report:故障发生时,发生报警的脚本

9、在nginx1配置master_ip_failover自动切换vip的管理脚本文件

清空所有内容,添加新的脚本如下

#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';

use Getopt::Long;
my (
$command, $ssh_user, $orig_master_host, $orig_master_ip,
$orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);
my $vip = '192.168.254.100';
my $brdc = '192.168.254.255';
my $ifdev = 'ens33';
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";
my $exit_code = 0;
GetOptions(
'command=s' => \$command,
'ssh_user=s' => \$ssh_user,
'orig_master_host=s' => \$orig_master_host,
'orig_master_ip=s' => \$orig_master_ip,
'orig_master_port=i' => \$orig_master_port,
'new_master_host=s' => \$new_master_host,
'new_master_ip=s' => \$new_master_ip,
'new_master_port=i' => \$new_master_port,
);

exit &main();

sub main {
print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";
if ( $command eq "stop" || $command eq "stopssh" ) {
my $exit_code = 1;
eval {
print "Disabling the VIP on old master: $orig_master_host \n";
&stop_vip();
$exit_code = 0;
};
if ($@) {
warn "Got Error: $@\n";
exit $exit_code;
}
exit $exit_code;
}
elsif ( $command eq "start" ) {
my $exit_code = 10;
eval {
print "Enabling the VIP - $vip on the new master - $new_master_host \n";
&start_vip();
$exit_code = 0;
};
if ($@) {
warn $@;
exit $exit_code;
}
exit $exit_code;
}
elsif ( $command eq "status" ) {
print "Checking the Status of the script.. OK \n";
exit 0;
}
else {
&usage();
exit 1;
}
}
sub start_vip() {
`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
### A simple system call that disable the VIP on the old_master
sub stop_vip() {
`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}

sub usage {
print
"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";
}

10、在nginx1创建hma的管理文件,用来申明主从位置

先创建好/etc/masterha目录,复制/opt/mha4mysql-manager-0.57/samples/conf/app1.cnf 到/etc/masterha/下

配置app1.cnf文件,删除里面所有配置,添加代码如下

[server default]
manager_log=/var/log/masterha/app1/manager.log
manager_workdir=/var/log/masterha/app1
master_binlog_dir=/usr/local/mysql/data                        #指向到mysql的默认位置
master_ip_failover_script=/usr/local/bin/master_ip_failover           #切换脚本
master_ip_online_change_script=/usr/local/bin/master_ip_online_change        #在线切换脚本
password=manager
ping_interval=1                     #每一秒检测一次主的状态
remote_workdir=/tmp
repl_password=123456
repl_user=myslave
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.233.22 -s 192.168.233.23                      #从对主监听
shutdown_script=""
ssh_user=root
user=mha

[server1]
hostname=192.168.233.21          #主服务器
port=3306

[server2]
candidate_master=1                    #声明sever2的备服务器
check_repl_delay=0                    #立刻切换
hostname=192.168.233.22         #备用主服务器
port=3306

[server3]
hostname=192.168.233.23         #从服务器2
port=3306

11、在nginx1修改动态库文件

修改/usr/local/share/perl/5.34.0/MHA/NodeUtil.pm,具体修改如下

  $str =~ /(\d+)\.(\d+)/;
  my $strmajor = "$1.$2";
  my $result = sprintf( '%03d%03d', $1, $2 ) if $str =~ m/(\d+)\.(\d+)/;

最后给主服务器,创建ens33的虚拟地址192.168.254.100,并将三台mysql服务器都创建两个软连接

12、在nginx1先检查ssh之间通信情况

masterha_check_ssh -conf=/etc/masterha/app1.cnf

再检查整个mha集群的状态

masterha_check_repl -conf=/etc/masterha/app1.cnf

13、在nginx1启动masterha_manager并检查主服务器状态

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

  • nohup:执行记录,把执行记录保存

masterha_check_status --conf=/etc/masterha/app1.cnf

显示现在master节点是我们主服务器mysql1

14、在客户端zw-virtual-machine登录我们数据库

先下载apt版本MHA,apt -y install mariadb-sever

然后登录我们数据库,显示成功,注意登录要使用我们的VIP

模拟故障切换实验

在上面启动HMA实验的基础上,我们模拟故障切换

首先打开HMA的日志,当我们关闭掉mysql1的mysql服务后,会发现以及切换到了备服务器上

这时候VIP就飘到了mysql2上了,在客户端zw-virtual-machine依然可以登录数据库,表明故障切换成功

故障恢复实验

从节点升级为主服务器后,然后从宕机的master保存二进制日志,将更新的内容同步到新主,然后再同步到从节点。

这时候我们发现/etc/masterha/app1.cnf配置文件,之前的sever1内容已经没了

1、修改app1.cnf配置文件,我们将错就错,把mysql2改成主,mysql1改成备。

2、修改中继日志

修改从mysql1的mysql主配置文件,具体如下

修改主mysql2的mysql主配置文件,具体如下

重启mysql服务

 3、重新构建主从复制架构,将mysql1加入到从架构

这时候就获取主服务器mysql2的二进制文件名和位置

mysql1和mysql3建立与主服务器mysql2的同步

4、在nginx1先检查ssh之间通信情况

masterha_check_ssh -conf=/etc/masterha/app1.cnf

再检查整个mha集群的状态

masterha_check_repl -conf=/etc/masterha/app1.cnf

最后在启动masterha_manager并检查主服务器状态

相关文章:

6、mysql的MHA故障切换

MHA的含义 MHA&#xff1a;master high availability&#xff0c;建立在主从复制基础上的故障切换的软件系统。 主从复制的单点问题&#xff1a; 当主从复制当中&#xff0c;主服务器发生故障&#xff0c;会自动切换到一台从服务器&#xff0c;然后把从服务器升格成主&…...

#error: WinSock.h has already been included解决方案

原因&#xff1a; 在工程中使用了 Boot 库之后&#xff0c;使用了socket、tcp 相关的头文件&#xff0c;在其他地方还是包括了头文件<windows.h>&#xff0c;该头文件内包含了<winsock.h>。导致遇到报错问题&#xff1a;WinSock.h has already been included 解决…...

npm淘宝镜像

通过命令行配置npm的淘宝镜像源和官方镜像源&#xff0c;以及如何安装和使用cnpm来解决安装包卡顿或无法安装的问题。通过设置registry和disturl&#xff0c;配合清理缓存&#xff0c;可以优化npm的下载速度。 1、​官方默认镜像 npm config set registry https://registry.n…...

光谱相机的工作原理

光谱相机的工作原理主要基于不同物质对不同波长光的吸收、反射和透射特性存在差异&#xff0c;以下是其具体工作过程&#xff1a; 一、光的收集 目标物体在光源照射下&#xff0c;其表面会对光产生吸收、反射和透射等相互作用。光谱相机的光学系统&#xff08;如透镜、反射镜…...

安全筑堤,效率破浪 | 统一运维管理平台下的免密登录应用解析

在信息技术迅猛发展的今天&#xff0c;企业运维管理领域正面临着前所未有的复杂挑战。统一运维管理平台作为集中管理和监控IT基础设施的核心工具&#xff0c;其安全性和效率至关重要。免密登录作为一种新兴的身份验证技术&#xff0c;正逐渐成为提升运维管理效率和安全性的重要…...

外包干了27天,技术退步明显。。。。。

时光荏苒&#xff0c;转眼我已是一个拥有近四年功能测试经验的大专生。20年&#xff0c;我满怀激情地通过校招进入湖南某知名软件公司&#xff0c;期待在这里开启我的职业生涯。然而&#xff0c;长时间的舒适环境让我渐渐失去了前进的动力&#xff0c;技术停滞不前&#xff0c;…...

leetcode 面试经典 150 题:合并两个有序数组

链接合并两个有序数组题序号88题型数组解题方法1. 双指针法 &#xff1b;2. 合并排序法难度简单熟练度✅✅✅✅✅ 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 …...

波动理论、传输线和S参数网络

波动理论、传输线和S参数网络 传输线 求解传输线方程 对于传输线模型&#xff0c;我们通常用 R L G C RLGC RLGC 来表示&#xff1a; 其中 R R R 可以表示导体损耗&#xff0c;由于电子流经非理想导体而产生的能量损耗。 G G G 表示介质损耗&#xff0c;由于非理想电介质…...

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

本篇文章将介绍一个新的改进机制——SMFA&#xff08;自调制特征聚合模块&#xff09;&#xff0c;并阐述如何将其应用于YOLOv11中&#xff0c;显著提升模型性能。随着深度学习在计算机视觉中的不断进展&#xff0c;目标检测任务也在快速发展。YOLO系列模型&#xff08;You Onl…...

uniapp登录

第一步整登录 先整个appid APPID和APPSecret https://developers.weixin.qq.com/community/develop/article/doc/000ca4601b8f70e379febac985b413 一个账号只能整一个小程序 正确流程 调用uni.login https://juejin.cn/post/7126553599445827621 https://www.jb51.net/a…...

mysql,数据库主从同步搭建

1.mysql主从同步1.主从同步原理(1)复现binlog日志中的sql语句(2)主服务器启动binlog日志(3)从服务器启动binlog日志,io线程,sql线程2.主从同步结构一主一从一主多从级联复制互为主从(keepalived高可用)3.mysql复制模式异步复制:主服务器处理完sql直接返回给客户端结果半同步复制…...

云途领航:现代应用架构助力企业转型新篇

在数字化转型的浪潮中&#xff0c;现代应用架构为企业带来了灵活性、效率和创新能力。各类服务模型相继出现&#xff0c;为企业提供了强有力的支持&#xff0c;助力其顺利转型。随着技术的快速发展&#xff0c;企业面临的挑战和机遇也在不断演变&#xff0c;这促使它们必须重新…...

redis——岁月云实战

单线程序&#xff0c;基于IO多路复用&#xff0c;基于内存和c语言编写&#xff0c;性能高。redis官方命令 1 数据结构 1.1 key的层级 redis的key可以通过冒号&#xff08;:&#xff09;来划分层级&#xff0c;如下图mms:company:order&#xff0c;但系统中可以看到有不少没有…...

Flink调优----资源配置调优与状态及Checkpoint调优

目录 第 1 章 资源配置调优 1.1 内存设置 1.1.1 TaskManager 内存模型 1、内存模型详解 2、案例分析 1.1.2 生产资源配置示例 1.2 合理利用 cpu 资源 1.2.1 使用 DefaultResourceCalculator 策略 1.2.2 使用 DominantResourceCalculator 策略 1.2.3 使用 DominantRes…...

Java web的发展历史

目录 前言&#xff1a; 一.Model I和Model II 1.Model I开发模式 ​编辑 2.Model II开发模式 二. MVC模式 前言&#xff1a; 该篇文章主要介绍了Java web的发展历史&#xff0c;以及MVC相关内容 一.Model I和Model II 1.Model I开发模式 Model1的开发模式是&#xff…...

面向微服务的Spring Cloud Gateway的集成解决方案:用户登录认证与访问控制

&#x1f3af;导读&#xff1a;本文档详细描述了一个基于Spring Cloud Gateway的微服务网关及Admin服务的实现。网关通过定义路由规则&#xff0c;利用负载均衡将请求转发至不同的后端服务&#xff0c;并集成了Token验证过滤器以确保API的安全访问&#xff0c;同时支持白名单路…...

MongoDB 更新文档

关于MongoDB更新文档的操作&#xff0c;可以通过多种方法实现。以下是一些常用的方法&#xff1a; updateOne() 方法&#xff1a;用于更新匹配过滤器的单个文档。其语法为 db.collection.updateOne(filter, update, options)。其中&#xff0c;filter 用于查找文档的查询条件&a…...

静态路由与动态路由

静态路由和动态路由是网络中两种不同的路由配置方式&#xff0c;它们在网络中的运作方式、配置方法以及适用场景等方面存在显著差异。以下是对两者的详细比较&#xff1a; 一、定义与配置方式 静态路由 定义&#xff1a;静态路由是由网络管理员手动配置的固定路径&#xff0c;…...

leetcode hot二叉树的层序遍历

102. 二叉树的层序遍历 已解答 中等 相关标签 相关企业 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09; # Definition for a binary tree node. # class TreeNode(object): # …...

Windows下ESP32-IDF开发环境搭建

Windows下ESP32-IDF开发环境搭建 文章目录 Windows下ESP32-IDF开发环境搭建一、软件安装二、搭建IDF开发环境2.1 安装VS Code插件&#xff1a;2.2 配置ESP-IDF插件&#xff1a;2.3 下载例程源码&#xff1a; 三、编译和烧录代码四、Windows下使用命令行编译和烧录程序4.1 配置环…...

基于高云GW5AT-15 FPGA的SLVS-EC桥MIPI设计方案分享

作者&#xff1a;Hello,Panda 一、设计需求 设计一个4Lanes SLVS-EC桥接到2组4lanes MIPI DPHY接口的电路模块&#xff1a; &#xff08;1&#xff09;CMOS芯片&#xff1a;IMX537-AAMJ-C&#xff0c;输出4lanes SLVS-EC 4.752Gbps Lane速率&#xff1b; &#xff08;2&…...

【day18】多线程高级应用

day17回顾 在深入探讨模块18之前&#xff0c;让我们回顾一下【day17】中的关键内容&#xff1a; 创建多线程&#xff1a; 继承Thread类&#xff1a; 定义一个类&#xff0c;继承Thread。重写run方法&#xff0c;设置线程任务。创建自定义线程对象。调用start方法&#xff0c;开…...

Python接口自动化测试的实现

1)环境准备&#xff1a; 接口测试的方式有很多&#xff0c;比如可以用工具(jmeter,postman)之类&#xff0c;也可以自己写代码进行接口测试&#xff0c;工具的使用相对来说都比较简单&#xff0c;重点是要搞清楚项目接口的协议是什么&#xff0c;然后有针对性的进行选择&#x…...

nvidia docker, nvidia docker2, nvidia container toolkits区别

背景 在docker容器中用GPU时&#xff0c;查阅了网上许多教程&#xff0c;教程之间概念模糊不清&#xff0c;相互矛盾&#xff0c;过时的教程和新的教程混杂在一起。主要原因是Nvidia为docker容器的支持发生了好几代变更&#xff0c;api发生了不少变化。下面来总结一下各代支持…...

字节跳动Java开发面试题及参考答案(综合篇)

HTTP 与 HTTPS 的区别? HTTP(超文本传输协议)和 HTTPS(超文本传输安全协议)主要有以下区别。 从安全性角度看,HTTP 是明文传输协议,数据在网络中传输时是以原始文本的形式发送的。这就好比在信件传递过程中没有进行密封,任何中间节点(如路由器、代理服务器等)都可以查…...

搭建Elastic search群集

一、实验环境 二、实验步骤 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎Elasticsearch目录文件&#xff1a; /etc/elasticsearch/elasticsearch.yml#配置文件 /etc/elasticsearch/jvm.options#java虚拟机 /etc/init.d/elasticsearch#服务启动脚本 /e…...

深入解析 Spring WebFlux:原理与应用

优质博文&#xff1a;IT-BLOG-CN WebFlux 是 Spring Framework 5 引入的一种响应式编程框架&#xff0c;和Spring MVC同级&#xff0c;旨在处理高并发和低延迟的非阻塞应用。这是一个支持反应式编程模型的新Web框架体系。 顺便一提&#xff0c;Spring Cloud Gateway在实现上是…...

Docker 部署 SpringBoot VUE项目

是一套基于若依的wms仓库管理系统 一、后端部署 后端地址&#xff1a;https://gitee.com/zccbbg/wms-ruoyi/tree/v1/ 1、用IDEA拉代码&#xff0c;并修改API统一后缀 2、复制一个配置文件 application-dev.yaml&#xff0c;并修改里面的mysql与redis配置 3、将打包的jar上传…...

【Java基础面试题031】Java运行时异常和编译时异常之间的区别是什么?

回答重点 主要有三大区别&#xff0c;分别是发生时机、捕获和处理方式和设计意图 1&#xff09;发生时机&#xff1a; 编译时异常&#xff08;Checked Exception&#xff09;&#xff1a;发生在编译阶段&#xff0c;编译器会检查此类异常&#xff0c;程序必须堆这些异常进行…...

常见网络功能概述-主要拆解功能

大家觉得有意义和参考价值记得关注和点赞&#xff01;&#xff01;&#xff01; 一、防火墙介绍 防火墙&#xff08;Firewall&#xff09;是一种网络安全系统&#xff0c;用于监控、过滤和控制进出网络的数据流量。它是一种屏障&#xff0c;通过策略规则来允许、限制或拒绝数…...

Chapter 3-1. Detecting Congestion in Fibre Channel Fabrics

Chapter 3. Detecting Congestion in Fibre Channel Fabrics This chapter covers the following topics: 本章包括以下主题: Congestion detection workflow. Congestion detection metrics. Congestion detection metrics and commands on Cisco MDS switches. Automatic A…...

Day13 用Excel表体验梯度下降法

Day13 用Excel表体验梯度下降法 用所学公式创建Excel表 用Excel表体验梯度下降法 详见本Day文章顶部附带资源里的Excel表《梯度下降法》&#xff0c;可以对照表里的单元格公式进行理解&#xff0c;还可以多尝试几次不同的学习率 η \eta η来感受&#xff0c;只需要更改学习率…...

重温设计模式--5、职责链模式

文章目录 职责链模式的详细介绍C 代码示例C示例代码2 职责链模式的详细介绍 定义与概念 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它旨在将请求的发送者和多个接收者解耦&#xff0c;让多个对象都有机会处理请求&am…...

C语言-08复合类型-结构体

一、结构体 1.结构体struct struct关键字&#xff0c;允许自定义复合数据类型&#xff0c;将不同类型的值组合在一起&#xff0c;这种类型称为结构体类型。 2.使用步骤 第一步&#xff1a;创建或声明结构体 第二步&#xff1a;定义结构体变量 第三步&#xff1a;调用并操作结…...

vue 基础学习

一、ref 和reactive 区别 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><div id"app"><h1>{{Web.title}}</h1><h1&…...

Elasticsearch检索方案之一:使用from+size实现分页

前面两篇文章介绍了elasticsearch以及Kibana的安装&#xff0c;检索引擎以及可视化工具都已经安装完成&#xff0c;接下来介绍下如何使用golang的sdk实现简单的分页查询。 1、下载Elastic官方golang sdk 在讲解elasticsearch检索之前&#xff0c;需要先把golang的环境安装好&…...

Highcharts 饼图:数据可视化利器

Highcharts 饼图&#xff1a;数据可视化利器 引言 在数据可视化的领域中&#xff0c;饼图作为一种经典且直观的图表类型&#xff0c;被广泛应用于各种行业和场景中。Highcharts&#xff0c;作为一个功能强大且易于使用的JavaScript图表库&#xff0c;为我们提供了创建交互式和…...

Docker部署Sentinel

一、简介 是什么&#xff1a;面向分布式、多语言异构化服务架构的流量治理组件 能干嘛&#xff1a;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性 官网地址&#xff1a;https://sentinelguard.io/zh-c…...

后端接口设计

一、基本规范 1.URL设计 应遵循RESTful风格&#xff0c;使用动词名词的方式描述接口的功能。应简洁明了&#xff0c;易于理解和记忆。 2.请求协议及方法 使用HTTPS协议进行数据传输&#xff0c;保证数据在传输过程中的安全性。如无特殊情况&#xff0c;统一使用post方法。 …...

GitLab部署到阿里云服务器上

GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能&#xff0c;能够浏览源代码&#xff0c;管理缺陷和注释。 一、安装 1.创建一…...

GitLab的卸载与重装

目录 一、GitLab的卸载 二、 GitLab的安装与配置 1. 创建安装目录 2. 安装 3. 使用 3.1 初始化 3.2 创建空白项目 ​编辑 3.3 配置SSH 3.3.1 配置公钥 ​编辑 3.3.2 配置私钥 3.4 配置本地git库 一、GitLab的卸载 1. 停止gitlab sudo gitlab-ctl stop 2. 卸载…...

动态住宅IP适合哪些数据采集项目?

在数据采集的广阔天地中&#xff0c;动态住宅IP代理能够灵活地变换身份&#xff0c;帮助我们在网络世界中自由地穿梭。这种代理IP因其住宅性质和动态变化的特点&#xff0c;成为了许多数据采集项目的理想选择。今天&#xff0c;我们就来聊聊动态住宅IP代理适合哪些数据采集项目…...

Git_撤销本地commit_查找仓库中大文件

Gitee普通账号的仓库总空间限制为5G&#xff1b; 右上角头像&#xff0c;下拉—》设置/账号设置—》数据管理下的仓库空间信息即可查看空间限额和各仓库空间大小&#xff1b;Gitee普通账号每次推送大小不能超过100MB&#xff0c;否则会推送失败&#xff1b;当提交大小超过100MB…...

golang windows打包为linux可执行文件

使用go的交叉编译功能 set GOOSlinux set GOARCHamd64然后再执行go build 可能会报异常, 所以贴出我的go env配置仅供参考 go env环境配置 D:\GoWork\src\go-tzv>go env set GO111MODULEauto set GOARCHamd64 set GOBIN …...

源码分析之Openlayers中GeometryCollection类

概述 本文主要介绍GeometryCollection类,GeometryCollection类继承于Geometry类,关于Geometry类,参考这篇文章源码分析之Openlayers中Geometry基类介绍 GeometryCollection类就是一组几何对象的集合. 源码分析 GeometryCollection类源码实现 GeometryCollection类源码实现…...

*【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数

[蓝桥杯 2024 省 B] 好数 好数 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位……&#xff09;上的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位……&#xff09;上的数字是偶数&#xff0c;我们就称之为“好数”。 给定一…...

Redis大Key问题全解析

1. 引言 1.1 什么是Redis大Key&#xff1f; Redis大Key是指单个Key对应的数据量过大&#xff0c;占用过多的内存或导致操作耗时较长的现象。大Key可以是以下几种常见数据类型中的任意一种&#xff1a; String类型&#xff1a;单个字符串的长度过大。List类型&#xff1a;包含…...

一起学Git【第六节:查看版本差异】

git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…...

USB Hub 检测设备

系列文章目录 xHCI 简单分析 USB Root Hub 分析 USB Hub 检测设备 文章目录 系列文章目录一、引言二、hub_eventshub_port_connect_changeusb_alloc_devusb_set_device_statehub_port_initusb_new_device 一、引言 USB Hub 检测设备 一文中讲到&#xff0c;当有 USB 插入时&…...

Python 正则表达式

正则在线实用工具&#xff1a;regex101 正则表达式&#xff08;regular expression&#xff09;是一种用于匹配字符串中字符组合模式的工具。它可以用来检查一个字符串是否匹配某个模式、提取字符串中的信息、替换字符串中的某些部分等。 Python 的 re 模块提供了对正则表达式…...