ClickHouse安装及数据结构_MYSQL轻松学的博客-CSDN博客


本站和网页 https://blog.csdn.net/liang_0609/article/details/86707799 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

ClickHouse安装及数据结构_MYSQL轻松学的博客-CSDN博客
ClickHouse安装及数据结构
MYSQL轻松学
于 2019-01-30 19:47:57 发布
5221
收藏
分类专栏:
clickhouse
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liang_0609/article/details/86707799
版权
clickhouse
专栏收录该内容
7 篇文章
0 订阅
订阅专栏
ClickHouse安装及结构说明
一、ClickHouse安装方式
源码编译安装Docker安装RPM包安装
为了方便使用,一般采用RPM包方式安装,其他两种方式这里不做说明。
二、下载安装包
官方没有提供rpm包,但是Altinity第三方公司提供了。
地址:https://packagecloud.io/altinity/clickhouse
三、配置文件
安装好rmp包后,默认配置文件在/etc/clickhouse-server/目录下,主要涉及以下3种配置文件,也可以自定义配置文件位置,如果修改了目录记得连带修改启动脚本。
默认启动脚本,注意,这个名字虽然叫server,其实是个shell脚本
vi /etc/init.d/clickhouse-server
12  CLICKHOUSE_USER=clickhouse 13  CLICKHOUSE_GROUP=${CLICKHOUSE_USER} 14  SHELL=/bin/bash 15  PROGRAM=clickhouse-server 16  GENERIC_PROGRAM=clickhouse 17  EXTRACT_FROM_CONFIG=${GENERIC_PROGRAM}-extract-from-config 18  SYSCONFDIR=/data/clickhouse 19  CLICKHOUSE_LOGDIR=/data/clickhouse/logs 20  CLICKHOUSE_LOGDIR_USER=root 21  CLICKHOUSE_DATADIR_OLD=/data/clickhouse 22  LOCALSTATEDIR=/data/clickhouse/lock 23  BINDIR=/usr/bin 24  CLICKHOUSE_CRONFILE=/etc/cron.d/clickhouse-server 25  CLICKHOUSE_CONFIG=$SYSCONFDIR/config.xml 26  LOCKFILE=$LOCALSTATEDIR/$PROGRAM 27  RETVAL=0 29  CLICKHOUSE_PIDDIR=/var/run/$PROGRAM 30  CLICKHOUSE_PIDFILE="$CLICKHOUSE_PIDDIR/$PROGRAM
config.xml  全局信息配置文件
<?xml version=""1.0""?>    <yandex>    <!--日志-->    <logger>    <level>error</level>    <log>/data/clickhouse/logs/clickhouse.log</log>    <errorlog>/data/clickhouse/logs/error.log</errorlog>    <size>500M</size>    <count>5</count>    </logger>
   <!--全日志-->    <query_log>    <database>system</database>    <table>query_log</table>    <partition_by>toMonday(event_date)</partition_by>    <flush_interval_milliseconds>7500</flush_interval_milliseconds>    </query_log>    <!--本地节点信息-->    <http_port>8123</http_port>    <tcp_port>9000</tcp_port><!—客户端连接端口-->    <interserver_http_port>9009</interserver_http_port>    <interserver_http_host>本机IP</interserver_http_host>  <!--本机域名或IP-->    <!--本地配置-->    <listen_host>0.0.0.0</listen_host>    <max_connections>4096</max_connections>    <receive_timeout>800</receive_timeout>    <send_timeout>800</send_timeout>    <keep_alive_timeout>300</keep_alive_timeout>    <max_concurrent_queries>1000</max_concurrent_queries>     <uncompressed_cache_size>8589934592</uncompressed_cache_size>    <mark_cache_size>5368709120</mark_cache_size>    <path>/data/clickhouse/</path>    <tmp_path>/data/clickhouse/tmp/</tmp_path>    <users_config>users.xml</users_config>    <default_profile>default</default_profile>    <log_queries>1</log_queries>    <default_database>default</default_database>    <!--集群相关配置-->    <remote_servers incl=""clickhouse_remote_servers""  />    <zookeeper incl=""zookeeper-servers""  optional=""true""   />    <macros incl=""macros""  optional=""true"" />    <builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>    <max_session_timeout>3600</max_session_timeout>    <default_session_timeout>300</default_session_timeout>    <max_table_size_to_drop>0</max_table_size_to_drop>    <merge_tree>    <parts_to_delay_insert>300</parts_to_delay_insert>    <parts_to_throw_insert>600</parts_to_throw_insert>    <max_delay_to_insert>2</max_delay_to_insert>    </merge_tree>    <max_table_size_to_drop>0</max_table_size_to_drop>     <max_partition_size_to_drop>0</max_partition_size_to_drop>    <distributed_ddl>    <!-- Path in ZooKeeper to queue with DDL queries -->    <path>/clickhouse/task_queue/ddl</path>    </distributed_ddl>     <include_from>/etc/clickhouse-server/metrika.xml</include_from>    </yandex>
users.xml  用户信息配置文件
<?xml version="1.0"?>    <yandex>    <profiles>    <default>    <max_memory_usage>10000000000</max_memory_usage>    <use_uncompressed_cache>0</use_uncompressed_cache>    <load_balancing>random</load_balancing>    </default>    <readonly>    <max_memory_usage>10000000000</max_memory_usage>    <use_uncompressed_cache>0</use_uncompressed_cache>    <load_balancing>random</load_balancing>    <readonly>1</readonly>    </readonly>    </profiles>    <quotas>    <!-- Name of quota. -->    <default>    <interval>    <queries>0</queries>    <errors>0</errors>    <result_rows>0</result_rows>    <read_rows>0</read_rows>    <execution_time>0</execution_time>    </interval>    </default>    </quotas>    <users>    <default><!—用户名-->    <!-- PASSWORD=$(base64 < /dev/urandom | head -c8); echo  "$PASSWORD"; echo -n  "$PASSWORD" | sha256sum | tr -d '-'   -->    <!-- password UHXQQmhb -->  <password_sha256_hex>65b84b497ef843f7c9629251a64e307caecbf7327975af4d18f83261239e1460</password_sha256_hex>    <networks>    <ip>::/0</ip>    </networks>    <profile>default</profile>    <quota>default</quota>    </default>    <ck><!—用户名-->  <password_sha256_hex>65b84b497ef843f7c9629251a64e307caecbf7327975af4d18f83261239e1460</password_sha256_hex>    <networks>    <ip>::/0</ip>    </networks>    <profile>readonly</profile>    <quota>default</quota>    </ck>    </users>    </yandex>
metrika.xml  集群信息配置文件
<yandex>
<!--ck集群节点-->
<clickhouse_remote_servers>
<zabbixdata_ck_cluster>
<!--分片01-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.1.1</host>
<port>9000</port>
<user>default</user>
<password>password</password>
</replica>
<replica>
<host>192.168.1.2</host>
<port>9000</port>
<user>default</user>
<password>Password</password>
</replica>
</shard>
<!--分片02-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.1.3</host>
<port>9000</port>
<user>default</user>
<password>Password</password>
</replica>
<replica>
<host>192.168.1.4</host>
<port>9000</port>
<user>default</user>
<password>Password</password>
</replica>
</shard>
</zabbixdata_ck_cluster>
</clickhouse_remote_servers>
<!--zookeeper相关配置-->
<zookeeper-servers>
<node index="1">
<host>192.168.1.5</host>
<port>2181</port>
</node>
<node index="2">
<host>192.168.1.6</host>
<port>2181</port>
</node>
<node index="3">
<host>192.168.1.7</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<layer>01</layer>
<shard>01</shard>
<replica>192.168.1.1</replica> <!--当前节点IP-->
</macros>
<networks>
<ip>::/0</ip>
</networks>
<!--压缩相关配置-->
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method> <!--压缩算法lz4压缩比zstd快, 更占磁盘-->
</case>
</clickhouse_compression>
</yandex>
四、ClickHouse常用架构
单实例
无需过多解释,就是单机部署,安装好rpm包后,简单修改配置文件即可启动;
单实例不建议线上使用,只做功能测试;
MergeTree,引擎适用于单机实例,查询性能非常高。
分布式+高可用集群
ClickHouse引擎有十几个,不同引擎实现不同功能,实现分布式高可用主要通过以下两种引擎:
ClickHouse分布式通过配置文件来实现,同一集群配置多个分片,每个节点,都配置同样的配置文件;而高可用需要借助zookeeper来实现,ReplicatedMergeTree里共享同一个ZK路径的表,会相互同步数据。
ReplicatedMergeTree,复制引擎,基于MergeTree,实现数据复制,即高可用;
Distributed,分布式引擎,本身不存储数据,将数据分发汇总。
五、分布式高可用集群架构
以下是2个分片、2个副本集的架构,zookeeper机器可以跟ClickHouse共用,但是如果压力较大,IO消耗较多,可能会延迟,建议分开。
role shard1 shard2 replica 192.168.1.1 192.168.1.3 replica 192.168.1.2 192.168.1.4
zookeeper集群:
index node 1     192.168.1.5 2     192.168.1.6 3    192.168.1.7
六、安装zookeeper集群,至少3台
1、下载安装包,建议3.4.9之后的版本
http://archive.apache.org/dist/zookeeper/
2、解压
tar zxf /usr/local/test/clickhouse/zookeeper-3.4.13.tar.gz -C /usr/local mv /usr/local/zookeeper-3.4.13 /usr/local/zookeeper
3、创建目录:
mkdir /data/zookeeper/data mkdir /data/zookeeper/logs
4、指定节点号
echo '1' > /data/zookeeper/data/myid
5、zookeeper配置文件
/usr/local/zookeeper/conf/zoo.cfg
tickTime=2000 基本时间单位, 毫秒值 initLimit=30000 tickTime的倍数,follower和leader之间的最长心跳时间 syncLimit=10 tickTime的倍数,leader和follower之间发送消息, 请求和应答的最大时间 dataDir=/export/data/zookeeper/data 数据目录 dataLogDir=/export/data/zookeeper/logs 日志目录,如果没设定,默认和dataDir相同 clientPort=2181 监听client连接的端口号 maxClientCnxns=2000 zookeeper最大连接 maxSessionTimeout=60000000 最大的会话超时时间 autopurge.snapRetainCount=10 保留的文件数目,默认3个 autopurge.purgeInterval=1 自动清理snapshot和事务日志,清理频率,单位是小时 globalOutstandingLimit=200 等待处理的最大请求数量 preAllocSize=131072 日志文件大小Kb,切换快照生成日志 snapCount=3000000 两次事务快照之间可执行事务的次数,默认的配置值为100000 leaderServes=yes leader是否接受client请求,默认为yes即leader可以接受client的连接,当节点数为>3时,建议关闭 server.1=192.168.1.5:2888:3888 2888 leader\follower传输信息端口,3888推举端口 server.2=192.168.1.6:2888:3888 2888 leader\follower传输信息端口,3888推举端口 server.3=192.168.1.7:2888:3888 2888 leader\follower传输信息端口,3888推举端口
6、启动
/usr/local/zookeeper/bin/zkServer.sh [start\status\stop]
七、安装clickhouse
1、下载并安装上面rpm安装包
2、参考配置上面的配置文件
如果采用上面的配置文件需要创建目录 3、mkdir -p /data/clickhouse/tmp /data/clickhouse/logs /data/clickhouse/lock/
4、修改权限
chown clickhouse.clickhouse -R /data/clickhouse
5、启动(有两种方式)
/etc/init.d/clickhouse-serve start
clickhouse-server --daemon --config-file=/etc/clickhouse-server/config.xml
6、登录验证
clickhouse-client -u default --password password -h127.0.0.1
7、目录结构
Metadata:元数据目录,.sql文件
Data:数据目录
Logs:日志目录,错误日志再次目录下
其他目录暂时无需了解
8、数据文件
在items表的每一个part子目录中,存放如下文件下面这些文件:
columns.txt:记录列信息
count.txt:记录总数
checksums.txt:数据校验
.bin:每列都有,存储实际数据
.mrk文件:bin数据文件中,索引粒度偏移量(index_granularity (usually, N = 8192)
minmax_EventDate.idx:时间字段索引
primary.idx:存储主键信息,存储在内存中
这里展示了mrk文件和primary文件的具体结构,可以看到,数据是按照主键排序的,并且会每隔一定大小分隔出很多个block。每个block中也会抽出一个数据作为索引,放到primary.idx和各列的mrk文件中。
而利用mergetree进行查询时,最关键的步骤就是定位block,这里会根据查询的列是否在主键内有不同的方式。根据主键查询时性能会较好,但是非主键查询时,由于按列存储的关系,虽然会做一次全扫描,性能也没有那么差。所以索引在clickhouse里并不像mysql那么关键。实际使用时一般需要添加按日期的查询条件,保障非主键查询时的性能。
找到对应的block之后,就是在block内查找数据,获取需要的行,再拼装需要的其他列数据。
MYSQL轻松学
关注
关注
点赞
收藏
打赏
评论
ClickHouse安装及数据结构
ClickHouse安装及结构说明一、ClickHouse安装方式源码编译安装Docker安装RPM包安装为了方便使用,一般采用RPM包方式安装,其他两种方式这里不做说明。二、下载安装包官方没有提供rpm包,但是Altinity第三方公司提供了。地址:https://packagecloud.io/altinity/clickhouse三、配置文件安装好r...
复制链接
扫一扫
专栏目录
Clickhouse离线安装包
08-07
解压后有3个文件,分别考到Ubuntu下安装。内容格式为*.deb
列式数据库~clickhouse 底层存储原理
weixin_34050519的博客
08-15
3072
简介:今天介绍列式数据库的一些基本原理
一 数据目录
Data目录 数据存储目录,数据按照part分成多个文件夹,每个文件夹下存储相应数据和对应的元信息文件
Metadata 表定义语句,存储所有表的建表语句
二 基本原理
记录方式:每隔8192行数据,是1个block,主键会每隔8192,取一行主键列的数据,同时记录这是第几个block
...
评论 1
您还未登录,请先
登录
后发表或查看评论
ClickHouse - 多卷存储扩大存储容量(生产环境必备)
DataFlow范式
12-21
8668
笔者最近工作有点忙,加上培训较多,近期文章更新慢了一拍。不过,今天为 ClickHouse 的爱好者带来一篇非常不错的文章,部分内容来自 Altinity,以及笔者补充和整理而成。长期使...
Clickhouse安装部署
mnasd的博客
11-02
304
Atomic 中的所有表都有持久的 UUID,数据存储在/clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/ 路径下。执行DROP TABLE 命令,不会删除任何数据,Atomic 数据库只是通过将元数据移动到 /clickhouse_path/metadata_dropped/,并将表标记为已删除,并通知 DatabaseCatalog。指令集,因此,除非另有说明,支持它的CPU使用将成为额外的系统需求。
上海_深圳_2019_Clickhouse_Meetup_ppt
11-04
《Roadmap and overview of ClickHouse》 AlekSei Milovidov
《基于clickhouse玩转每天千亿数据量》 趣头条 王海胜
《Clickhouse与mysql/mongodb的CRUD同步》上海晓信 王超
《Clickhouse在苏宁用户画像场景的实践》 苏宁 架构师 杨兆辉
《Clickhouse在喜马拉雅的应用》喜马拉雅 黄弋简
《Clickhouse在众安的应用实践及百亿保险数据实时分析探索》众安保险 蒙强
《Clickhouse 自定义函数的开发与落地应用》氪信科技 胡宸章
《Continue to use ClickHouse as TSDB》 青云 Eason 邰翀
《Recently released features and future plans》 Ivan Blinkov(TBD)
《ClickHouse编写自定义计算函数》 Sundy Li
《Clickhouse 在Tencent的应用实践》Tencent 丁晓坤 周东祥
《ClickHouse MergeTree原理解析》 远光软件 朱凯
《数仓Clickhouse多维分析应用实践》 华润万家 数据分析高级经理 朱元
clickhouse20.8.2.3全套rpm包
09-23
clickhouse-server-20.8.2.3-2.noarch.rpm clickhouse-common-static-20.8.2.3-2.x86_64.rpm clickhouse-client-20.8.2.3-2.noarch.rpm
大数据-ClickHouse技术一(安装部署)
qq_36602951的博客
09-24
844
大数据技术-ClickHouse技术初体验
ClickHouse安装部署【非常详细】
不才伟才的博客
01-07
1万+
本文非常详细地记录了clickhouse安装部署的过程,仅供参考~
freemarker取list前几条数据
tmd
09-25
622
1、取前几条数据
<@_categoryListid=4>
<#assign n = 0 />// 遍历list之前定义assign=0
<#list page.list as column>
<#assign n = n+1 />// list里面再定义assign
<#if n gt 3>&l...
clickhouse单节点以及集群的安装
最新发布
persistence_PSH的博客
11-27
797
​在clickhouse集群中,没有主从一说,所有的节点都是主,相互之间互为副本,某一个节点的数据发生变化,就会提交写日志给zookeeper,其他节点就会从zookeeper监听到数据发生了变化,然后从数据发生变化的节点同步数据。Centos取消SELINUX(linux的一种安全机制,非常强大,但是也非常麻烦),是内核级别的东西,必须重启,也可以设置为临时生效,等下次服务器维护重启,配置自然也生效了。分片,下面是资源不够用的情况,只有3个节点,没有副本。在 中编辑。
Clickhouse安装步骤
默主归沙的博客
03-09
3316
首先要自己把四个安装包上传到本地
链接:https://pan.baidu.com/s/1h1d38zU7YrAgDQdlpMMMHw
提取码:0aij
--来自百度网盘超级会员V1的分享
测试一下系统能不能装
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
安装(就是先进入那四个文件所在的文件夹目录,再执行下面的代码)
rpm -ivh ./cli
clickhouse的索引结构和查询优化
热门推荐
进化的深山猿
01-09
5万+
clickhouse存在很多引擎,下面的所有内容基于MergeTree引擎
首先看下官网的主键相关内容:
索引效用实例-以MergeTree 为例
MergeTree 系列的引擎,数据是由多组部分文件组成的,一般来说,每个月(译者注:CK目前最小分区单元是月)会有几个部分文件(这里的部分就是块)。
每一个部分的数据,是按照主键进行字典序排列。例如,如果你有一个主键是(CounterID,D...
【ClickHouse系列】ClickHouse之zk目录结构说明
一只努力的微服务
04-01
3396
zk目录结构
创建基于zk的ck集群(3zk-2shards-2replicas),主要信息如下:
metrika1.xml
<?xml version="1.0" encoding="utf-8"?>
<yandex>
<clickhouse_remote_servers>
<default>
<shard>
&lt...
05_ClickHouse、MergeTree系列引擎概述与存储结构、建表模板、建表语句、MergeTree设置、建表示例、数据存储、数据片段(data part)
涂作权的博客
12-02
731
2.MergeTree系列引擎概述与存储结构
2.1.建表模板
2.2.建表语句
2.3.MergeTree设置
2.4.建表示例
2.5.数据存储
2.6.数据片段(data part)
2.MergeTree系列引擎概述与存储结构
MergeTree系列引擎是ClickHouse中最强大的表引擎。
数据按照片段被一批批写入表。
数据片段在后台按照一定的规则进行合并。
主要特征:
数据按照主键排序
稀疏索引快速检索数据
数据分片
增加查询性能
数据副本
ReplicatedMergeTree系列的引
Clickhouse安装及使用
yimenglin的博客
08-24
3989
一、简介
Yandex在2016年6月15日开源了一个数据分析的数据库,名字叫做ClickHouse,这对保守俄罗斯人来说是个特大事。更让人惊讶的是,这个列式存储数据库的跑分要超过很多流行的商业MPP数据库软件,例如Vertica。如果你没有听过...
clickhouse insert的数据结构
探索者的博客
10-30
603
clickhouse insert大致分为两部分
1. sql语句部分 insert into table (f1,f2)
2. 数据部分
数据部分又分为3部分(头,数据,尾)
-. 数据头
-. 数据块1
-. 数据块2
-. 数据块N
-. 数据尾
从中可以看出 每个insert可以包含多个数据块,没个数据块可以包含多行。一个完整的insert执行后,clickhouse会生成一个临时文件夹,里面包含了当前的数据,clickhouse会定时把这些文件合并。建了一个clickhouseQQ欢迎加入
clickhouse安装详细教程
qq_46533159的博客
11-18
491
clickhousehouse手把手教你安装
clickhouse 副本同步失败问题
penglingfeng1995的博客
02-21
932
编辑 config.xml
然后找到以下标签放开注释,这里是用来副本间传数据的地址端口,端口默认配好了是9009,防火墙需要放开这个端口,地址需要配置下指定当前主机具体的地址,不能是127.0.0.1 ,localhost之类的,不然别的主机读不到这台机。
<interserver_http_port>9009</interserver_http_port>
<interserver_http_host>192.168.x.x</interserver_ht
Clickhouse的安装
qq_51096974的博客
09-22
271
ClickHouse安装
Clickhouse分布式部署
Alex_Sheng_Sea的博客
08-10
813
9001 cm agent 端口号 9003
9010 zookeeper jmx 9011
info warning
#### 0.添加hosts
-----------------------
#### 1.创建目录
---------------
centos-1 创建目录:
mkdir -p /data1/clickhouse/{node1,node4}/{data,tmp,logs}
centos-2 创建目录:
mkdir -p /data1/...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:技术黑板
设计师:CSDN官方博客
返回首页
MYSQL轻松学
CSDN认证博客专家
CSDN认证企业博客
码龄11年
暂无认证
74
原创
7万+
周排名
107万+
总排名
30万+
访问
等级
2438
积分
80
粉丝
78
获赞
47
评论
327
收藏
私信
关注
热门文章
Mysql8.0&Mysql5.7&Mysql5.6&Mysql5.5特性对比
67642
Clickhouse基本操作
32699
科普:一文读懂IPv6是什么?
26403
编译error: no acceptable C compiler found in $PATH
23859
MYSQL面试选择题15道(单选)
16867
分类专栏
分布式
12篇
Python
2篇
MYSQL轻松学
16篇
mysql
31篇
clickhouse
7篇
最新评论
编译error: no acceptable C compiler found in $PATH
qq_28935065:
Package gcc-c++-4.8.5-44.el7.x86_64 already installed and latest version
Nothing to do
提示已经安装,但是再执行./configure 的时候还是会出现同样的问题
【MySQL】开源数据闪回工具—binlog2sql介绍
itnmg0520:
很干货
mysql load data部分字段的正确写法
LucyGill:
谢谢博主,总算解决问题了
编译error: no acceptable C compiler found in $PATH
lmw0320:
要找个能联网的机子,搭建离网机相同的系统。然后离线下载好相应的deb包(针对ubuntu系统的。如果是centos啥的,则要下载rpm包),然后dpkg -i * deb,一键完成安装即可。
ubuntu下的deb包下载命令是:
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends XXX | grep -v i386 | grep "^\w") # XXX就是你要安装的东东,你可以试试
编译error: no acceptable C compiler found in $PATH
暗河、:
怎么解决的兄弟?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
编译error: no acceptable C compiler found in $PATH
MQ消费
列表python排序
2020年37篇
2019年12篇
2018年4篇
2017年9篇
2016年3篇
2015年11篇
目录
目录
分类专栏
分布式
12篇
Python
2篇
MYSQL轻松学
16篇
mysql
31篇
clickhouse
7篇
目录
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
MYSQL轻松学
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值