当前位置: 首页 > 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 会将参数值进行预处理&…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...