MySQL Group Replication(组复制)

1 介绍

MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MySQL组复制提供了高可用、高扩展、高可靠的MySQL集群服务。

  • 高一致性,基于原生复制及paxos协议的组复制技术,并以插件的方式提供,提供一致数据安全保证;

  • 高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;

  • 高扩展性,节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;

  • 高灵活性,有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;多主模式下,所有server都可以同时处理更新操作。

MGR是MySQL数据库未来发展的一个重要方向。

2 环境准备

2.1 数据库服务器规划

序号 IP地址 主机名 数据库 数据库端口号 数据库Server ID 备注
1 192.168.56.181 apollo.mgr.com mysql-5.7 3306 181 操作系统CentOS7
2 192.168.56.182 artemis.mgr.com mysql-5.7 3306 182 操作系统CentOS7
3 192.168.56.183 uranus.mgr.com mysql-5.7 3306 183 操作系统CentOS7

2.2 安装mysql5.7.17

安装mysql请参照我的另外一篇博文,在这里就不详细介绍。

2.3 设置hostname和ip映射

在三台数据库服务器上都设置:

[mgradmin@apollo mysql-5.7.17-1.el7.x86_64.rpm-bundle]$ vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.181 apollo.mgr.com
192.168.56.182 artemis.mgr.com
192.168.56.183 uranus.mgr.com

3. 创建复制环境

3.1 服务器apollo.mgr.com

3.1.1 配置/etc/my.cnf

[mgradmin@apollo mysql-5.7.17-1.el7.x86_64.rpm-bundle]$ sudo vim /etc/my.cnf# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# Group Replication
server_id = 181
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format= ROWtransaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = 'ce9be252-2b71-11e6-b8f4-00212844f856'
loose-group_replication_start_on_boot = off
loose-group_replication_local_address = 'apollo.mgr.com:33061'
loose-group_replication_group_seeds ='apollo.mgr.com:33061,artemis.mgr.com:33062,uranus.mgr.com:33063'
loose-group_replication_bootstrap_group = off

3.1.2 服务器apollo.mgr.com上建立复制账号:

mysql> set SQL_LOG_BIN=0;
mysql> create user repl@'%' identified by 'Love88me=-.,';
mysql> grant replication slave on *.* to repl@'%';
mysql> flush privileges;
mysql> set SQL_LOG_BIN=1;
mysql> change master to master_user='repl',master_password='Love88me=-.,' for channel 'group_replication_recovery'; -- 构建group replication集群

3.1.3 在mysql服务器apollo.mgr.com上安装group replication插件

-- 安装插件
mysql> install PLUGIN group_replication SONAME 'group_replication.so';
-- 查看group replication组件
mysql> show plugins;
+----------------------------+----------+--------------------+----------------------+---------+
| Name                       | Status   | Type               | Library              | License |
+----------------------------+----------+--------------------+----------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL                 | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ngram                      | ACTIVE   | FTPARSER           | NULL                 | GPL     |
| validate_password          | ACTIVE   | VALIDATE PASSWORD  | validate_password.so | GPL     |
| group_replication          | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL     |
+----------------------------+----------+--------------------+----------------------+---------+

3.1.4 启动服务器apollo.mgr.com上mysql的group replication

-- 设置group_replication_bootstrap_group为ON是为了标示以后加入集群的服务器以这台服务器为基准,以后加入的就不需要设置。
mysql> set global group_replication_bootstrap_group=ON;
-- 作为首个节点启动mgr集群
mysql> start group_replication;
mysql> set global group_replication_bootstrap_group=OFF;

3.1.5 查看mgr的状态

-- 查询表performance_schema.replication_group_members
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------+-------------+--------------+
| group_replication_applier | ecf48652-1c72-11e7-a7c1-08002785d027 | apollo.mgr.com |        3306 | ONLINE       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+

3.1.6 测试服务器apollo.mgr.com上的mysql

mysql> create database test;
Query OK, 1 row affected (0.01 sec)mysql> use test;
Database changed
mysql> create table t1(c1 int primary key, c2 text not null);
Query OK, 0 rows affected (0.01 sec)mysql> insert into t1 values (1, 'Luis');
Query OK, 1 row affected (0.01 sec)mysql> select * from t1;
+----+------+
| c1 | c2   |
+----+------+
|  1 | Luis |
+----+------+
1 row in set (0.00 sec)mysql> show binlog events;
+---------------+-----+----------------+-----------+-------------+-------------------------------------------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                                              |
+---------------+-----+----------------+-----------+-------------+-------------------------------------------------------------------+
| binlog.000001 |   4 | Format_desc    |       181 |         123 | Server ver: 5.7.17-log, Binlog ver: 4                             |
| binlog.000001 | 123 | Previous_gtids |       181 |         150 |                                                                   |
| binlog.000001 | 150 | Gtid           |       181 |         211 | SET @@SESSION.GTID_NEXT= 'ce9be252-2b71-11e6-b8f4-00212844f856:1' |
| binlog.000001 | 211 | Query          |       181 |         270 | BEGIN                                                             |
| binlog.000001 | 270 | View_change    |       181 |         369 | view_id=14916679781649312:1                                       |
| binlog.000001 | 369 | Query          |       181 |         434 | COMMIT                                                            |
| binlog.000001 | 434 | Gtid           |       181 |         495 | SET @@SESSION.GTID_NEXT= 'ce9be252-2b71-11e6-b8f4-00212844f856:2' |
| binlog.000001 | 495 | Query          |       181 |         585 | create database test                                              |
| binlog.000001 | 585 | Gtid           |       181 |         646 | SET @@SESSION.GTID_NEXT= 'ce9be252-2b71-11e6-b8f4-00212844f856:3' |
| binlog.000001 | 646 | Query          |       181 |         769 | use `test`; create table t1(c1 int primary key, c2 text not null) |
| binlog.000001 | 769 | Gtid           |       181 |         830 | SET @@SESSION.GTID_NEXT= 'ce9be252-2b71-11e6-b8f4-00212844f856:4' |
| binlog.000001 | 830 | Query          |       181 |         898 | BEGIN                                                             |
| binlog.000001 | 898 | Table_map      |       181 |         941 | table_id: 219 (test.t1)                                           |
| binlog.000001 | 941 | Write_rows     |       181 |         983 | table_id: 219 flags: STMT_END_F                                   |
| binlog.000001 | 983 | Xid            |       181 |        1010 | COMMIT /* xid=40 */                                               |
+---------------+-----+----------------+-----------+-------------+-------------------------------------------------------------------+
15 rows in set (0.00 sec)

3.2 复制组添加新实例artemis.mgr.com

3.2.1 修改/etc/my.cnf 配置文件,方法和之前相同

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# Group Replication
server_id = 182
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format= ROWtransaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = 'ce9be252-2b71-11e6-b8f4-00212844f856'
loose-group_replication_start_on_boot = off
loose-group_replication_local_address = 'artemis.mgr.com:33062'
loose-group_replication_group_seeds ='apollo.mgr.com:33061,artemis.mgr.com:33062,uranus.mgr.com:33063'
loose-group_replication_bootstrap_group = off

3.2.2 用户凭证

mysql> set SQL_LOG_BIN=0;
Query OK, 0 rows affected (0.00 sec)mysql> create user repl@'%' identified by 'Love88me=-.,';
Query OK, 0 rows affected (0.00 sec)mysql> grant replication slave on *.* to repl@'%';
Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> SET SQL_LOG_BIN=1;
Query OK, 0 rows affected (0.00 sec)mysql> change master to master_user='repl',master_password='Love88me=-.,' for channel 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.02 sec)-- 安装group replication插件
mysql> install PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.00 sec)

3.2.3 把实例添回到之前的复制组

mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
Query OK, 0 rows affected (0.00 sec)mysql> start group_replication;
Query OK, 0 rows affected (6.65 sec)

3.2.4 在apollo.mgr.com上查看复制组状态

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-----------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST     | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-----------------+-------------+--------------+
| group_replication_applier | ecf48652-1c72-11e7-a7c1-08002785d027 | apollo.mgr.com  |        3306 | ONLINE       |
| group_replication_applier | f0a20978-1c72-11e7-a17b-0800272ce349 | artemis.mgr.com |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-----------------+-------------+--------------+

3.2.5 在新回的实例上查看数据库发现test库和t1表已经同步

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)mysql> select * from t1;
+----+------+
| c1 | c2   |
+----+------+
|  1 | Luis |
+----+------+
1 row in set (0.00 sec)

3.3 以同样方法添加uranus.mgr.com

详细步骤请参考3.2, 这里只给出配置文件/etc/my.cnf:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid# Group Replication
server_id = 183
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format= ROWtransaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = 'ce9be252-2b71-11e6-b8f4-00212844f856'
loose-group_replication_start_on_boot = off
loose-group_replication_local_address = 'uranus.mgr.com:33063'
loose-group_replication_group_seeds ='apollo.mgr.com:33061,artemis.mgr.com:33062,uranus.mgr.com:33063'
loose-group_replication_bootstrap_group = off

3.4 查看复制组状态

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-----------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST     | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-----------------+-------------+--------------+
| group_replication_applier | ecf48652-1c72-11e7-a7c1-08002785d027 | apollo.mgr.com  |        3306 | ONLINE       |
| group_replication_applier | f0a20978-1c72-11e7-a17b-0800272ce349 | artemis.mgr.com |        3306 | ONLINE       |
| group_replication_applier | f2ca816c-1c72-11e7-a1aa-080027eaa4e1 | uranus.mgr.com  |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-----------------+-------------+--------------+

MySQL5.7 Group Replication (MGR)相关推荐

  1. MySQL5.7 Group Replication (MGR)--Mysql的组复制之多主模式

    MGR--Mysql的组复制之多主模式 以下测试在VMware环境: 操作系统:Centos 6.9 X86_64 数据库:Mysql 5.7 (mysql  Ver 14.14 Distrib 5. ...

  2. mysql mgr简介_MySQL Group Replication(MGR)使用简介与注意事项

    MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供.MGR基于分布式paxos协议,实现组复制,保证数据 ...

  3. mysql mgr 读写分离_MySQL Group Replication mgr 单主 proxysql 读写分离配置过程

    1.前期准备,mgr安装见上一篇文章 2.创建用户和导入脚本 GRANT ALL ON *.* TO 'rootuser'@'%' IDENTIFIED BY '123456'; /mgr/mysql ...

  4. mysql group replication 安装配置详解

    一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...

  5. MySQL Group Replication 介绍

    2016-12-12,一个重要的日子,mysql5.7.17 GA版发布,正式推出Group Replication(组复制) 插件,通过这个插件增强了MySQL原有的高可用方案(原有的Replica ...

  6. MySQL Group Replication [Single-Primary Mode] 详细搭建部署过程

    1,关于MySQL Group Replication 基于组的复制(Group-basedReplication)是一种被使用在容错系统中的技术.Replication-group(复制组)是由能够 ...

  7. MySQL Group Replication 学习(部署篇)

    MySQL5.7版本出来有很长时间了,之前也装了玩了下,大概了解了部分功能和特性,但没有系统的学习和测试其主要新增功能,最近也特意抽出时间想去多了解了解,学习学习5.7的主要新特性,这里主要是针对其最 ...

  8. MySQL group replication

    本篇文章主要讲解MySQL group replication介绍,文中有关MySQL,group的内容,希望对大家有所帮助. "MySQL group replication" ...

  9. MySQL Group Replication调研剖析

    以下转自 http://www.iteye.com/news/32090 MySQL Group Replication调研剖析 引用 作者简介:王伟,京东基础平台数据库工程师,京东商城基础平台部门包 ...

  10. Mysql8 group replication组复制集群单主多主模式切换

    Mysql8 MGR集群操作图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的MGR集群的操作. My ...

最新文章

  1. 改变从内部开始:开发者与管理者的协作
  2. osg中实现HUD(OSG初级篇1)
  3. 向窗体中拖放图片并显示
  4. 用汇编实现add函数
  5. 你了解SpringBoot启动时API相关信息是用什么数据结构存储的吗?(上篇)
  6. 如何在 .NETCore 中修改 QueryString ?
  7. php职业认证,如何用 PHP 进行 HTTP 认证
  8. TensorFlow 学习(八)—— 梯度计算(gradient computation)
  9. 第五课 基本数据类型
  10. 金蝶k3服务器维护,金蝶k3如何远程客服服务器
  11. Postman下载与安装详细步骤
  12. android音乐播放器歌词解析,iOS 音乐播放器歌词解析
  13. 2.5 浅层/深层神经网络
  14. 摄影爱好者尝试图库销售时需要注意什么?| 拍者手记
  15. 笔记本不用fn也能用功能键
  16. 使用GPUpassthrough方法发布带有GPU显卡的虚拟桌面
  17. 项目管理与SSM框架——Spring
  18. 最小生成树 Kruskal 和 Prim算法及堆优化
  19. 英伟达光追支持Java吗,英伟达新显卡驱动发布 GTX 10系显卡现已支持光追
  20. 微信小程序手机号码如何进行解密

热门文章

  1. 2021-06-01
  2. python投资组合有效边界,软核科普系列:用python帮你建立自己的投资组合
  3. Ubuntu22.04安装gamit10.71
  4. xmpp 服务研究(二) prosody 创建账户
  5. js版in_array函数
  6. Arango db 快速入门
  7. 余子式和余子式 伴随矩阵定义 性质 二阶矩阵求伴随矩阵 伴随矩阵理解(列排)
  8. 互联网行业,让你成为月薪过万的那三成人
  9. 如何通过vin及发动机号查询车辆出险、理赔、事故记录
  10. moments音标_moment  是什么意思_moment  的翻译_音标_读音_用法_例句_爱词霸在线词典...