MySQL主从复制及读写分离(三十四)

news2024/12/30 3:39:13

 

目录

MySQL主从复制

一、概述

1、MySQL Replication优点:

二、MySQL复制类型

1、异步复制(Asynchronous repication)

2、全同步复制(Fully synchronous replication)

3、半同步复制(Semisynchronous replication)

三、MySQL支持的复制方式

1、基于SQL语句的复制

2、基于行的复制

3、混合模式复制

四、MySQL复制的工作过程

五、复制过程的限制

六、部署MySQL主从异步复制

1、配置mysql master服务器

2、创建Replication用户

3、 获得Master DB的相关信息

4、备份Master原有数据

5、在MySQL Slave上的配置 

6、测试复制是否成功 

基于Amoeba读写分离

七、概述

1、主从复制

2、数据同步

3、读写分离规则

八、常见的MySQL读写分离

1、基于程序代码内部实现

2、基于中间代理层实现

九、实验

1、在主机Amoeba上安装java环境

2、安装并配置amoeba,赋予权限

3、配置Amoeba读写分离,两个Slave读负载均衡

3.1、配置无误后,启动Amoeba软件,默认端口是TCP协议8066

3.2、在Client上进行访问测试 

3.3、测试写操作:

总结


MySQL主从复制

一、概述

       MySQL Replication俗称MySQL AB复制、主从复制、主从同步,是MySQL官方推荐的数据同步技术。数据同步基本过程为从数据库会实时去读取主数据库的二进制日志文件,按照日志中记录对从库进行同样的操作,以达到数据同步效果。

1、MySQL Replication优点:

       通过增加从服务器来提高数据库平台的可靠性。在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器地数量,从而调整数据库平台地高性能。

       提高数据安全性,因为数据已复制到从服务器,主数据库异常时,可以将从服务器复制进程终止来达到保护数据完整性地特点。

       在主服务器上生成实时数据,而在从服务器上分析这些数据,从而缓解主服务器地性能压力。

二、MySQL复制类型

1、异步复制(Asynchronous repication)

       MySQL默认地复制是异步地,主库在执行完客户端提交地事务后会立刻将结果返回给客户端,并不关心从库是否已经接受并处理了事务,这样就会有一个问题,主库如果down掉了,此时主上已经提交地事务可能没有传到从库服务器上,如果此时,强制将从提升为主,可能会导致新主上的数据不完整。默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的。

2、全同步复制(Fully synchronous replication)

       指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响,返回客户端的响应速度也会被拖慢。

3、半同步复制(Semisynchronous replication)

        MySQL由Google贡献的补丁才开始支持半同步复制模式,介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接受到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

        半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式

三、MySQL支持的复制方式

1、基于SQL语句的复制

       在主服务器上执行的SQL语句,在从服务器上执行同样的SQL语句,效率比较高。

2、基于行的复制

       主服务器把表的行变化作为事件写入到二进制日志中,主服务器把代表了行变化的事件复制到从服务器中。

3、混合模式复制

       先采用基于语句的复制,一旦发现基于语句无法精确复制时,再采用行。

四、MySQL复制的工作过程

1、在每个事务更新完成数据之前,Master会在二进制日志中记录这些数据的语句,当MySQL将事务串行的写入二进制日志完成后,Master通知存储引擎提交事务并将数据写入磁盘

2、Slave开启一个I/O工作线程,在Master之间建立一个连接,然后开始Binlog dump process,Binlog dump process会从Master的二进制日志中读取操作事件,如果已经跟Master达到一致状态,它会催眠并等待Master产生新的操作事件,I/O线程将这些改变数据的事件写入自己的中继日志。

3、SQL Slave Thread(SQL工作线程)是处理MySQL Replication过程的最后一步。SQL线程从中继日志读取操作事件,重放其中的事件从而更新Slave服务器的数据,使slave与Master中的数据保持一致,只要该线程与I/O线程保持一致,中继日志通常会在OS的缓存中,所以中继日志的开销很小。

五、复制过程的限制

1、MySQL5.6之前的版本复制操作在slave上执行的是串行化的,也就是Master上的并行更新会导致数据复制延迟

2、所有MySQL服务器的版本都要高于3.2,还有一个基本的原则就是从服务器的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本

六、部署MySQL主从异步复制

在所有机器上安装mysql或mariadb

 yum install -y mariadb mariadb-devel mariadb-server

1、配置mysql master服务器

在/etc/my.cnf中修改或者增加如下内容:

vim /etc/my.cnf

 添加内容如下:

server-id=1
log-bin=mysql-binlog
log-slave-updates=true

 

 重启mysql服务器

systemctl restart mariadb

查看监听

netstat -anptu | grep 3306

2、创建Replication用户

grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by '123123.coM';

Replication slave:用于复制性从属服务器(从主服务器中读取二进制日志文件权限)

        这条命令是MySQL中的授权语句,用于给用户 'myslave' 授予在任何数据库和任何表上进行复制操作的权限,并使用密码 '123123.coM' 进行身份验证。该用户是通过 IP 地址范围为 '192.168.1.%' 的连接进行授权的,这意味着只有以该 IP 地址开头的客户端才能使用这个用户进行复制操作。

注:创建完成记得刷新配置 

flush privileges;

3、 获得Master DB的相关信息

show master status;

供slave连接使用,记录下File和Position的值。 

4、备份Master原有数据

       如果在生产环境中Master服务器已经运行一段时间,或者Master服务器上已经存在数据,为了保证所有数据的一致性,需要先将Master目前已有的数据全部导给Slave服务器。

       备份的方法有很多,可以直接备份数据文件,也可以使用mysqldump工具。全新搭建的环境不存在数据备份问题。

mysqldump -uroot -p --all-databases > /root/alldbbackup.sql

将备份的数据传输给从服务器

scp /root/alldbbackup.sql root@192.168.1.101:/root/
scp /root/alldbbackup.sql root@192.168.1.102:/root/

5、在MySQL Slave上的配置 

导入Master的备份脚本(刚刚传输的)

systemctl start mysqld

mysql -uroot -p < /root/alldbbackup.sql

从库连接主库进行测试,如果连接成功说明主库配置成功

mysql -u myslave -p123123.coM -h 192.168.1.100

 修改MySQL从服务器配置文件

vim /etc/my.cnf
server-id=2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index

配置多个从服务器时依次设置server-id号 

 

 重启服务

systemctl restart mariadb

在Slave服务器授权,启动从库,进行主从库数据同步 

stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.100',MASTER_USER='myslave',MASTER_PASSWORD='123123.coM',MASTER_LOG_FILE='mysql-binlog.000001',MASTER_LOG_POS=479;

 这是MySQL中用于配置从服务器的语句,用于指定主服务器的相关信息,以便从服务器可以连接到主服务器并开始复制数据。命令含义如下:

- `CHANGE MASTER TO`: 告诉MySQL服务器要更改从服务器的配置。

- `MASTER_HOST='192.168.1.100'`: 指定主服务器的IP地址或主机名为 '192.168.1.100',表示从服务器将连接到该主服务器。

- `MASTER_USER='myslave'`: 指定从服务器连接主服务器时要使用的用户名为 'myslave',这是在前面的授权命令中创建的用户。

- `MASTER_PASSWORD='123123.coM'`: 指定从服务器连接主服务器时使用的密码为 '123123.coM',这是在前面的授权命令中设置的密码。

- `MASTER_LOG_FILE='mysql-binlog.000001'`: 指定从服务器开始复制的主服务器二进制日志文件名,此处为 'mysql-binlog.000001'。这表示从该文件开始复制数据。

- `MASTER_LOG_POS=479`: 指定从服务器复制的主服务器二进制日志文件的位置,此处为 479。这表示从该位置开始复制数据。

此命令的目的是配置从服务器连接到指定的主服务器,并从指定的二进制日志文件和位置开始复制数据。

如果出现问题

1.使用 find / -iname "auto.cnf" 命令查找你数据库的auto.cnf 配置文件。

find / -iname "auto.cnf"

2.把查询到的文件删除,系统将重新自动分配

rm -rf 查询到的文件目录

3.登录mysql,重启slave,再次验证

stop slave;
start slave;
show slave status\G;

如果还未成功( Slave_I0_Runing:NO )一般是事务回滚造成的:

stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;

 这是MySQL中的一个命令,用于跳过从服务器上的一个事务并继续执行后续的事务。具体来说,该命令的含义是:

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1: 设置全局变量 SQL_SLAVE_SKIP_COUNTER 的值为 1。该变量用于指定从服务器跳过的事务数量。

这个命令通常在从服务器上执行,用于处理复制过程中的错误或跳过某些无法执行的事务。通过将 SQL_SLAVE_SKIP_COUNTER 设置为一个正整数,可以告诉从服务器跳过指定数量的事务,并继续执行后续的事务。

start slave;
flush privileges;

 查看

 参数说明:

CHANGE MASTER TO

MASTER_HOST='master_host_name', #主服务器的IP地址

MASTER_USER='replication_user_name', #主服务器授权的用户

MASTER_PASSWORD='replication_password', #主服务器授权的密码

MASTER_LOG_FILE='recorded_log_file_name', #主服务器二进制日志的文件名

MASTER_LOG_POS=recorded_log_position; #日志文件的开始位置

6、测试复制是否成功 

       在Master服务器上创建一个数据库或者表,到Slave服务器上查看,如果配置成功就可以成功同步。

 主服务器创建数据库

mysql -uroot -p123123
create database a2; 

从服务器登录查看数据库列表  

mysql -u myslave -p123123.coM -h 192.168.1.100
show databases;

 

可以查询到,说明主从数据库创建成功。 主从服务器可以进行通联。


报以下错误的解决方法:

数据不同步解决方法:


 

基于Amoeba读写分离

七、概述

       在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性,高可用还是并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提供数据的高并发负载能力这样的方案来进行部署。

       简单来说,读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。

1、主从复制

       通过主从复制技术,将数据库的写操作(insert、update、delete)全部集中在主服务器上,然后将主服务器的写操作日志传输到从服务器上进行执行,以保持从服务器的数据与主服务器一致。主服务器负责处理写操作,从服务器负责处理读操作。

2、数据同步

       主从服务器之间需要保持数据的一致性。当主服务器上的数据发生变化时,会将变更日志传输给从服务器,从服务器通过执行变更日志来同步数据。

3、读写分离规则

       应用程序通过对数据库连接的配置,将读操作的请求发送到从服务器,将写操作的请求发送到主服务器。这样可以实现读操作的负载均衡和写操作的集中处理。

八、常见的MySQL读写分离

1、基于程序代码内部实现

       在代码中根据select,insert进行路由分类,这类方法也是目前大型生产环境应用最广泛的,优点是性能最好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支,缺点是需要开发人员来实现,运维人员无从下手

2、基于中间代理层实现

       代理一般位于客户端和数据库服务器之间,代理服务器接到客户端请求后通过判断转发到后端数据库,代表性程序:

       (1)mysql-proxy为mysql开发早期开源项目,通过其自带的lua脚本进行SQL判断,虽然是mysql的官方产品,但是mysql官方不建议将其应用到生产环境。

       (2)Amoeba(变形虫)该程序由java语言及逆行开发,阿里巴巴将其应用于生产环境,它不支持事物和存储过程。

        Amoeba(变形虫)项目开源框架于2008年发布一款Amoeba for mysql软件,这个软件致力于mysql的分布式数据库前端代理层,主要为应用层访问mysql的时候充当SQL路由功能,并具有负载均衡,高可用性,SQL过滤,读写分离,可路由到相关的目标数据库,可并发请求多台数据库,通过Amoeba能够完成多数据源的高可用,负载均衡,数据切片的功能,目前Amoeba已经在很多企业的生产线上使用。

九、实验

在配置读写分离前配置各机器ip

MySQL Master IP:192.168.1.100

MySQL Slave1 IP:192.168.1.101

MySQL Slave2 IP:192.168.1.102

MySQL Amoeba IP:192.168.1.103

MySQL Client IP:192.168.1.104

1、在主机Amoeba上安装java环境

JAVA官网下载地址:Java 归档下载 - Java SE 6 |甲骨文中国 (oracle.com)

Amoeba(变形虫)下载地址:阿米巴 - 浏览 SourceForge.net 的文件

因为Amoeba是基于jdk1.5版本开发的,所以官方推荐使用1.5或者1.6版本,高版本不建议使用。

查看Java版本 

java -version

 查看路径

which java

 删除查找出来的Java目录

rm -rf /usr/bin/java

下载Java二进制包并按照提示安装Java环境包

 ./jdk-6u14-linux-x64.bin 

 移动目录,赋予执行权限

mv jdk1.6.0_14/ /usr/local/jdk1.6

chmod +x /usr/local/jdk1.6/

 

2、安装并配置amoeba,赋予权限

mkdir /usr/local/amoeba

tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

chmod -R 755 /usr/local/amoeba/

  设置环境变量java、amoeba

使配置文件生效

source /etc/profile

 检查java版本

java -version

检查环境变量

echo $PATH

3、配置Amoeba读写分离,两个Slave读负载均衡

在Master、Slave1、Slave2服务器中配置Amoeba的访问授权

grant all on *.* to 'test'@'192.168.1.%' identified by '123123.coM';

flush privileges;

编辑amoeba.xml配置文件 

 vim /usr/local/amoeba/conf/amoeba.xml
需要更改的内容,仅供参考!
 30                 <property name="user">amoeba</property>
 31 
 32                 <property name="password">123123.coM</property>

115                 <property name="defaultPool">master</property>
116                 <property name="writePool">master</property>
117                 <property name="readPool">slaves</property>

 

 编辑dbServers.xml配置文件

vim /usr/local/amoeba/conf/dbServers.xml
需要更改的内容,仅供参考!
 21 
 22                         <!-- mysql schema -->
 23                         <property name="schema">test</property>
 24 
 25                         <!-- mysql user -->
 26                         <property name="user">root</property>
 27 
 28                         <!--  mysql password -->
 29                         <property name="password">123123.coM</property>

 46                 <factoryConfig>
 47                         <!-- mysql ip -->
 48                         <property name="ipAddress">192.168.1.100</property>
 49                 </factoryConfig>
 50         </dbServer>
 51 
 52         <dbServer name="slave1"  parent="abstractServer">
 53                 <factoryConfig>
 54                         <!-- mysql ip -->
 55                         <property name="ipAddress">192.168.1.101</property>
 56                 </factoryConfig>
 57         </dbServer>
 58 
 59         <dbServer name="slave2"  parent="abstractServer">
 60                 <factoryConfig>
 61                         <!-- mysql ip -->
 62                         <property name="ipAddress">192.168.1.102</property>
 63                 </factoryConfig>
 64         </dbServer>
 66                 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
 67                         <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
 68                         <property name="loadbalance">1</property>
 69 
 70                         <!-- Separated by commas,such as: server1,server2,server1 -->
 71                         <property name="poolNames">slave1,slave2</property>
 72                 </poolConfig>
 73         </dbServer>

 

 

3.1、配置无误后,启动Amoeba软件,默认端口是TCP协议8066

/usr/local/amoeba/bin/amoeba start &

netstat -anptu | grep 8066

netstat -anpt | grep 3306

3.2、在Client上进行访问测试 

mysql -uamoeba -p123123.coM -h 192.168.1.103 -P 8066

 在MySQL主服务器上创建一个表,会自动同步到各个从服务器上,然后关掉各个服务器上的Slave功能,在分别插入语句测试。

在主服务器上插入内容

insert into a1 values(1,'zn');

从两台从服务器查看 

select * from a1;

查询得知已有数据库,数据表,关闭从服务器服务

  从服务器1      

 从服务器2     

  从客户端查看

select * from a1;

3.3、测试写操作:

在从服务器1上插入一条语句:

insert into a1 values(2,'zm');

 客户端检查验证

 在从服务器2上插入一条语句:

insert into a1 values(3,'zm');

客户端检查验证

 

上述操作对应的是MySQL数据库中的负载均衡

 在客户端插入内容

insert into a1 values(4,'za');

 客户端查看验证

 经过查询,并未发现编号为4的数据

主服务器端进行查看验证

select * from a1;

 

 此类操作对应的正是MySQL数据库中的读写分离

总结

在本次实验中有几个需要注意的地方:

1.在配置amoeba(变形虫)是要注意我们的Java版本是否符合,然后就是安装amoeba,不论是哪个都需要注意路径,在两者操作结束后修改配置文件/etc/profile然后输入source /etc/profile使配置文件生效。

2.然后我们注意要去每个主从服务器里为amoeba用户进行授权,不然无法进行访问

3.测试阶段可以通过slave功能的启停来理解什么事读写分离、负载均衡。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/817039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【构造】CF1758 C

Problem - 1758C - Codeforces 题意&#xff1a; 思路&#xff1a; 思路&#xff1a; #include <bits/stdc.h>#define int long longusing namespace std;const int mxn2e510; const int mxe2e510;int N,x; int ans[mxn];void solve(){cin>>N>>x;if(N%x!0)…

1999-2021年30省平均受教育年限(含原始数据和具体计算过程)

1999-2021年30省平均受教育年限&#xff08;含原始数据和具体计算过程&#xff09; 1、时间&#xff1a;1999-2021年 2、范围&#xff1a;30省&#xff08;剔除西藏&#xff09; 3、计算方式&#xff1a;平均受教育年限&#xff08;未上学人数*0小学人数*6初中人数*9高中人数…

2023年7月第4周大模型荟萃

2023年7月第4周大模型荟萃 2023.7.31版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、Cerebras推出全球最强AI超算 AI芯片初创公司Cerebras Systems和总部位于阿联酋的技术控股集团G42于7月20日宣布&#xff0c;携手打造一个由互联的超…

pytorch学习——正则化技术——权重衰减

一、概念介绍 权重衰减&#xff08;Weight Decay&#xff09;是一种常用的正则化技术&#xff0c;它通过在损失函数中添加一个惩罚项来限制模型的复杂度&#xff0c;从而防止过拟合。 在训练参数化机器学习模型时&#xff0c; 权重衰减&#xff08;weight decay&#xff09;是…

【JavaEE初阶】Servlet(四) Cookie Session

文章目录 1. Cookie && Session1.1 Cookie && Session1.2 Servlet会话管理操作 1. Cookie && Session 1.1 Cookie && Session Cookie是什么? Cookie是浏览器提供的持久化存储数据的机制.Cookie从哪里来? Cookie从服务器返回给浏览器. 服务…

生产中出现CPU或者内存飙升如何进行解决

文章目录 定位CPU标高内存问题JVM参数工具 定位CPU标高 方法1&#xff1a; 1-启动&#xff1a;java -jar 2_cpu-0.0.1-SNAPSHOT.jar 8 > log.file 2>&1 & 2-一般来说&#xff0c;应用服务器通常只部署了java应用&#xff0c;可以top一下先确认&#xff0c;是否是…

Java 错误异常介绍(Exceptions)

1、异常介绍 异常是程序执行期间发生的意外事件。它影响程序指令流&#xff0c;从而导致程序异常终止。 发生异常的原因有很多。其中包括&#xff1a; 无效的用户输入 设备故障 网络连接丢失 物理限制&#xff08;磁盘内存不足&#xff09; 代码错误 打开一个不可用的文…

第四章:C语言的条件分支控制结构

文章目录 1、分支控制if..else...2、分支控制if..else if...else...(嵌套)3、Switch4、goto 1、分支控制if…else… 标准格式&#xff1a;if{}else{} {}里面的语句表示条件是否成立再决定是否执行 2、分支控制if…else if…else…(嵌套) 标准格式&#xff1a;if{}else if{}…

无人机调试笔记——常见参数

无人机的PID调试以及速度相关参数 1、Multicopter Position Control主要是用来设置无人机的各种速度和位置参数。调试顺序是先调试内环PID&#xff0c;也就是无人机的速度闭环控制&#xff0c;确认没有问题后再进行外环位置控制&#xff0c;也就是定点模式控制。 2、调试的时…

CentOS7.3 安装 docker

亲测、截图 阿里云服务器 文章目录 更新源2345 启动开机自启 更新源 sudo yum update -y2 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4 sudo yum …

一款介于无代码和低代码之间的数据可视化平台

一、前言 随着企业数字化拉开序幕&#xff0c;低代码( Low Code Development)开发的概念开始火起来&#xff0c;即用少量的代码就能开发复杂的业务系统。然后更进一步&#xff0c;由此又催生出一个新的概念&#xff1a;无代码开发( No Code Development)。 低代码和无代码开发平…

【C++从0到王者】第十四站:list基本使用及其介绍

文章目录 一、list基本介绍二、list基本使用1.尾插头插接口使用2.insert接口使用3.查找某个值所在的位置4.erase接口使用以及迭代器失效5.reverse6.sort7.merge8.unique9.remove11.splice 三、list基本使用完整代码 一、list基本介绍 如下所示&#xff0c;是库里面对list的基本…

自然语言处理学习笔记(一)————概论

目录 1.自然语言处理概念 2.自然语言与编程语言的比较 &#xff08;1&#xff09;词汇量&#xff1a; &#xff08;2&#xff09;结构化&#xff1a; &#xff08;3&#xff09;歧义性&#xff1a; &#xff08;4&#xff09;容错性&#xff1a; &#xff08;5&#xff0…

【143. 重排链表】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不…

Redis (一)消息订阅和发送测试

〇、redis 配置 1、概况 本文基于 Ubuntu20.04 云服务器配置Redis&#xff0c;且在本地进行 Redis 测试。 2、目录概况 一、配置文件 位于 /config/app.yml 中&#xff0c;目的用于 Redis 初始化&#xff1a; redis:addr: "39.104.**.28:6379"password: "p…

盛元广通实验室教学仪器设备综合信息管理系统LIMS

实验室作为学生以及教师进行科研教学环境&#xff0c;对于实验室设备的使用情况、维护、借还、台账管理、盘点、报废等需要得到有效的管理&#xff0c;以促进科研教学工作的高质量开展&#xff0c;介于传统手动管理方式越发不能满足现代科研的飞速发展需要&#xff0c;实验室的…

【element-plus】 table表格每行圆角解决方案 element也通用

系列文章目录 【Vue3ViteTselement-plus】使用tsx实现左侧栏菜单无限层级封装 前言 我们在使用element-plus或element 的table时是否有时UI给到的UI效果是如下面这样的&#xff0c;但是我们翻遍了组件库的文档 调整了很多次样式 发现在 左右侧栏固定的时候 普通的方法是完全…

二阶阻尼弹簧系统的simulink仿真(s函数)

文章目录 前言一.非线性反步法1.原系统对应的s函数脚本文件&#xff08;仅修改模板的初始化函数、导数函数和输出函数三个部分&#xff09;2.控制器对应的s函数脚本文件&#xff08;仅修改模板的初始化函数和输出函数两个部分&#xff09;3.其他参数脚本文件4.输入5.输出&#…

【Git系列】分支操作

&#x1f433;分支操作 &#x1f9ca;1. 什么是分支&#x1f9ca;2. 分支的好处&#x1f9ca;3. 分支操作&#x1fa9f;3.1 查看分支&#x1fa9f;3.2 创建分支&#x1fa9f;3.3 切换分支 &#x1f9ca;4. 分支冲突&#x1fa9f;4.1 环境准备&#x1fa9f;4.2 分支冲突演示 &am…

NPP及碳源、碳汇模拟,python蒸散发与植被总初级生产力估算

CASA模型是一个基于过程的遥感模型(Potteret al&#xff0c;1993&#xff1b;Potter et al&#xff0c;1994)&#xff0c;耦合了生态系统生产力和土壤碳、氮通量&#xff0c;由网格化的全球气候、辐射、土壤和遥感植被指数数据集驱动。模型包括土壤有机物、微量气体通量、养分利…