MySQL Cluster7.2.4怎么安装部署

技术MySQL Cluster7.2.4怎么安装部署本篇内容主要讲解“MySQL Cluster7.2.4怎么安装部署”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL

本文主要讲解“如何安装和部署MySQL集群7.2.4”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖学习“如何安装和部署MySQL集群7.2.4”!

1.1 mysql-cluster简介

简单来说,MySQLCluster实际上是一个在没有共享存储设备的情况下实现的完全分布式的数据库系统,主要由NDBCluster(简称NDB)存储引擎实现。

MySQLCluster诞生的时候,可以说是一个可以持久化数据的内存中数据库。所有数据和索引都必须加载到内存中,然后才能正常运行。然而,最新版本的MySQLCluster已经能够将所有索引和索引数据加载到内存中,并且实际数据可以在没有全部加载的情况下加载到内存中。架构如下图所示:

1.2Cluster结构图

1.3Cluster主要结构

1.管理(MGM)节点:

这类节点用于管理MySQLCluster中的其他节点,如提供配置数据、启动和停止节点、运行备份等。由于此类节点负责管理其他节点的配置,因此应该在启动其他节点之前启动它们。MGM节点通过命令“ndb_mgmd”启动。

对硬件没有要求,几乎机器完全胜任。默认端口1186。

2.数据节点:

这种节点用于存储集群的数据。数据节点的数量与副本的数量有关,副本的数量是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有四个数据节点。但是,没有必要设置多个副本。数据节点由命令“ndbd”启动。

可以选择大内存,cpu也相对不错,尤其是ndbmtd未来对多核Cpu的支持。默认端口2202

?3.SQL节点:

这是用于访问群集数据的节点。对于MySQLCluster,客户端节点是一个传统的MySQL服务器,使用NDBCluster存储引擎。一般SQL节点都是以命令“mysqld-ndbcluster”开始,或者在“my.cnf”中添加“ndbcluster”后以“mysqld”开始。

要求更高的cpu,选择多核和高频CPU。

1.4集群功能

分布式:分布式存储引擎,可以由多个NDBCluster存储引擎组成,分别存储整个数据的一部分。

支持交易:和Innodb一样,支持交易。

但不能和MyQLD在同一个主机上:它可以和MyQLD单独存在于一个独立的主机上,然后通过网络与MyQLD进行通信。

对内存的需求是巨大的:新版本索引和索引数据必须存储在内存中,旧版本的所有数据和索引都必须存在内存中。

使用Cluster自动键值标识数据分片方案,用户无需关心数据分片方案(5.1及更高版本提供了分区密钥规则),分布式数据库实现透明。根据1个主键、2个唯一索引和3个自动行标识符rowid完成数据分片规则,然后分配Clusters的数量。它的访问数据就像RAID访问机制,可以从每个节点并行提取数据,并对数据进行哈希处理。当使用非主键或分区键进行访问时,将扫描所有群集节点。

适用场景:

具有非常高的并发要求。

对单个请求的响应不是很关键。

查询简单,过滤条件相对固定,每次请求的数据量小,不想自己做横向分片。

最佳实践

使查询尽可能简单,避免跨节点的数据传输;尽可能满足SQL节点的计算性能,较大的集群SQL节点显然会有冗余的Data节点;尽可能使用万兆网络环境进行节点间的互联,减少网络层数据传输的延迟。

1.5 MySQL-cluster的优缺点

优点:

1) 99.999%的高可用性

2)快速自动故障转移

3)灵活的分布式架构,没有单点故障。

4)nb

sp;       高吞吐量和低延迟

  5)        可扩展性强,支持在线扩容

 缺点

  1)        存在很多限制,比如:不支持外键,数据行不能超过8K(不包括BLOB和text中的数据)

  2)        部署、管理、配置很复杂

  3)        占用磁盘空间大,内存大

  4)        备份和恢复不方便

  5)       复杂的sql查询性能一般

2 安装 

2.1 环境介绍

 mysqlcluster7.2.4安装配置

 准备64位版本 5台服务器4G内存60G硬盘2cpu

 10.100.200.36  64位

 10.100.200.37  64位

 10.100.200.38  64位

 10.100.200.39  64位

 10.100.200.41  64位

 管理节点(ndb_mgmd)10.100.200.36  64位

 数据节点(ndbd)     10.100.200.37  64位  10.100.200.38  64位

 SQL节点(mysqld/api)    10.100.200.39  64位   10.100.200.41  64位

 下载安装包:mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz

 http://mirror.services.wisc.edu/mysql/Downloads/MySQL-Cluster-7.2/

2.1 安装管理节点(10.100.200.36) 

 2.1.1解压文件

    shell> tar -xvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz

 2.1.2创建安装目录

    shell> mkdir-p /usr/local/mysql/bin

    shell> mkdir-p /usr/local/mysql/ndbdata

 2.1.3添加执行文件路径

    shell> vi ~/.bash_profile

  PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

 2.1.4拷贝执行文件

  shell> cdmysql-cluster-gpl-7.2.4-linux2.6-x86_64

  shell> cp bin/ndb_mgmd/usr/local/mysql/bin

  shell> cp bin/ndb_mgm/usr/local/mysql/bin

 2.1.5创建日志文件存储目录

  shell> mkdir/var/lib/mysql-cluster

 2.1.6创建配置文件目录及修改配置文件

  shell> mkdir/usr/local/mysql/cluster-conf

  shell> vi /usr/local/mysql/cluster-conf/config.ini 

2.2 管理节点配置文件

[NDBDDEFAULT]

#TotalSendBufferMemory= 256M

NoOfReplicas=2

DataMemory=2500M

IndexMemory=256M

DataDir=/var/lib/mysql-cluster

#FileSystemPath=/data/dbdata

#Redolog

FragmentLogFileSize=32M

InitFragmentLogFiles=SPARSE

NoOfFragmentLogFiles=8

RedoBuffer=1024M

StringMemory=25

LockPagesInMainMemory=1

MaxNoOfTables=4096

MaxNoOfOrderedIndexes=2048

MaxNoOfUniqueHashIndexes=1024

MaxNoOfAttributes=24576

MaxNoOfTriggers=14336

ODirect=1

MaxNoOfConcurrentTransactions=10000

MaxNoOfConcurrentOperations=50000

MaxNoOfLocalOperations=55000

TimeBetweenGlobalCheckpoints=1000

TimeBetweenEpochs=100

TimeBetweenWatchdogCheckInitial=60000

TransactionBufferMemory=10M

DiskCheckpointSpeed=10M

DiskCheckpointSpeedInRestart=100M

TimeBetweenLocalCheckpoints=20

SchedulerSpinTimer=400

SchedulerExecutionTimer=100

RealTimeScheduler=1

BackupMaxWriteSize=1M

BackupDataBufferSize=16M

BackupLogBufferSize=4M

BackupMemory=20M

MaxNoOfExecutionThreads=4

TransactionDeadLockDetectionTimeOut=10000

BatchSizePerLocalScan=512

###Increasing the LongMessageBufferb/c of a bug (20090903)

LongMessageBuffer=8M

###Heartbeating

HeartbeatIntervalDbDb=15000

HeartbeatIntervalDbApi=15000

[MGMDEFAULT]

PortNumber:1186

DataDir:/var/lib/mysql-cluster1

[TCPDEFAULT]

SendBufferMemory:64M

#######################################

#Change HOST1 to the name of the NDB_MGMD host

#Change HOST8 to the name of the NDBD host

#Change HOST9 to the name of the NDBD host

#######################################

[NDB_MGMD]

NodeId:1

HostName:10.100.200.36

ArbitrationRank:1

[NDBD]

NodeId:4

HostName:10.100.200.37

[NDBD]

NodeId:5

HostName:10.100.200.38

######################################################

#Note: The following can be MySQLDconnections or   #

#      NDB API application connecting to thecluster #

######################################################

[API]

NodeId:10

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:11

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:12

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:13

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:14

HostName:10.100.200.39

ArbitrationRank:2

[API]

NodeId:15

HostName:10.100.200.41

ArbitrationRank:2

[API]

NodeId:16

HostName:10.100.200.41

ArbitrationRank:2

[API]

NodeId:17

HostName:10.100.200.41

ArbitrationRank:2

3 安装数据节点(10.100.200.37  10.100.200.38)

 解压文件

 shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz

 创建安装目录

 shell>mkdir -p /usr/local/mysql/bin

 shell>mkdir -p /usr/local/mysql/ndbdata

 拷贝执行文件

 shell>cp mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndbd/usr/local/mysql/bin

 添加执行文件路径

 shell>vim ~/.bash_profile

 PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

 创建配置文件:

 shell>vim /etc/my.cnf

 分别在主机添加如下内容:

 [mysql_cluster]

 #配置数据节点连接管理节点

 ndb-connectstring=10.100.200.36

4 安装SQL节点1(10.100.200.39  10.100.200.41)

 解压文件

 shell>tar -zxvfmysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz

 拷贝安装文件

 shell>mvmysql-cluster-gpl-7.2.4-linux2.6-x86_64 /usr/local/mysql

 添加mysql用户

 shell>groupaddmysql

 shell>useradd-gmysqlmysql

 添加权限

 shell>chown -Rmysql:mysql/usr/local/mysql

 拷贝配置文件

 shell>cp /usr/local/mysql/support-files/my-large.cnf/etc/my.cnf

 初始化数据库

 shell>cd /usr/local/mysql

 shell>scripts/mysql_install_db--user=mysql

 拷贝守护进程所需文件

 shell>cp /usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld

 配置守护进程

 shell>chkconfig--addmysqld

 shell>chkconfig--level 35mysqld on

 添加执行文件路径

 shell>vim~/.bash_profile

 PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

 更改配置文件

 shell>vim /etc/my.cnf

 分别编辑如下信息:

 [mysqld]#配置SQL节点与管理节点连接

 port= 3307

 socket= /tmp/mysql.sock

 ndbcluster

 ndb-connectstring=10.100.200.36

5启动以及关闭cluster

 启动顺序管理节点->数据节点->SQL节点

 a、启动管理节点

  [root@banggocluster-conf]#ndb_mgmd-f /usr/local/mysql/cluster-conf/config.ini

 b、启动数据节点

  ndbd–initial #(第一次启动必须添加选项,另外备份/恢复,修改配置文件也需要执行)

  ndbd    #不是第一次启动需要执行的命令

 c、启动SQL节点

  /etc/rc.d/init.d/mysqldstart或servicemysqldstart

  启动后可以用mysql-uroot -p验证mysql服务状态

 关闭顺序:SQL节点->管理节点

 a、关闭SQL节点

  /etc/rc.d/init.d/mysqldstop或servicemysqld stop

 b、关闭数据节点

  ndbdstop

 c、关闭管理节点

  ndb_mgm〉shutdown

6验证cluster的状态

验证配置的正确性

1、在管理节点执行:ndb_mgm-> show

[root@banggo~]# ndb_mgm

--NDB Cluster -- Management Client --

ndb_mgm>show

Connectedto Management Server at: localhost:1186

ClusterConfiguration

---------------------

[ndbd(NDB)]     2 node(s)

id=4    @10.100.200.37  (mysql-5.5.19 ndb-7.2.4, Nodegroup:0, Master)

id=5    @10.100.200.38  (mysql-5.5.19 ndb-7.2.4, Nodegroup:0)

[ndb_mgmd(MGM)]1 node(s)

id=1    @10.100.200.36  (mysql-5.5.19 ndb-7.2.4)

[mysqld(API)]   2 node(s)

id=10   @10.100.200.39  (mysql-5.5.19 ndb-7.2.4)

………

id=14   @10.100.200.41  (mysql-5.5.19 ndb-7.2.4)

………

7 ndbcluster存储引擎功能测试(与innoDB对比)

MySQL Cluster7.2.4怎么安装部署

MySQL Cluster7.2.4怎么安装部署

8 MySQLClster备份与恢复

备份

  采用ndb_mgm管理客户端来备份,在管理节点执行ndb_mgm即可进入管理命令行,输入startbackup开始备份所有节点,如果后面还跟着对应数据节点的id就只备份对应的数据节点

恢复(参考:http://xxtianxiaxing.iteye.com/blog/563063)

  使用命令ndb_restore进行恢复,具体过程如下:

   启动管理节点

     /usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini--reload

  启动数据节点:

  /usr/bin/ndbd --initial

  第一个节点恢复的时候

  在第一个节点恢复表结构(恢复的时候如果不涉及到表结构的变更,不用使用参数-m)

  /usr/bin/ndb_restore  -c 10.100.200.37-n 11 -b 1 -m --backup_path=/data/backup/backup-1/

  恢复数据,恢复数据的时候可以几个ndb节点一起执行,速度会快一点!

  /usr/bin/ndb_restore  -c 10.100.200.37-n 11 -b 1  -r --backup_path=/data/backup/backup-1/

  其他节点恢复的时候(以后的节点不需要加-m参数)

  /usr/bin/ndb_restore  -c 192.168.100.223 -n 11 -b 1 -r --backup_path=/data/dbdata1/BACKUP/BACKUP-1/

9 MySQLClster在线添加节点1

 增加或减少数据节点的数量和NoOfReplicas有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。

 首先是在配置文件中添加两个节点的设置,如下:

?viconfig.ini  添加

  [NDBD]

  id=21

  HostName=10.100.200.37

  [NDBD]

  id=22

  HostName=10.100.200.38

 用ndb_mgm工具,停掉管理节点,然后重新启动管理节点

 执行ndb_mgm进入管理命令界面,找到管理节点的id,然后执行管理节点idstop,退出

 执行

 /usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini  --reload 重新启动管理节点

 登陆上去用show命令查看,是否出现了新添加的两个节点!

 环状重启(一次重启数据节点和sql节点)

 初始化新添加的两个节点:

 ndbd--initial (执行初始化之后会自动创建数据文件,undo日志文件等等)

 通过ndb_mgm创建nodegroup

 CREATENODEGROUP 21,22s

 重新分配cluster的数据

 SELECTTABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE ='NDBCLUSTER';

 ALTERONLINE TABLE table_nameREORGANIZE PARTITION;

 alteronline table card_packagereorganize partition;

 然后通过show命令或者使用ndb_desc命令查看

 ndb_desc-c 10.80.30.39 -dbgcarddbcard_package-p

 -c后面跟管理节点的ip,-d跟数据库的名字,table_name为表名,-p输出分区的详细信息

10 MySQLClster用户权限共享

 在sql节点41上面执行mysql -uroot-p < /usr/local/mysql/share/ndb_dist_priv.sql

 在mysql终端调用名字为mysql_cluster_move_privileges的存储过程,这个存储过程的功能是备份权限表,然后将表的存储引擎转换为ndbcluster引擎。
mysql>CALLmysql.mysql_cluster_move_privileges();

 自动备份权限表

   shell>mysqldumpmysql userdbtables_privcolumns_privprocs_priv>backup_file.sql

 验证权限表

  mysql>show create tablemysql.user;看engine是否为ndbcluster。

 在41上面加测试账号

  mysql>grant all on *.* to test@'10.100.200.%' identified by 'test123';

  [root@banggo~]#mysql-h20.100.200.39 -utest-ptest123 -P3307; 

  OK,能连上,测试成功!

11.1 MySQLClster备份与恢复扩展(操作见No8)

 1、簇备份
备份指的是在给定时间对数据库的快照。备份包含三个主要部分:
(1)Metadata(元数据):所有数据库表的名称和定义。
(2)Tablerecords(表记录):执行备份时实际保存在数据库表中的数据。
(3)Transactionlog(事务日志):指明如何以及何时将数据保存在数据库中的连续记录。
每一部分(这三部分)均会保存在参与备份的所有数据节点上。在备份过程中,每个节点均会将这三个部分保存在磁盘上的三个文件中(意思是说,有几个节点,将会把相同的数据,保存几份.例如,2个数据节点,那么就会分别在2个节点上,保存2次,保存目录默认为
[NDBD]
DateDir=/usr/local/mysql/BACKUP

 
(4)BACKUP-backup_id.node_id.ctl
包含控制信息和元数据的控制文件。每个节点均会将相同的表定义(对于簇中的所有表)保存在自己的该文件中

(5)BACKUP-backup_id-0.node_id.data
包含表记录的数据文件,它是按片段保存的,也就是说,在备份过程中,不同的节点会保存不同的片段。每个节点保存的文件以指明了记录所属表的标题开始。在记录清单后面有一个包含关于所有记录校验和的脚注。

            (6)BACKUP-backup_id.node_id.log
               包含已提交事务的记录的日志文件。在日志中,仅保存已在备份中保存的表上的事务。参与备份的节点将保存不同的记录,这是因为,不同的节点容纳了不同的数据库片段。
              在上面所列的内容中,backup_id指的是备份ID,node_id是创建文件的节点的唯一ID。
              使用管理服务器创建备份开始备份前,请确保已为备份操作恰当地配置了簇。

 2、备份参数(以下参数,都写在mgmd的config.ini配置文件中)
本节讨论的参数定义了与在线备份执行有关的内存缓冲集。
(1)BackupDataBufferSize
在创建备份的过程中,为了将数据发送到磁盘,将使用两类缓冲。备份数据缓冲用于填充由扫描节点的表而记录的数据。一旦将该缓冲填充到了指定的水平BackupWriteSize(请参见下面的介绍),就会将页发送至磁盘。在将页写入磁盘的同时,备份进程能够继续填充该缓冲,直至其空间消耗完为止。出现该情况时,备份进程将暂停扫描,直至一些磁盘写入操作完成并释放了内存为止,然后扫描继续。
该参数的默认值为2MB。
(2)BackupLogBufferSize
备份日志缓冲扮演的角色类似于备份数据缓冲,不同之处在于,它用于生成备份执行期间进行的所有表写入的日志。相同的原理也适用于备份数据缓冲情形下的页写入,不同之处在于,当备份日志缓冲中没有多余空间时,备份将失败。出于该原因,备份日志缓冲的大小应足以处理执行备份时产生的负载。
该参数的默认值对于大多数应用程序均是适当的。事实上,备份失败的原因更可能是因为磁盘写入速度不够,而不是备份日志缓冲变满。如果没有为应用程序产生的写负载配置磁盘子系统,簇很可能无法执行所需的操作。最好按恰当的方式配置簇,使得处理器成为瓶颈而不是磁盘或网络连接。默认值是2MB。
(3)BackupMemory
该参数是BackupDataBufferSize和BackupLogBufferSize之和。默认值是2MB+ 2MB = 4MB。
(4)BackupWriteSize
该参数指定了由备份日志缓冲和备份数据缓冲写入磁盘的消息大小。默认值是32KB.
(5)BackupDataDir
#可更改默认的备份目录,BackupDataDir=/mysqlback
#当然前提,mkdir/mysqlback,需要在所有数据节点上运行
也能指定存放备份的目录。默认情况下,该目录是FileSystemPath/BACKUP
(6)FileSystemPath
该参数指定了存放为元数据创建的所有文件、REDO日志、UNDO日志和数据文件的目录。默认目录是由DataDir指定的。注意,启动ndbd进程之前,该目录必须已存在。
(7)DataDir
该参数指定了存放跟踪文件、日志文件、pid文件以及错误日志的目录。

12.1 Join的改进1

      在现在的mysqlcluster 7.2测试版本中,对join的功能进行了重大改进,可以说是一个里程碑的版本,由于前段时间做测试发现mysqlcluster 7.1.10对join的性能很不好,另外如果jion的表比较大的时候会导致节点之间的数据传输非常大。
    我们知道在7.2之前的版本都是将jion在mysqld节点执行,这样就需要从数据节点进行交互传输数据,造成join的性能非常差。现在7.2版本将join放到了数据节点执行,并行处理,较少了数据在sql节点的交互,因此性能大幅提升。

   导入数据测试(省略,参见join.txt)首先将ndb_join_pushdown参数关掉进行测试

点击(此处)折叠或打开

  1.    mysql>SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 ASTOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS  FREE_MB, EXTRA FROMinformation_schema.FILESWHERE FILE_TYPE=\"DATAFILE\";

  2.     +-----------------+------------+--------------+--------------+----------------+

  3.     |TABLESPACE_NAME | FILE_NAME |TOTAL_MB | FREE_MB | EXTRA |

  4.     +-----------------+------------+--------------+--------------+----------------+

  5.     |ts_1 | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=4 |

  6.     |ts_1 | data_1.dat |512.00000000 | 301.00000000 | CLUSTER_NODE=5 |

  7.     |ts_1 | data_1.dat |512.00000000 | 300.00000000 | CLUSTER_NODE=6 |

  8.     +-----------------+------------+--------------+--------------+----------------+

  9.      3rows in set (0.05 sec)

到此,相信大家对“MySQL Cluster7.2.4怎么安装部署”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/104204.html

(0)

相关推荐

  • Javaee与Javase有什么区别

    技术Javaee与Javase有什么区别本篇内容介绍了“Javaee与Javase有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年10月30日
  • 月亮思乡的古诗,关于月亮思乡的古诗大全

    技术月亮思乡的古诗,关于月亮思乡的古诗大全【古朗月行】李白小时不识月,呼作白玉盘.又疑瑶台镜,飞在白云端.仙人垂两足,桂树作团团.白兔捣药成,问言与谁餐.
    蟾蜍蚀圆影,大明夜已残.羿昔落九乌,天人清且安.
    阴精此沦惑,去

    生活 2021年10月22日
  • 老公英文怎么写简称,“亲爱的老公”的英文怎么写

    技术老公英文怎么写简称,“亲爱的老公”的英文怎么写我亲爱的老公英文为:my dear husband老公英文怎么写简称;husband;英 [ˈhʌzbənd] 美 [ˈhʌzbənd] ;n.丈夫;〈英〉管家;〈

    生活 2021年10月23日
  • 使用ogg同步数据给kafka

    技术使用ogg同步数据给kafka 使用ogg同步数据给kafka使用ogg同步数据给kafka两榜进士2017-06-20 14:55:3123011收藏9分类专栏:大数据-Kafka大数据-Kafk

    礼包 2021年10月28日
  • Fluentd中如何配置通用参数适用于所有插件

    技术Fluentd中如何配置通用参数适用于所有插件这篇文章主要为大家展示了“Fluentd中如何配置通用参数适用于所有插件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flu

    攻略 2021年11月20日
  • 如何使用VISIO中的UML图表达C++语言中抽象类或抽象方法

    技术如何使用VISIO中的UML图表达C++语言中抽象类或抽象方法这篇文章主要介绍“如何使用VISIO中的UML图表达C++语言中抽象类或抽象方法”,在日常操作中,相信很多人在如何使用VISIO中的UML图表达C++语言

    攻略 2021年11月29日