暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

「YashanDB个人版体验」YashanDB 23.1 单机主备部署-命令行安装

一、写在前面

  今天继续体验下YashanDB(崖山数据库)命令行方式单机主备部署过程。崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。数据库核心技术100%自研,做到完全自主可控,研发团队具备从零构建完整数据库系统并成功商用的经验,全栈顶尖研发能力保持产品和技术领先优势;积极参与并融入信创生态,高度兼容国产主流软硬件。

二、安装前准备

1、实验环境介绍

      项目       描述
操作系统 CentOS 7.6
CPU 2C
内存 5GB
硬盘 50GB
主机名称 主机IP 角色
hellodba56 192.168.0.56 主库
hellodba57 192.168.0.57 备库
hellodba58 192.168.0.58 备库

2、操作系统参数调整

2.1、配置主机名解析

[root@hellodba56 ~]# echo "192.168.0.56 hellodba56" >> /etc/hosts [root@hellodba56 ~]# echo "192.168.0.57 hellodba57" >> /etc/hosts [root@hellodba56 ~]# echo "192.168.0.58 hellodba58" >> /etc/hosts [root@hellodba57 ~]# echo "192.168.0.56 hellodba56" >> /etc/hosts [root@hellodba57 ~]# echo "192.168.0.57 hellodba57" >> /etc/hosts [root@hellodba57 ~]# echo "192.168.0.58 hellodba58" >> /etc/hosts [root@hellodba58 ~]# echo "192.168.0.56 hellodba56" >> /etc/hosts [root@hellodba58 ~]# echo "192.168.0.57 hellodba57" >> /etc/hosts [root@hellodba58 ~]# echo "192.168.0.58 hellodba58" >> /etc/hosts

2.2、关闭交换分区

// 三台主机 [root@hellodba56 ~]# sysctl -w vm.swappiness=0 [root@hellodba56 ~]# echo "vm.swappiness = 0">> /etc/sysctl.conf [root@hellodba56 ~]# sysctl -a | grep swappiness sysctl: reading key "net.ipv6.conf.all.stable_secret" sysctl: reading key "net.ipv6.conf.default.stable_secret" sysctl: reading key "net.ipv6.conf.ens33.stable_secret" sysctl: reading key "net.ipv6.conf.lo.stable_secret" sysctl: reading key "net.ipv6.conf.virbr0.stable_secret" sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret" vm.swappiness = 0

2.3、调整自动分配本地端口范围

// 三台主机 [root@hellodba56 ~]# sysctl -w net.ipv4.ip_local_port_range='32768 60999' [root@hellodba56 ~]# echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf

2.4、调整进程的VMA上限

// 三台主机 [root@hellodba56 ~]# sysctl -w vm.max_map_count=2000000 vm.max_map_count = 2000000 [root@hellodba56 ~]# echo "vm.max_map_count=2000000" >> /etc/sysctl.conf [root@hellodba56 ~]# sysctl -a|grep vm.max_map_count sysctl: reading key "net.ipv6.conf.all.stable_secret" sysctl: reading key "net.ipv6.conf.default.stable_secret" sysctl: reading key "net.ipv6.conf.ens33.stable_secret" sysctl: reading key "net.ipv6.conf.lo.stable_secret" sysctl: reading key "net.ipv6.conf.virbr0.stable_secret" sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret" vm.max_map_count = 2000000

2.5、调整资源限制值

// 三台主机 [root@hellodba56 ~]# echo "* soft nofile 65536" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* soft nofile 65536" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* hard nofile 65536" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* soft nproc 65536" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* hard nproc 65536" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* soft rss unlimited" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* hard rss unlimited" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* soft stack 8192" >> /etc/security/limits.conf [root@hellodba56 ~]# echo "* hard stack 8192" >> /etc/security/limits.conf

2.6、关闭透明大页

// 三台主机 [root@hellodba56 ~]# echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local [root@hellodba56 ~]# echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.d/rc.local [root@hellodba56 ~]# chmod +x /etc/rc.d/rc.local

2.7、关闭防火墙

// 三台主机 [root@hellodba56 ~]# systemctl stop firewalld [root@hellodba56 ~]# systemctl status firewalld [root@hellodba56 ~]# systemctl disable firewalld

2.8、创建安装用户

// 三台主机 [root@hellodba56 ~]# useradd -d /home/yashan -m yashan [root@hellodba56 ~]# echo "hellodba" | passwd --stdin yashan

2.9、配置sudo免密

// 三台主机 [root@hellodba56 ~]# chmod +w /etc/sudoers [root@hellodba56 ~]# echo "yashan ALL=(ALL)NOPASSWD:ALL" >> /etc/sudoers [root@hellodba56 ~]# chmod -w /etc/sudoers

2.10、将yashan用户加入到YASDBA用户组

// 三台主机 [root@hellodba56 ~]# groupadd YASDBA [root@hellodba56 ~]# usermod -a -G YASDBA yashan

2.11、创建安装目录

// 三台主机 [root@hellodba56 ~]# mkdir -p /YashanDB [root@hellodba56 ~]# chmod -R 777 /YashanDB

2.12、重启操作系统

// 三台主机 [root@hellodba56 ~]# init 6

3、软件包下载

从本步骤开始的后续所有服务端安装步骤,将由数据库安装用户来进行操作,请先切换至yashan用户,或以yashan用户登录至服务器。
YashanDB支持在任一服务器上下载软件包,向其他所有节点发起并行安装,本实验以192.168.0.56作为安装服务器,以下步骤均在192.168.0.56上执行。下载地址

3.1、创建install目录

// hellodba56 [root@hellodba56 ~]# su - yashan [yashan@hellodba56 ~]$ cd /YashanDB [yashan@hellodba56 YashanDB]$ mkdir install

3.2、下载软件包

将软件包下载到/YashanDB/install目录下,并解压软件包。

[yashan@hellodba56 ~]$ cd /YashanDB/install [yashan@hellodba56 install]$ tar zxf yashandb-personal-23.1.1.100-linux-x86_64.tar.gz [yashan@hellodba56 install]$ ll drwxrwxr-x. 6 yashan yashan 70 Nov 9 18:16 admin drwxrwxr-x. 2 yashan yashan 188 Nov 9 18:16 bin drwxrwxr-x. 2 yashan yashan 152 Nov 9 18:16 conf drwxrwxr-x. 5 yashan yashan 60 Nov 9 18:16 ext -rw-rw-r--. 1 yashan yashan 11632 Nov 9 18:16 gitmoduleversion.dat drwxrwxr-x. 2 yashan yashan 65 Nov 9 18:16 include drwxrwxr-x. 3 yashan yashan 17 Nov 9 18:16 java drwxrwxr-x. 2 yashan yashan 4096 Nov 9 18:16 lib -rw-r-----. 1 yashan yashan 14989 Nov 9 18:16 LICENSE drwxrwxr-x. 3 yashan yashan 21 Nov 9 18:16 plug-in drwxrwxr-x. 2 yashan yashan 170 Nov 9 18:16 scripts -rwxrwxr-x. 1 yashan yashan 175386922 Nov 30 16:42 yashandb-personal-23.1.1.100-linux-x86_64.tar.gz

3.3、获取安装工具

YashanDB所提供软件包中包含安装工具,位于bin目录下。其中,如执行命令行安装,需要用到yasboot命令,如执行可视化安装,则需要用到yasom命令。

[yashan@hellodba56 install]$ ll bin/yasboot -rwxrwxr-x. 1 yashan yashan 9381440 Nov 9 18:16 bin/yasboot [yashan@hellodba install]$ ll bin/yasom -rwxrwxr-x. 1 yashan yashan 21896816 Nov 9 18:16 bin/yasom

三、安装过程

1、生成部署文件

[yashan@hellodba56 ~]$ cd /YashanDB/install [yashan@hellodba56 install]$ ./bin/yasboot package se gen --cluster yashandb -u yashan -p hellodba --ip 192.168.0.56,192.168.0.57,192.168.0.58 --port 22 --install-path /YashanDB/yasdb_home --data-path /YashanDB/yasdb_data --begin-port 1688 --node 3 hostid | group | node_type | node_name | listen_addr | replication_addr | data_path --------------------------------------------------------------------------------------------------------- host0001 | dbg1 | db | 1-1 | 192.168.0.56:1688 | 192.168.0.56:1689 | /YashanDB/yasdb_data ----------+-------+-----------+-----------+-------------------+-------------------+---------------------- host0002 | dbg1 | db | 1-2 | 192.168.0.57:1688 | 192.168.0.57:1689 | /YashanDB/yasdb_data ----------+-------+-----------+-----------+-------------------+-------------------+---------------------- host0003 | dbg1 | db | 1-3 | 192.168.0.58:1688 | 192.168.0.58:1689 | /YashanDB/yasdb_data ----------+-------+-----------+-----------+-------------------+-------------------+---------------------- Generate config success

上一步骤执行完毕后,当前目录下将生成yashandb.toml和hosts.toml两个配置文件,yashandb.toml为数据库集群的配置文件,hosts.toml为主机的配置文件,可手动修改,但不建议删除文件中任何行,否则可能导致后续安装过程报错,或者所搭建的环境后续无法进行扩展配置。

-rw-------. 1 yashan yashan 1046 Dec 18 14:31 hosts.toml -rw-------. 1 yashan yashan 1554 Dec 18 14:31 yashandb.toml

1.1、参数说明

--cluster: 指定为要部署的数据库集群名称,该名称也将作为集群中所有节点上初始创建数据库的名称(database name)。 --port: 指定SSH服务端口。 --install-path: 指定数据库安装路径。 --data-path: 指定数据存放目录。 --begin-port: 指定数据库监听端口。

1.2、配置文件yashandb.toml

[yashan@hellodba56 install]$ cat yashandb.toml # 以下内容以实际展示结果为准 #数据库名,安装后不能修改 cluster = "yashandb" #为true部署完会执行示例的sql,若改为true需要在deploy时指定sys-password参数 create_simple_schema = false #系统自动生成,不建议修改 uuid = "64f04f0e999c72db72bd565762e6a4ea" #部署模式,安装后修改也不会生效,除非重新安装 yas_type = "SE" [[group]] #安装后修改也不会生效,除非重新安装 group_type = "db" #安装后修改也不会生效,除非重新安装 name = "dbg1" #可配置所有建库参数,不配置时采用默认值 [group.config] #字符集 CHARACTER_SET = "utf8" #归档模式 ISARCHIVELOG = true #redo文件数 REDO_FILE_NUM = 4 #redo大小 REDO_FILE_SIZE = "128M" [[group.node]] #数据目录,安装后不能修改 data_path = "/YashanDB/yasdb_data" #主机id,安装后不能修改 hostid = "host0001" #数据库主备角色,安装后不能修改(1主2备) role = 1 #可配置所有数据库参数,不配置时采用默认值,安装后修改可以生效(只读参数不可修改) [group.node.config] LISTEN_ADDR = "192.168.0.56:1688" REPLICATION_ADDR = "192.168.0.56:1689" RUN_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/run" RUN_LOG_LEVEL = "INFO" SLOW_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/slow" [[group.node]] data_path = "/YashanDB/yasdb_data" hostid = "host0002" role = 2 [group.node.config] LISTEN_ADDR = "192.168.0.57:1688" REPLICATION_ADDR = "192.168.0.57:1689" RUN_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/run" RUN_LOG_LEVEL = "INFO" SLOW_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/slow" [[group.node]] data_path = "/YashanDB/yasdb_data" hostid = "host0003" role = 2 [group.node.config] LISTEN_ADDR = "192.168.0.58:1688" REPLICATION_ADDR = "192.168.0.58:1689" RUN_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/run" RUN_LOG_LEVEL = "INFO" SLOW_LOG_FILE_PATH = "/YashanDB/yasdb_home/yashandb/23.1.1.100/log/yashandb/db-1-1/slow"

1.3、配置文件hosts.toml

[yashan@hellodba56 install]$ cat hosts.toml uuid = "657fe7489a305f2e73a0a71ae84bffbe" cluster = "yashandb" yas_type = "SE" secret_key = "19cff9c7ccf024f9" add_yasdba = true [om] hostid = "host0001" [om.config] LISTEN_ADDR = "192.168.0.56:1675" [[host]] hostid = "host0001" group = "yashan" user = "yashan" password = "hellodba" ip = "192.168.0.56" port = 22 path = "/YashanDB/yasdb_home" jvm_path = "" total_memory = 0 [host.yasagent] [host.yasagent.config] LISTEN_ADDR = "192.168.0.56:1676" [[host]] hostid = "host0002" group = "yashan" user = "yashan" password = "hellodba" ip = "192.168.0.57" port = 22 path = "/YashanDB/yasdb_home" jvm_path = "" total_memory = 0 [host.yasagent] [host.yasagent.config] LISTEN_ADDR = "192.168.0.57:1676" [[host]] hostid = "host0003" group = "yashan" user = "yashan" password = "hellodba" ip = "192.168.0.58" port = 22 path = "/YashanDB/yasdb_home" jvm_path = "" total_memory = 0 [host.yasagent] [host.yasagent.config] LISTEN_ADDR = "192.168.0.58:1676"

2、执行安装

[yashan@hellodba56 ~]$ cd /YashanDB/install [yashan@hellodba56 install]$ ./bin/yasboot package install -t hosts.toml -i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz checking install package... install version: yashandb 23.1.1.100 host0001 100% [====================================================================] 3s host0002 100% [====================================================================] 3s host0003 100% [====================================================================] 3s update host to yasom...

3、数据库部署

3.1、执行部署命令

[yashan@hellodba56 install]$ ./bin/yasboot cluster deploy -t yashandb.toml type | uuid | name | hostid | index | status | return_code | progress | cost ------------------------------------------------------------------------------------------------------------ task | 00968c7505faf75c | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 23 ------+------------------+--------------------+--------+----------+---------+-------------+----------+------ task completed, status: SUCCESS

3.2、生效环境变量

部署命令成功执行后将会在$YASDB_HOME目录下的conf文件夹中生成<<集群名称>>.bashrc环境变量文件。
此步骤需以yashan用户登录到每个节点上执行。

// 三台主机 [yashan@hellodba56 ~]$ cd /YashanDB/yasdb_home/yashandb/23.1.1.100/conf [yashan@hellodba56 conf]$ cat yashandb.bashrc >> ~/.bashrc [yashan@hellodba56 conf]$ source ~/.bashrc

4、修改sys用户口令

[yashan@hellodba56 ~]$ yasboot cluster password set -n Yashan@123 -c yashandb type | uuid | name | hostid | index | status | return_code | progress | cost ---------------------------------------------------------------------------------------------------------- task | a80914aac1a1bf0d | YasdbPasswordSet | - | yashandb | SUCCESS | 0 | 100 | 2 ------+------------------+------------------+--------+----------+---------+-------------+----------+------ task completed, status: SUCCESS

5、验证安装是否成功

5.1、查看数据库状态

[yashan@hellodba56 ~]$ yasboot cluster status -c yashandb -d hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path --------------------------------------------------------------------------------------------------------------------------------------------- host0001 | db | 1-1:1 | 22527 | open | normal | primary | 192.168.0.56:1688 | /YashanDB/yasdb_data/db-1-1 ----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+----------------------------- host0002 | db | 1-2:2 | 22217 | open | normal | standby | 192.168.0.57:1688 | /YashanDB/yasdb_data/db-1-2 ----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+----------------------------- host0003 | db | 1-3:3 | 22236 | open | normal | standby | 192.168.0.58:1688 | /YashanDB/yasdb_data/db-1-3 ----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+-----------------------------

5.2、查看实例状态

// hellodba56 [yashan@hellodba58 ~]$ yasboot sql -d 'sys/"Yashan@123"'@192.168.0.56:1688 SQL> select database_id,database_name,open_mode,database_role,protection_mode from v$database; DATABASE_ID DATABASE_NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE -------------------------------------------------------------------------------------------------------- 3759747645 yashandb READ_WRITE PRIMARY MAXIMUM PROTECTION // hellodba57 [yashan@hellodba58 ~]$ yasboot sql -d 'sys/"Yashan@123"'@192.168.0.57:1688 SQL> select database_id,database_name,open_mode,database_role,protection_mode from v$database; DATABASE_ID DATABASE_NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE --------------------------------------------------------------------------------------------------------- 3759747645 yashandb READ_ONLY STANDBY MAXIMUM PROTECTION // hellodba58 [yashan@hellodba58 ~]$ yasboot sql -d 'sys/"Yashan@123"'@192.168.0.58:1688 SQL> select database_id,database_name,open_mode,database_role,protection_mode from v$database; DATABASE_ID DATABASE_NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE ------------------------------------------------------------------------------------------------------- 3759747645 yashandb READ_ONLY STANDBY MAXIMUM PROTECTION

四、主备机数据同步测试

1、创建表空间

// hellodba56 // 查看表空间数据文件 SQL> select file_name,tablespace_name,status from dba_data_files; FILE_NAME TABLESPACE_NAME STATUS ----------------------------------------------------------------------------------------------------------------------------------------- /YashanDB/yasdb_data/db-1-1/dbfiles/system SYSTEM ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/sysaux SYSAUX ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/temp TEMP ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/swap SWAP ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/users USERS ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/undo UNDO ONLINE // 创建表空间 SQL> CREATE TABLESPACE hellodba DATAFILE '/YashanDB/yasdb_data/db-1-1/dbfiles/hellodba01.dbf' SIZE 10M AUTOEXTEND ON NEXT 4M MAXSIZE 1G; SQL> select file_name,tablespace_name,status from dba_data_files; FILE_NAME TABLESPACE_NAME STATUS ----------------------------------------------------------------------------------------------------------------------------------------- /YashanDB/yasdb_data/db-1-1/dbfiles/system SYSTEM ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/sysaux SYSAUX ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/temp TEMP ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/swap SWAP ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/users USERS ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/undo UNDO ONLINE /YashanDB/yasdb_data/db-1-1/dbfiles/hellodba01.dbf HELLODBA ONLINE

2、创建用户并授权

// hellodba56 SQL> create user hellodba identified by hellodba default tablespace hellodba; SQL> grant dba to hellodba; SQL> select username,default_tablespace from dba_users where account_status='OPEN'; USERNAME DEFAULT_TABLESPACE -------------------------------------------------------------------------------------------------------------------------------- SYS SYSTEM HELLODBA HELLODBA

3、创建表并插入数据

// hellodba56 SQL> create table hellodba.test01(id int,name varchar(20)); SQL> insert into hellodba.test01 values (1,'hellodba01'); SQL> insert into hellodba.test01 values (2,'hellodba02'); SQL> insert into hellodba.test01 values (3,'hellodba03'); SQL> insert into hellodba.test01 values (4,'hellodba04'); SQL> insert into hellodba.test01 values (5,'hellodba05'); SQL> commit; SQL> select * from hellodba.test01; ID NAME ------------ --------------------- 1 hellodba01 2 hellodba02 3 hellodba03 4 hellodba04 5 hellodba05

4、备库同步检查

从结果来看,在主库上创建的表空间、用户、数据表,都已经同步到备库上面了。

// hellodba57 查看表空间数据文件 SQL> select file_name,tablespace_name,status from dba_data_files; FILE_NAME TABLESPACE_NAME STATUS ----------------------------------------------------------------------------------------------------------------------------------------- /YashanDB/yasdb_data/db-1-2/dbfiles/system SYSTEM ONLINE /YashanDB/yasdb_data/db-1-2/dbfiles/sysaux SYSAUX ONLINE /YashanDB/yasdb_data/db-1-2/dbfiles/temp TEMP ONLINE /YashanDB/yasdb_data/db-1-2/dbfiles/swap SWAP ONLINE /YashanDB/yasdb_data/db-1-2/dbfiles/users USERS ONLINE /YashanDB/yasdb_data/db-1-2/dbfiles/undo UNDO ONLINE /YashanDB/yasdb_data/db-1-2/dbfiles/hellodba01.dbf HELLODBA ONLINE // hellodba58 查看表空间数据文件 SQL> select file_name,tablespace_name,status from dba_data_files; FILE_NAME TABLESPACE_NAME STATUS ----------------------------------------------------------------------------------------------------------------------------------------- /YashanDB/yasdb_data/db-1-3/dbfiles/system SYSTEM ONLINE /YashanDB/yasdb_data/db-1-3/dbfiles/sysaux SYSAUX ONLINE /YashanDB/yasdb_data/db-1-3/dbfiles/temp TEMP ONLINE /YashanDB/yasdb_data/db-1-3/dbfiles/swap SWAP ONLINE /YashanDB/yasdb_data/db-1-3/dbfiles/users USERS ONLINE /YashanDB/yasdb_data/db-1-3/dbfiles/undo UNDO ONLINE /YashanDB/yasdb_data/db-1-3/dbfiles/hellodba01.dbf HELLODBA ONLINE // hellodba57 数据查看 SQL> select * from hellodba.test01; ID NAME ------------ --------------------- 1 hellodba01 2 hellodba02 3 hellodba03 4 hellodba04 5 hellodba05 // hellodba57 数据查看 SQL> select * from hellodba.test01; ID NAME ------------ --------------------- 1 hellodba01 2 hellodba02 3 hellodba03 4 hellodba04 5 hellodba05

五、总结

  到此YashanDB 23.1单机主备(一主两备)部署就完成了。部署过程全部是参照官方文档完成的 官方文档。整体部署下来还是顺利的。主备模式的部署并没有比单机部署复杂多少,更多的是一些重复性操作,后面会继续分享有关YashanDB学习过程中的心得体会。希望国产数据库团队继续秉承着自己的初心,不断突破技术壁垒,提升产品的功能和性能。相信在你们的努力下,国产数据库将会越来越好!

 
公众号:Hello DBA
 
扫码_搜索联合传播样式标准色版.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论