Maxscale读写分离实施文档

news2025/8/6 18:55:26

Maxscale介绍

MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。
使用Maxscale无需对业务代码进行修改,其自带的读写分离模块,能够解析SQL语句,从而把对应的请求转发到对应的服务器上。
注:MaxScale需要MariaDB至少 10.3.1 以上版本的支持,版本过低可能导致部分功能无法使用。
MariaDB MaxScale 2.2版本,在支持原有读写分离的基础上,又添加了主从复制集群管理功能,
MariaDB MaxScale 2.5版本,实现了GUI图形化、可视化监控管理web页面。

环境说明

数据库:Mariadb10.3.37
Maxscale:2.5.4

名称操作系统IP备注
Maxscale代理Centos7192.168.1.203可以和应用服务器,也可由单独配置一台服务器
MasterCentos7192.168.1.154读写
SlaveCentos7192.168.1.161只读

架构图


客户端通过Maxscale把请求转发给Master或者Slave,如果Master连接出现故障,则把请求转发给Slave

配置主从服务器

在MariaDB中,只要开启了binlog,所有的DML和DDL都会形成事件并且写入其中,并且每一件事务都会生成全局唯一的事务ID:Global transaction ID(全局事务ID),简称GTID。
GTID是属于全局唯一,所以无需过多配置,从机可通过GTID同步主机binlog文件,从而形成主从架构,在实际生产环境中能够提高数据库容错率;

配置Master(192.168.1.154)服务器

Master-mariadb配置文件

复制配置文件到**/etc/my.cnf.d/**目录下

#########################
#     配置binlog选项    #
#########################

# 开启binlog
log-bin

# 开启副本记录binlog日志
log-slave-updates = ON

# binlog记录方式为行
binlog_format=ROW

# 30天内清理binlog日志
expire_logs_days = 30

# 统一主从复制LOG名称,包含如下:log-bin, log-bin-index, relay-log, relay-log-index, general-log-file, 
# log-slow-query-log-file, --log-error-file, and pid-file.
log-basename = master1

# 开启记录binlog的库名,多个用,分割
# binlog-do-db = test

#########################
# 以下为GTID主从复制选项#
#########################

# 开启半同步
# 10.3以插件方式安装
plugin-load = "rpl_semi_sync_master=semisync_master.so"
rpl-semi-sync-master-enabled = 1

# 10.3之后集成到了系统内,只需开启插件即可
plugin_load_add = semisync_master
rpl_semi_sync_master_enabled = ON
rpl_semi_sync_master_wait_point=AFTER_SYNC # 开启半同步

# 配置Master,ServerID,不能和Slave重复
server-id = 100

# 开启Master记录Slave binlog日志,前提Slave需要开启binlog
log-slave-updates=1

# 开启GTID严格模式
gtid_strict_mode=1

查看Master同步是否成功

SHOW VARIABLES LIKE 'rpl_semi_sync_master_enabled';
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON    |
+------------------------------+-------+
1 row in set (0.001 sec)

配置Master监控账户

监控用于监控节点服务器工作状态,出现故障时可以自动迁移

CREATE USER 'maxscale_monitor'@'%' IDENTIFIED BY 'maxscale123456';
GRANT RELOAD,SUPER,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'maxscale_monitor'@'%';

# 查看授权
SHOW GRANTS FOR 'maxscale_monitor'@'%';

配置Master路由账户

Maxscale需要对传入的客户请求进行后端身份验证,所以要创建一个特殊账户做验证。在代理服务器执行如下命令:

CREATE USER 'maxscale_route'@'%' IDENTIFIED BY 'maxscale123456';
GRANT SELECT ON mysql.user TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.db TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.tables_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.columns_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.procs_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.proxies_priv TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.roles_mapping TO 'maxscale_route'@'%';
GRANT SHOW DATABASES ON *.* TO 'maxscale_route'@'%';
GRANT SELECT ON mysql.* TO 'maxscale_route'@'%';

# 查看授权
SHOW GRANTS FOR 'maxscale_route'@'%';

制作、恢复Slave备份

制作Master备份,用于恢复到Slave服务器,制作备份推荐使用**MariaDB-backup,**这样制作和恢复速度比较快,能节省非常多的时间

安装MariaDB-backup

在Master和Slave安装MariaDB-backup

yum install MariaDB-backup

开始创建Slave备份

在Master执行

# 创建备份文件
mariabackup --backup --target-dir=/backup/dbbak --user=root --password=test123456

# 生成预恢复文件
mariabackup --prepare --target-dir=/backup/dbbak

参数说明:
–backup:创建指定动作为备份
–target-dir=/backup/dbbak:指定Master全备文件存放目录
–user=root --password=test123456:指定数据库用户名和密码
–prepare:指定动作为预恢复
–target-dir=/backup/dbbak :指定刚才创建的全备存放目录

复制备份文件到Slave从机

scp -r /backup/dbbak root@192.168.1.161:/home/user

恢复Master备份到Slave从机

恢复时需要停掉Slave mariadb服务,并且清空mariadb数据目录
在Slave执行

# 停止服务
systemctl stop mariadb

# 清空目录
 rm -rf /home/mysql/*

锁Master库

在恢复从库时,为避免主库产生事务,导致GTID改变,需要锁住主库
在Master执行

FLUSH TABLES WITH READ LOCK;

开始Slave恢复

在Slave执行

mariabackup --copy-back --target-dir=/home/user/dbbak

#重新授权
chown -R mysql:mysql /home/mysql/

#启动服务
systemctl start mariadb

–copy-back : 指定动作为恢复备份,恢复时保留备份文件
–target-dir:指定恢复文件目录

解锁Master

待Slave恢复完成后,解锁Master

UNLOCK TABLES;

配置Slave(192.168.1.161)服务器

Master-mariadb配置文件

复制配置文件到**/etc/my.cnf.d/**目录下

#########################
#     配置binlog选项    #
#########################

# 开启binlog
log-bin

# 开启副本记录binlog日志
log-slave-updates = ON

# binlog记录方式为行
binlog_format=ROW

# 30天内清理binlog日志
expire_logs_days = 30

# 统一主从复制LOG名称,包含如下:log-bin, log-bin-index, relay-log, relay-log-index, general-log-file, 
# log-slow-query-log-file, --log-error-file, and pid-file.
log-basename = master1

# 开启记录binlog的库名,多个用,分割
# binlog-do-db = test

#########################
# 以下为GTID主从复制选项#
#########################

# 开启半同步
# 10.3以插件方式安装
plugin-load = "rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-slave-enabled = 1

# 10.3之后集成到了系统内,只需开启插件即可
# 从库开启半同步
plugin_load_add = semisync_slave
rpl_semi_sync_slave_enabled=ON

# 配置ServerID,不能和master重复
server-id = 200

# 开启Master记录Slave binlog日志,前提Slave需要开启binlog
log-slave-updates=1

# 开启GTID严格模式
gtid_strict_mode=1

# 开启Slave并行复制
slave_parallel_threads=4

# 开启Slave从Master读取binlog时进行完整校验
master-verify-checksum=1

# 只允许读,不允许写
read only=1

配置Slave同步监控账户

由于主备配置文件已包含,此步可以掠过

配置Slave路由账户

由于主备配置文件已包含,此步可以掠过

查看Slave同步是否成功

出现**rpl_semi_sync_slave_enabled:ON**,说明开启成功

SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| rpl_semi_sync_slave_enabled | ON    |
+-----------------------------+-------+
1 row in set (0.001 sec)

配置同步信息

配置同步信息,首先要获取Master的binlog名称、position点和最后一次的GTID号,可以在上面的备份文件**xtrabackup_info**中获取到

# 在从库执行
cat /home/mysql/xtrabackup_info

# 找到如下选项就是
binlog_pos = filename 'master1-bin.000009', position '598081860', GTID of the last change '0-100-2622'

在Slave配置同步Master的信息

# 登录mysql
mysql -u root -p

# 在从库mysql执行
CHANGE MASTER TO
  MASTER_HOST='192.168.1.154',
  MASTER_USER='maxscale_monitor',
  MASTER_PASSWORD='maxscale123456',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master1-bin.000011',
  MASTER_LOG_POS=598081860,
  MASTER_USE_GTID=slave_pos,
  MASTER_CONNECT_RETRY=10;

启动Slave

# 登录mysql
mysql -u root -p

# 启动从机
START SLAVE;

# 查看从机工作状态
SHOW SLAVE STATUS \G

测试同步

测试数据增删改查

如果出现如下两个选项,说明Slave同步Master成功

# 出现如下两个选项说明启动成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

数据同步需要一些时间,长短关系到网速以及主库和从库之间的binlog数据偏移量;
在Master查看

MariaDB [mysql]> SHOW MASTER STATUS \G
*************************** 1. row ***************************
            File: master1-bin.000011
        Position: 64952
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.000 sec)

在Slave查看
如果
Master_Log_File: master1-bin.000011
Read_Master_Log_Pos: 64952
和主库里的一致,说明同步正常,接下来可以进行测试了

MariaDB [(none)]> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.1.154
                   Master_User: maxscale_monitor
                   Master_Port: 3306
                 Connect_Retry: 10
               Master_Log_File: master1-bin.000011
           Read_Master_Log_Pos: 64952

在主库表里进行增删改查,查看从库表里数据是否正常,并且上面的参数主库和从库一致说明同步完全正常;

测试同步Binlog同步

在网上看到在配置Slave同步信息时,不要设置Master_Log_File,原因是:当主服务器切换记录binlog文件时,从服务器将无法切换到对应的文件,如果需要自动配置从库切换Binlog,则需要将Master_Log_File参数留空即可。

CHANGE MASTER TO MASTER_HOST='192.168.1.154',
MASTER_PORT=3306,
MASTER_USER='maxscale_monitor',
MASTER_PASSWORD='maxscale123456',
# MASTER_LOG_FILE='master1-bin.000011', # 此参数不要设置
MASTER_USE_GTID=slave_pos,
MASTER_CONNECT_RETRY=10;

在Master执行,切换binlog和查看binlog

# 手动切换LOG
MariaDB [vipshop]> FLUSH LOGS;
Query OK, 0 rows affected (0.015 sec)

#查看Binlog名称和检查点
MariaDB [mysql]> SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000012 |      389 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

在Slave执行查看是否和Master一致

MariaDB [(none)]> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.1.154
                   Master_User: maxscale_monitor
                   Master_Port: 3306
                 Connect_Retry: 10
               Master_Log_File: master1-bin.000012
           Read_Master_Log_Pos: 389

后再次在主库执行增删改查,查看从库和主库数据是否一致,如果一致则说明同步正常;

报错简单排查

如果未提示error connecting to master 'maxscale_monitor@192.168.1.154:3306,请做如下检查:

  1. 防火墙是否关闭或者允许3306端口通行;
  2. 密码是否正确;
  3. 授权是否正确;

详细排错可以查看这篇文章:https://www.yingsoo.com/news/database/69306.html

安装maxscale

添加mariadb源

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-maxscale-version="2.5"

安装

如果maxscal和应用服务器一台,在应用服务器上安装即可,如果maxscale是单独的一台,在maxscal上安装即可

yum install maxscale -y

maxscale配置文件

maxscale的配置文件在/etc/根目录下
首先复制一份保留个备份

cp /etc/maxscale.cnf /etc/maxscale.cnf.bak

前面的英文注释为官方文档,不明白的可以去官方文档查看

# MaxScale documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-25/

# Global parameters
#
# Complete list of configuration options:
# https://mariadb.com/kb/en/mariadb-maxscale-25-mariadb-maxscale-configuration-guide/

# 全局模块
# 开启maxscale线程,默认为1,最大为100;
# 如果maxscal为单独服务器,建议设置为auto;
# 如果maxscal和其他应用在同一服务器,建议设置为1,根据需求逐步添加;
[maxscale]
threads=1

# 开启maxscale记录info信息
log_info=1

# 关闭debug调试信息
# log_debug=0

# 关闭消息扩展
log_augmentation=0

# Server definitions
#
# Set the address of the server to the network
# address of a MariaDB server.
#
# 主机模块
# 定义主从服务器连接信息,有几台就配置几台
# 连接方式可以为ip:port或者使用socket

[server1]
type=server
address=192.168.1.154
# 注意,socket 与 IP:PORT 冲突,只能选其一。同时需要注意MariaDB的GRANT配置。
# socket=/var/lib/mysql/mysql.sock
port=3306
protocol=MariaDBBackend

[server2]
type=server
address=192.168.1.161
port=3306
protocol=MariaDBBackend

# Monitor for the servers
#
# This will keep MaxScale aware of the state of the servers.
# MariaDB Monitor documentation:
# https://mariadb.com/kb/en/maxscale-25-monitors/

# 配置故障转移模块
[MariaDB-Monitor]
type=monitor
module=mariadbmon
# 监控的服务器
servers=server1,server2
# 配置监控账号和密码
user=maxscale_monitor
password=maxscale123456
# 心跳检测,2000秒监测一次,也就是2秒
monitor_interval=2000

# 启用自动故障转移,false为关闭,需要人工执行命令去做故障转移,通常为true
auto_failover=true
# 启用故障恢复后自动加入集群,false为关闭,需要人工在从库执行CHANGE MASTER TO NEW_MASTER, MASTER_USE_GTID = current_pos命令,通常为true
auto_rejoin=true

# Service definitions

# ReadConnRoute documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-25-readconnroute/

# 服务模块
# ReadWriteSplit documentation:
# https://mariadb.com/kb/en/mariadb-maxscale-25-readwritesplit/

# 读写分离模块
# 基于statement SQL解析的方式
[Read-Write-Service]
type=service
router=readwritesplit
router_options=master,slave
servers=server1,server2
# 路由账号
user=maxscale_route
password=maxscale123456

# root用户远程访问
# enable_root_user=1

# 允许主服务器读,用于服务器少的情况下
master_accept_reads=true

# 路由模块处理主服务器故障时的方法,默认主库出现故障时,此时有写请求,maxscale会断开连接;
# 值为error_on_write,当主库出现问题无法写入时,会提示客户端目前处于只读模式,
master_failure_mode=error_on_write
# 和上个参数配合,当主库恢复正常时,客户端有写请求,恢复正常
master_reconnection=true

# 启用因果读取
# 例如主库上写入了一条数据,从库还没来得写入该记录。那么可以通过设置causal_reads=local,
# 此时客户端在从库上查询会hang住,直至等待causal_reads_timeout=10,10秒后请求会强制转发给master
causal_reads=local
causal_reads_timeout=10


# Listener definitions for the services
#
# These listeners represent the ports the
# services will listen on.
#

# 配置监听模块
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
# 应用连接这个端口
port=4006

启动服务

systemctl start maxscale

如果启动报错,可以查看maxscale文档

cat /var/log/maxscale/maxscale.log 

测试

maxctrl操作命令

通过maxctrl后台管理命令查看主从复制集群状态信息,命令如下:

[root@loacl maxscale]# maxctrl list servers # 查看注册的主机
┌─────────┬───────────────┬──────┬─────────────┬─────────────────┬────────────┐
│ Server  │ Address       │ Port │ Connections │ State           │ GTID       │
├─────────┼───────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server1 │ 192.168.1.154 │ 33060           │ Master, Running │ 0-100-2700 │
├─────────┼───────────────┼──────┼─────────────┼─────────────────┼────────────┤
│ server2 │ 192.168.1.161 │ 33060           │ Slave, Running  │ 0-100-2700 │
└─────────┴───────────────┴──────┴─────────────┴─────────────────┴────────────┘

[root@203 maxscale]# maxctrl list services # 查看注册服务
┌────────────────────┬────────────────┬─────────────┬───────────────────┬──────────────────┐
│ Service            │ Router         │ Connections │ Total Connections │ Targets          │
├────────────────────┼────────────────┼─────────────┼───────────────────┼──────────────────┤
│ Read-Write-Service │ readwritesplit │ 00                 │ server1, server2 │
└────────────────────┴────────────────┴─────────────┴───────────────────┴──────────────────┘

更多命令参考官方文档:https://kb-prod.mariadb.com/kb/en/mariadb-maxscale-6-maxctrl/

创建测试用户

在主库执行,创建程序连接用户名/密码

MariaDB [(none)]> CREATE USER test;
Query OK, 0 rows affected (0.004 sec)

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE,INDEX,CREATE VIEW, EXECUTE, SHOW VIEW, EVENT, TRIGGER ON test.* TO 'test'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> GRANT SELECT ON mysql.proc TO 'test'@'%';
Query OK, 0 rows affected (0.002 sec)

使用 Mysql 客户端到连接 MaxScale

开始测试

-P 4006:为maxscale的端口

# 登录maxscale
[root@203 maxscale]# mysql -u test -h 192.168.1.203 -P 4006 -p 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 10.3.37-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 使用查询当前主机名字,发现为slave从库
MariaDB [(none)]> select @@hostname;
+------------+
| @@hostname |
+------------+
| slave      |
+------------+
1 row in set (0.00 sec)

# 开启事务
MariaDB [(none)]> start transaction;
Query OK, 0 rows affected (0.00 sec)

# 查询当前主机名为master主库
MariaDB [(none)]> select @@hostname;
+------------+
| @@hostname |
+------------+
| pev.154    |
+------------+
1 row in set (0.01 sec)

# 回滚事务
MariaDB [(none)]> rollback;
Query OK, 0 rows affected (0.00 sec)

# 再次查询发现
MariaDB [(none)]> select @@hostname;
+------------+
| @@hostname |
+------------+
| slave      |
+------------+
1 row in set (0.00 sec)

文章来源

https://www.cnblogs.com/backups/p/maridb_maxscale.html
官方文档
https://mariadb.com/kb/en/mariadb-maxscale-25-setting-up-mariadb-maxscale/
https://mariadb.com/kb/en/mariadb-maxscale-25-mariadb-maxscale-configuration-guide/
主从常见错误
https://www.yingsoo.com/news/database/69306.html

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

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

相关文章

DD-1/40 10-40mA型【接地继电器】

系列型号: DD-1/40接地继电器 DD-1/50接地继电器 DD-1/60接地继电器 一、 用途及工作原理 DD-1型接地继电器为瞬时动作的过电流继电器,用作小电流接地电力系统高电压三相交流发电机和电动机的接地零序过电流保护。继电器线圈接零序电流互感器(电缆式、母…

Vue动态粒子特效插件(背景线条吸附动画)

目录 效果图: 一、安装: 二、引入 main.js 文件: 三、使用: 四、属性说明: 效果图: 一、安装: npm install vue-particles --save 二、引入 main.js 文件: import VueParticles…

【C++】30h速成C++从入门到精通(多态)

多态的概念多态:通俗来说就是多种心态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态的定义及实现多态的构成条件多态是在不同继承关系的类对象,去调用同意函数,产生了不同的行为&#xff0…

C/C++每日一练(20230307)

目录 1. 国名排序 ★★ 2. 重复的DNA序列 ★★★ 3. 买卖股票的最佳时机 III ★★★ 🌟 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 ​专栏 1. 国名排序 小李在准备明天的广交会,明天有来自世界各国的客房跟他们谈生意&#xff0c…

结合基于规则和机器学习的方法构建强大的混合系统

经过这些年的发展,我们都确信ML即使不能表现得更好,至少也可以在几乎所有地方与前ML时代的解决方案相匹配。比如说一些规则约束,我们都会想到能否把它们替换为基于树的ml模型。但是世界并不总是黑白分明的,虽然机器学习在解决问题…

spring boot actuator 动态修改日志级别

1 日志级别 Spring Boot Actuator包括在运行时查看和配置应用程序日志级别的功能。您可以查看整个列表,也可以查看单个记录器的配置,该配置由显式配置的日志级别和日志框架给出的有效日志级别组成。这些级别可以是: TRACEDEBUGINFOWARNERRORFATALOFFnu…

ruoyi-pro 代码生成api,swagger扫描不到

背景 重新创建一个新的maven工程,按照芋道源码ruoyi-pro官方文档生成代码后,新的maven工程目录下的接口不能被swagger扫描到,swagger-ui不显示新增的maven工程模块下的api。 解决方法 新增maven工程类中,新增swagger扫描配置类…

JavaWeb--用户登录注册案例

用户登录注册案例4.1 需求分析4.2 用户登录功能4.3 记住我-设置Cookie4.4 记住我-获取Cookie4.5 用户注册功能4.6 验证码-展示4.7验证码-校验4.8 测试目标 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用完善用户登录注册案例的功能 4.1 需求分析 需求说明&#xf…

循环队列的实现

我们知道队列的实现可以用单链表和数组,但是循环链表也可以使用这两种方式。首先我们来看看单链表:首先使用单链表,我们需要考虑循环队列的一些特点。单链表实现循环队列我们要考虑几个核心问题:首先我们要区别 解决 空 和 满 的问…

一文吃透 SpringMVC 中的转发和重定向

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

CameraLink备忘录

首先来看看MDR26的引脚定义 从正面看进去,插头端,放置成倒梯形。 上排,从左到右,1到13, 下排,从左到右,14到26. 插座端,是镜像对称关系。 从正面看进去,插座端&#xf…

C#开发的OpenRA的游戏主界面怎么样创建4

继续游戏主界面创建的主题, 前面已经说到怎么样找到mainmenu.yaml来显示主界面,也说了怎么样找到各个子控件类。 现在就来仔细分析一下,主界面每一部分的功能。 比如下面这个区域的界面是怎么样创建: 要创建这一小部分的界面显示,也是需要做很多的工作。 因为在这里所有UI…

乐鑫特权隔离机制 #4 | 用户应用程序的安全启动

乐鑫特权隔离机制 系列文章 #4 目录 安全启动 (Secure boot) 受保护应用程序的安全启动 (Secure boot for protected app ) 用户应用程序的安全启动 (Secure boot for user app) 基于证书的验证方案 (Certificate-based verification scheme) 必要条件验证过程​​​​​…

数据模型(上):模型分类和模型组成

1.模型分类 ​ 数据模型是一种由符号、文本组成的集合,用以准确表达信息景观,达到有效交流、沟通的目的。数据建模者要求能与来自不同部门,具有不同技术背景,不同业务经验,不同技术水平的人员交流、沟通。数据建模者要了解每个人员的观点,并通过反馈证明理解无误,最终作…

【Java】Java环开发环境安装

Java环开发环境安装 简介: 如果要从事Java编程,则需要安装JDK,如果仅仅是运行一款Java程序则JRE就满足要求。 Java的安装包分为两类 一类是JRE其就是一个独立的Java运行环境; 一类是JDK其是Java的开发环境,不过在JDK…

软件设计师教程(九)计算机系统知识-软件工程基础知识

软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(…

HTTP概念协议报文结构请求响应数据报分析

文章目录前言一、HTTP的概念、特点、工作过程、应用场景二、HTTP协议报文格式查看方式三、HTTP协议数据报格式解读http请求数据报Part1:首行关于URL关于http方法Get请求Post方法【经典面试题】GET和POST区别其他方法关于HTTP协议版本号Part2:请求头(header&#xff…

【数据库】MySQL表的增删改查(基础命令详解)

写在前面 : 语法中大写字母是关键字,用[]括这的是可以省略的内容。文中截图是相对应命令执行完得到的结果截图。1.CRUD 注释:在SQL中可以使用“--空格描述”来表示注释说明.CRUD:即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首…

MOS FET继电器(无机械触点继电器)设计输入侧电源时的电流值概念

设计输入侧电源时的问题 机械式继电器、MOS FET继电器分别具有不同的特长。基于对MOS FET继电器所具小型及长寿命、静音动作等优势的需求,目前已经出现了所用机械式继电器向MOS FET继电器转化的趋势。 但是,由于机械式继电器与MOS FET继电器在产品结构…

CHAPTER 3 磁盘管理

磁盘管理1 磁盘管理1.1 块设备信息(lsblk)1.2 挂载硬盘1.2.1 挂载单个硬盘(mkfs、mount)1.2.2 磁盘分区工具(fdisk)1.2.3 创建分区1.2.4 相关命令1. df2. partprobe3. mkfs1.3 逻辑卷管理器(LVM)1. 涉及概念2. 使用LVM流程1.4 磁盘检测及修复(fsck)1 磁盘…