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

Mysql的MHA高可用及故障切换

Mysql的MHA高可用及故障切换

  • MHA
  • 主从复制的单点问题
  • 配置
    • 1. 主从复制
    • 2. MHA高可用
      • 安装MHA的组件
      • 配置无密码认证
      • manager节点配置
      • manager节点上测试
      • 启动连接
    • 故障切换模拟
    • 恢复

MHA

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

主从复制的单点问题

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

  1. master开启二进制日志,并允许从节点复制主节点的二进制日志的内容

  2. 通过vip地址,当主容机之后,vip会自动的飘移到从节点。

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

配置

mysql1 192.168.246.6 主
mysql2 192.168.246.7 从1----主备
mysql3 192.168.246.10 从2
manager节点:u3 192.168.246.9 MHA的组件
vip 192.168.246.100

1. 主从复制

ntpdate ntp.aliyun.com
#时间同步vim /etc/my.cnf#主
log-bin=master-bin
binlog_format=MIXED
log-slave-updates=true
relay_log_recovery=1
#启用从库崩溃或者重启时,会自动尝试从日志当中恢复。#从1
server-id = 2
log-bin=master-bin
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery = 1#从2
server-id = 3
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery = 1#主从
mysql -u root -p123456#从数据库同步使用
CREATE USER 'myslave'@'192.168.246.%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.246.%';			#manager 使用
CREATE USER 'mha'@'192.168.246.%' IDENTIFIED WITH mysql_native_password BY 'manager';
GRANT ALL PRIVILEGES ON *.* TO 'mha'@'192.168.246.%' 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;#主
show master status;

在这里插入图片描述

#从1 从2
mysql -u root -p123456#同步建立
CHANGE master to master_host='192.168.246.6',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=157;start slave;show slave status\G;

在这里插入图片描述

#从库必须全部设置为只读模式
set global read_only=1;

2. MHA高可用

安装MHA的组件

  • NODE :监控每台机器上mysql的状态,传回给manager
  • MANAGER:管理节点,控制mha的状态。
#每个服务器都需要安装MHA依赖的环境
apt install -y libdbd-mysql-perl \
libconfig-tiny-perl \
liblog-dispatch-perl \
libparallel-forkmanager-perl \
libextutils-cbuilder-perl \
libmodule-install-perl \
make#在MHA的manager节点上安装manager组件
cd /opt
tar -xf mha4mysql-manager-0.57.tar.gzcd mha4mysql-manager-0.57
perl Makefile.PL
make && make install
cd /opt
tar -xf mha4mysql-node-0.57.tar.gzcd mha4mysql-node-0.57
perl Makefile.PL
make && make install
#组件安装后在/usr/local/bin 下面会生成几个工具
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

配置无密码认证

#配置所有节点之间的MHA的ssh的通信
#manager节点
ssh-keygen -t rsa
回车
ssh-copy-id 192.168.246.6
ssh-copy-id 192.168.246.7
ssh-copy-id 192.168.246.10#主
ssh-keygen -t rsa
回车
ssh-copy-id 192.168.246.7
ssh-copy-id 192.168.246.10#从
ssh-keygen -t rsa
回车
ssh-copy-id 192.168.246.6
ssh-copy-id 192.168.246.10

manager节点配置

root@u3:/usr/local/bin# cd /opt/mha4mysql-manager-0.57/samples/root@u3:/opt/mha4mysql-manager-0.57/samples# cp -rp /opt/mha4mysql-manager-0.57/samples/scripts  /usr/local/binroot@u3:/opt/mha4mysql-manager-0.57/samples# cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin/root@u3:/opt/mha4mysql-manager-0.57/samples# vim /usr/local/bin/master_ip_failover
#删除全部,复制以下代码
#!/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.233.100';
my $brdc = '192.168.233.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";
}
root@u3:/opt/mha4mysql-manager-0.57/samples# mkdir /etc/masterharoot@u3:/opt/mha4mysql-manager-0.57/samples# ls
conf  scripts
root@u3:/opt/mha4mysql-manager-0.57/samples# cd conf/
root@u3:/opt/mha4mysql-manager-0.57/samples/conf# ls
app1.cnf  masterha_default.cnfroot@u3:/opt/mha4mysql-manager-0.57/samples/conf# cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha/
root@u3:/opt/mha4mysql-manager-0.57/samples/conf# vim /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
#指向到myql的默认位置master_ip_failover_script=/usr/local/bin/master_ip_failover
#切换vip的脚本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.246.7 -s 192.168.246.10 
#从对主监听
shutdown_script=""
ssh_user=root
user=mha[server1]
hostname=192.168.246.6 
#主服务器port=3306[server2]
candidate_master=1   
#声明server2备服务器check_repl_delay=0
#立刻切换hostname=192.168.246.7
#备用主服务器
port=3306[server3]
hostname=192.168.246.10  
#从服务器2
port=3306
root@u3:/opt/mha4mysql-manager-0.57/samples/conf# vim /usr/local/share/perl/5.34.0/MHA/NodeUtil.pm#192行修改添加$str =~ /(\d+)\.(\d+)/;my $strmajor = "$1.$2";my $result = sprintf( '%03d%03d', $1, $2 ) if $str =~ m/(\d+)\.(\d+)/;

在这里插入图片描述

#主需要手动开启虚拟IP
ifconfig ens33:1 192.168.246.100/24#主从设置软连接
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/

manager节点上测试

#测试ssh无密码认证,如果正常最后会输出为successfully
masterha_check_ssh -conf=/etc/masterha/app1.cnf

在这里插入图片描述

#测试mysql主从连接情况,最后出现is OK字样则正常。
masterha_check_repl -conf=/etc/masterha/app1.cnf

在这里插入图片描述

启动连接

#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:执行记录,把执行记录保存到指定的文件。#检查master节点
root@u3:~# masterha_check_status --conf=/etc/masterha/app1.cnf
app1 (pid:4171) is running(0:PING_OK), master:192.168.246.6
#客户端
apt -y install mariadb-server#用vip连接
mysql -h 192.168.246.100 -u root -p123456MySQL [(none)]> create database test1;
Query OK, 1 row affected (0.139 sec)MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+
5 rows in set (0.004 sec)

故障切换模拟

#manager节点打开日志
tail -f /var/log/masterha/app1/manager.log#停止mha
master_stop --conf=/etc/masterha/appl.cnf#主
systemctl stop mysqld
#从1
ip addr

在这里插入图片描述

恢复

#manager节点
vim /etc/masterha/app1.cnf

在这里插入图片描述

原来的主自动删除了
修改并添加如下图的内容
在这里插入图片描述

#原来的主
vim /etc/my.cnflog-bin=master-bin
binlog_format=MIXED
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery=1systemctl restart mysqld#从1
server-id = 2
log-bin=master-bin
log-slave-updates=true
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery = 1mysql -u root -p123456
show master status;

在这里插入图片描述

原主与从2
CHANGE master to master_host='192.168.246.7',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=352;start slave;show slave status\G;
#客户端
root@u4:~# mysql -h 192.168.246.100 -u root -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.30 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+
5 rows in set (0.004 sec)
4 rows in set (0.013 sec)MySQL [(none)]> create database test2;
Query OK, 1 row affected (0.139 sec)MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+
5 rows in set (0.004 sec)

相关文章:

Mysql的MHA高可用及故障切换

Mysql的MHA高可用及故障切换 MHA主从复制的单点问题配置1. 主从复制2. MHA高可用安装MHA的组件配置无密码认证manager节点配置manager节点上测试启动连接 故障切换模拟恢复 MHA master high availability 建立在主从复制基础之上的故障切换的软件系统。 主从复制的单点问题 …...

【ES6复习笔记】箭头函数(5)

简介 本教程将介绍如何在 JavaScript 中使用箭头函数&#xff0c;包括箭头函数的基本语法、特点以及在实际开发中的应用。通过本教程&#xff0c;你将学会如何使用箭头函数来简化代码&#xff0c;提高代码的可读性和简洁性。 箭头函数的基本语法 箭头函数是 ES6 引入的一种新…...

单片机学习笔记——入门51单片机

一、单片机基础介绍 1.何为单片机 单片机&#xff0c;英文Micro Controller Unit&#xff0c;简称MCU 。内部集成了中央处理器CPU、随机存储器ROM、只读存储器RAM、定时器/计算器、中断系统和IO口等一系列电脑的常用硬件功能 单片机的任务是信息采集&#xff08;依靠传感器&a…...

Docker Run使用方法及参数详细说明

Docker Run使用方法及参数详细说明 基本语法常用参数使用示例总结Docker Run是Docker中最基本的命令之一,用于创建并启动一个新的容器。通过Docker Run,用户可以基于指定的镜像创建一个容器实例,并且可以配置容器的各种参数,如网络设置、存储选项等。下面将详细介绍Docker …...

面试场景题系列:设计限流器

首先看看使用API限流器的好处。 •预防由拒绝服务攻击(Denial of Service&#xff0c;DoS)引起的资源耗尽问题。大型科技公司发布的所有API几乎都强制执行某种形式的限流操作。例如&#xff0c;推特限制每个用户每3小时最多发300条推文。谷歌文档API的默认限制是每个用户每60秒…...

【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块

目录 一、温度传感器模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;STS30-DIS-B &#x1f319;引脚分配 &#x1f319;通信 &#x1f319;时钟拉伸&#xff08;Clock Stretching&#xff09; &#x1f319;单次触发模式 &#x1f319;温度数据转…...

网狐旗舰版源码搭建概览

简单的列一下&#xff1a; 服务端源码内核源码移动端源码核心移动端源码AI控制工具源码多款子游戏源码前端、管理后台、代理网站源码数据库自建脚本UI工程源码配置工具及二次开发帮助文档 编译环境要求 VS2015 和 Cocos3.10 环境&#xff0c;支持移动端 Android 一键编译&am…...

vue3中使用vuedraggable实现拖拽

包安装方式 yarn add vuedraggablenext npm i -S vuedraggablenext属性说明 如果下面的属性说明未能完全看明&#xff0c;可以看左边的对应的菜单查看详细说明和例子。 完整例子 <template><div class"itxst"><div><draggable:list"s…...

leetcode 7. 整数反转

class Solution { public: int reverse(int x) { long long n0; if(x0) return 0; while(x%100) { xx/10; } while(x!0) { nn*10x%10; xx/10; } if(n<-2147483648||n>2147483647) return 0; return n; } };...

Nginx单向链表 ngx_list_t

目录 基本概述 数据结构 接口描述 具体实现 ngx_list_create ngx_list_init ngx_list_push 使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx&#xff1a;模块开发与架构解析》 基本概述 Nginx 中的 ngx_list_t 是一个单向链表容器&#xff0c;链表中的每一个节…...

go语言中的字符串详解

目录 字符串的基本特点 1.字符串的不可变性 2.其他基本特点 字符串基本操作 1. 创建字符串 2. 获取字符串长度 3. 字符串拼接 4. 遍历字符串 5. 字符串比较 字符串常用函数 1. 判断子串 2. 查找与索引 3. 字符串替换 4. 分割与连接 5. 修剪字符串 6. 大小写转换…...

Windows脚本清理C盘缓存

方法一&#xff1a;使用power文件.ps1的文件 脚本功能 清理临时文件夹&#xff1a; 当前用户的临时文件夹&#xff08;%Temp%&#xff09;。系统临时文件夹&#xff08;C:\Windows\Temp&#xff09;。 清理 Windows 更新缓存&#xff1a; 删除 Windows 更新下载缓存&#xff0…...

分布式协同 - 分布式事务_2PC 3PC解决方案

文章目录 导图Pre2PC&#xff08;Two-Phase Commit&#xff09;协议准备阶段提交阶段情况 1&#xff1a;只要有一个事务参与者反馈未就绪&#xff08;no ready&#xff09;&#xff0c;事务协调者就会回滚事务情况 2&#xff1a;当所有事务参与者均反馈就绪&#xff08;ready&a…...

永磁同步电机负载估计算法--自适应扩张状态观测器

一、 原理介绍 在线性扩张观测器中&#xff0c;LESO观测器增益ω0 决定了观测器的跟踪速度&#xff0c;ω0 越大&#xff0c;观测器估计精度越高&#xff0c; 抗干扰能力越强&#xff0c;瞬态响应速度加快&#xff0c;过大则会引入高频噪声使系统不稳定。为使观测器在全速域内…...

【HarmonyOS应用开发——ArkTS语言】购物商城的实现【合集】

目录 &#x1f60b;环境配置&#xff1a;华为HarmonyOS开发者 &#x1f4fa;演示效果&#xff1a; &#x1f4d6;实验步骤及方法&#xff1a; 1. 在src/main/ets文件中创建components文件夹并在其中创建Home.ets和HomeProduct.ets文件。​ 2. 在Home.ets文件中定义 Home 组…...

Python二维码生成器qrcode库

要在Python中生成二维码&#xff0c;你可以使用 qrcode 库。这个库非常方便&#xff0c;允许你生成并保存二维码图像。下面是一个简单的示例&#xff0c;展示了如何使用 qrcode 库生成二维码。 首先&#xff0c;你需要安装 qrcode 库。你可以使用 pip 来安装它&#xff1a; s…...

Python:模拟(包含例题:饮料换购 图像模糊 螺旋矩阵)

模拟题&#xff1a;直接按照题目含义模拟即可&#xff0c;一般不涉及算法 注意&#xff1a; 1.读懂题&#xff1a;理清楚题目流程 2.代码和步骤一一对应&#xff1a;变量名&#xff0c;函数名&#xff0c;函数功能 3.提取重复的部分&#xff0c;写成对应的函数&#xff08;…...

git分支与部署环境的关系以及开发规范

一 某金融机构 1.1 分支分类以及作用 1.master master分支为主分支,用于部署生产环境的分支,无论任何时候都要确保master分支的稳定性;master分支由feature及hotfix分支合并,任何时间都不能直接修改代码。目前用于老仿真和老生产,暂时不动。 2.prod 主分支,是master…...

2024最新鸿蒙开发面试题合集(一)-HarmonyOS NEXT Release(API 12 Release)

1. HarmonyOS应用打包后的文件扩展名是? 打包后的文件扩展名为.hap&#xff08;HarmonyOS Ability Package&#xff09;&#xff0c;这是HarmonyOS应用的标准包格式 2. 页面和自定义组件生命周期有哪些? 页面和自定义组件生命周期说明 有Entry装饰器的component组件的生命…...

【mybatis】详解 # 和 $ 的区别,两者分别适用于哪种场景,使用 $ 不当会造成什么影响

# 和 $ 的区别 在MyBatis中&#xff0c;# 和 $ 是用来处理参数的两种不同方式&#xff0c;它们之间有一些重要的区别&#xff1a; # 符号&#xff1a; # 是用来进行参数占位符的&#xff0c;它会进行 SQL 注入防护。使用 # 时&#xff0c;MyBatis 会将参数值进行预处理&…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...