DM数据库备份还原介绍与一些概念的总结

        近日学习DM数据库关于备份还原、数据守护等过程中,经常接触到一些日志、包以及各种英文缩写等概念,由于每个技术文档侧重点各有不同,对很多知识点、概念的深入情况也不一样,才学习的过程中难免来回查阅,同时难以形成整体的印象。作为个人总结,以备份还原为本文主要内容,同时将DM数据库的系统理论由浅入深进行总结。本篇主要涉及备份还原理论,实战内容较多,会在之后的文章中介绍与演示。

基本概念

  • 数据库(Datbase):数据库(Database)是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件),保存在物理磁盘或文件系统中。
  • 实例/数据库实例:一组操作系统进程(或者是一个多线程的进程)以及一些内存。通过数据库实例,可以操 作数据库,一般情况下,我们访问、修改数据库都是通过数据库实例来完成的。
  • DM数据库存储在服务器的磁盘上,而 DM 实例则存储于服务器的内存中。通过运行 DM 实例,可以操作 DM 数据库中的内容。在任何时候,一个实例只能与一个数据库进行关联(装 载、打开或者挂起数据库)。
    单节点库中,一个数据库只有一个数据库实例。
    DMDSC集群中,一个数据库有多个数据库实例,多个实例共同访问同一个数据库中的数据。 数据守护系统,是以库为单位进行管理的。
    数据守护系统是以库为单位进行管理的。
  • DM逻辑存储结构:DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。
    • SYSTEM 表空间:存放了 DM 数据库全局字典信息和全局系统数据,是 DM 数据库能够正常运行的必要前提,默认对应数据文件 SYSTEM.DBF。CREATE TABLE 等 DDL 操作会修改 SYSTEM 表空间数据。
    • ROLL 表空间:存放 DM 数据库运行过程中产生的所有回滚记录。ROLL 表空间是数据库全局对象,不论修改哪一个表空间,生成的回滚记录都是写入 ROLL 表空间,该表空间由系统自动维护,默认数据文件为 ROLL.DBF。
    • TEMP 表空间:存放临时表数据以及数据库运行过程中产生的临时数据。TEMP 表空间是数据库全局对象,由系统自动维护。若数据库重启,保存在 TEMP 表空间中的所有数据都会丢失。默认数据文件为 TEMP.DBF。
    • MAIN 表空间:MAIN 表空间为混合表空间。在创建用户时,如果没有指定默认表空间,系统自动指定 MAIN 表空间为用户默认的表空间。MAIN 表空间的默认数据文件为 MAIN.DBF,默认 HUGE 数据文件路径为 HMAIN 目录所在路径。
    • 用户自定义表空间:即用户通过创建表空间相关操作生成的表空间。
  • 记录:数据库表中的每一行是一条记录。在 DM 中,除了 HUGE 表,其他的表都是在数据页中 按记录存储数据的。
    数据页(也称数据块)是 DM 数据库中最小的数据存储单元。页的大小对应物理存储空 间上特定数量的存储字节。
    :簇是数据页的上级逻辑单元,由同一个数据文件中 16 个或 32 个或 64 个连续的数据页 组成。在 DM 数据库中,簇的大小由用户在创建数据库时指定。
    :段是簇的上级逻辑分区单元,它由一组簇组成。在同一个表空间中,段可以包含来自不 同文件的簇,即一个段可以跨越不同的文件。段包括临时段、数据段和回滚段等。
  • DM物理存储结构:DM数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。典型的物理存储结构包括:用于进行功能设置的配置文件充;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件重做日志文件归档日志文件备份文件;用来进行问题跟踪的跟踪日志文件等。
  • 配置文件:配置文件是 DM 数据库用来设置功能选项的一些文本文件的集合,配置文件以 ini 为扩 展名。
  • 控制文件:每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记 录了数据库必要的初始信息,包括数据库名称、数据库服务器模式、OGUID唯一标识、服务器版本等一系列控制信息。
  • 数据文件:数据文件以 dbf 为扩展名,它是数据库中最重要的文件类型,一个 DM 数据文件对应磁 盘上的一个物理文件或者达梦分布式数据库中的一个逻辑文件。
  • 数据文件的数据组织形式:
    • B树:行存储数据,也是应用最广泛的存储形式,其数据是按 B 树索引组织的。普通表、分区 表、B 树索引的物理存储格式都是 B 树。当表上没有指定聚集索引时,系统会自动产生一个唯一标识 rowid 作为 B 树的 key 来 唯一标识一行。
    • 堆表:堆表的数据是以挂链形式存储的,一般情况下,支持最多 128 个链表,一个链表在物理 上就是一个段。
    • 列存储:数据按列方式组织存储,包含每个列对应的存放列数据的一系列数据文件,以及存放列 数据控制信息的辅助表。读取列数据时,只需要顺序扫描列数据文件和辅助表数据。
    • 位图索引:位图索引与 B 树索引不同,每个索引条目不是指向一行数据,而是指向多行数据。每个 索引项保存的是一定范围内所有行与当前索引键值映射关系的位图。
  • 重做日志文件(Redo文件):
    • 重做日志(即 REDO 日志)指在 DM 数据库中添加、删除、修改对象,或者改变数据, DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。在系统故障重启时,就可以通过重做 REDO 日志,可以将数据库恢复到故障前的状态。重做日志文件因为是数据库正在使用的日志文件,因此被称为联机日志文件。
    • DM 数据库默认包含两个扩展名为 log 的日志文件,用来保存 REDO 日志,称为联机重做日志文件(联机Redo日志文件)。这两个文件循环使用(系统内部分为0、1号日志文件)。任何数据页从内存缓冲区写入磁盘之前,必须保证其对应的 REDO 日志已经写入到联机日志文件。
    • 0号联机Rodo文件是Redo日志主文件,在日志主文件头里保存了诸如CKPT_LSN,CKPT_FILE, CKPT_OFFSET,FILE_LSN等信息。 随着检查点(Checkpoint)的推进,对应产生Redo日志的数据页从数据缓冲区(DATA Buffer) 写入磁盘后,联机Redo日志文件可以覆盖重用、循环使用,确保Redo日志文件不会随着日志 量的增加而增长。
    • 系统磁盘空间总是有限,系统必须能够循环利用日志文件的空间,为了做到这一点,当所有日志文件空间被占满时,系统需要清空一部分日志以便重用日志文件的空间,为了保证被清空的日志所“保护”的数据在磁盘上是安全的, 这里需要引入检查点概念。当产生检查点时,系统将系统缓冲区中的日志和脏数据页都写入磁盘,以保证当前日志所“保护”的数据页都已安全写入磁盘,这样日志文件即可被安全重用。
  • Redo日志包(RLOG_PKG):是DM数据库批量保存物理事务产生的Redo日志的数据单元,以物理事务PTX为单位保存日志,一个日志包内可连续保存一个或多个PTX。
    • 日志包具有自描述(自描述:当前组件包含了自身与其他组件交互相关的描述信息,不需要其他的配置文件或者额外信息来描述,即不需要其他外部信息就能工作)的特性,日志包大小不固定, 采用固定包头和可变包头结合的方式,包头记录日志的控制信息,包括类型长度包序号LSN 信息产生日志的节点号加密压缩信息日志并行数等内容。
    • 日志包生成时按照序号连续递增,相邻日志包的LSN顺序是总体递增的,但是在多节点集群的 DSC环境下不一定连续。如果开启并行日志,则并行日志包内LSN具有局部有序,整体无序的特点。
    • 物理事务提交时将Redo日志写入到日志包中,在数据库事务提交或日志包被写满时触发日志刷盘动作。
    • 日志刷盘线程负责将日志包中的Redo日志写入联机日志文件,如果配置了Redo日志归档,日志刷盘线程还将负责触发归档动作。 DM数据守护系统中,主库以RLOG_PKG为最小单位发送Redo日志到备库。
  • LSN(Log Sequence Number):由系统自动维护的 Bigint 类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。
    • 物理事务 (Physical Transaction,简称 ptx)是数据库内部一系列修改物理数据页操作的集合, 与数据库管理系统中事务(Transaction)概念相对应,具有原子性、有序性、无法撤销等特性。
    • DM数据库中与LSN相关的信息,可以通过查询V$RLOG和 V$RAPPLY_PARALLEL_INFO 表来获取。主要包含的类型:
      • CUR_LSN :系统已经分配的最大 LSN 值。物理事务提交时分配并自增。
      • FILE_LSN :已经写入联机 Redo 日志文件的日志包的最大 LSN 值。每次将 Redo 日志包 RLOG_PKG 写入联机 Redo 日志文件后,都要修改 FILE_LSN。
      • FLUSH_LSN :已经发起日志刷盘请求,但还没有真正写入联机 Redo 日志文件的 最大 LSN 值。
      • CKPT_LSN :检查点 LSN,所有 LSN <= CKPT_LSN 的物理事务修改的数据页, 都已经从 Buffer 缓冲区写入磁盘,CKPT_LSN 由检查点线程负责调整。
  • 联机日志文件、日志包 RLOG_PKG 以及相关各 LSN 之间的关系:
                                      
  • 归档日志:日志文件分为联机日志文件归档日志文件。归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成了归档日志文件。归档日志文件以归档时间命名,扩展名也是 log。
    • DM 数据库可以在归档模式和非归档模式下运行。非归档模式下,数据库会只将重做日志写入联机日志文件中进行存储归档模式下, 数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。即只有在归档模式下运行时, DM 数据库才会将重做日志写入到归档日志文件中。
    • 采用归档模式会对系统的性能产生影响, 然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,因为一 旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。
    • 归档分为本地归档、远程归档、即时归档,实时归档以及异步归档五类。
  • 备份文件:备份文件以 bak 为扩展名,当系统正常运行时,备份文件不会起任何作用,它也不是数 据库必须有的联机文件类型之一。然而,当数据库出现故障时,备份文件就显得尤为重要。
    当客户利用管理工具或直接发出备份的 SQL 命令时,DM Server 会自动进行备份,并产生一个或多个备份文件,备份文件自身包含了备份的名称、对应的数据库、备份类型和备份时间等信息,还会自动记录备份信息及该备份文件所处的位置。

归档说明

        备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小,这是因为利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。

数据库模式

        DM支持Normal,Primary、Standby三种数据库模式:

  1. Normal模式:提供正常的数据库服务,操作没有限制。正常生成本地归档,但不发送实时归档 、即时归档和异步归档。
  2. Primary 模式:提供正常的数据库服务,操作有极少限制。该模式下部分功能受限,包括:不支持修改表空间文件名、不支持修改 arch_ini 参数。正常生成本地归档,支持实时归档 、即时归档和异步归档。Primary 模式下,对临时表空间以外的所有的数据库对象的修改操作都强制生成 Redo 日志。
  3. Standby 模式:可以执行数据库备份、查询等只读数据库操作。正常生成本地归档,正常发送异步归档 Redo 日志;但实时归档、即时归档均强制失效。该模式下时间 触发器、事件触发器等都失效。

        要修改数据库模式,可以使用SQL语句:"ALTER DATABADE <模式名>" 切换,但是切换模式必须在mount状态(下文会介绍)下执行。

数据库状态

        数据库状态包括:

  1. Startup:系统刚启动时的状态
  2. After Redo:系统启动过程中联机日志重做完成后,回滚活动事务前设置为 After Redo 状态。非 Standby 模式的实例在执行 alter database open 操作前,也会将系统设置为 After Redo 状态。
  3. Open:数据库处于正常提供服务的状态,但不能进行归档配置等操作。
  4. Mount:数据库在 Mount 状态下,不能修改数据,不能访问表、视图等数据库对象,但可以执行修改归档配置、控制文件和修改数据库模式等操作,也可以执行一些不修改数据库内容的操作,比如查询动态视图或者一些只读的系统过程。由于 Mount 状态不生成 PWR 日志,因 此数据页可以正常刷盘,也正常推进检查点。
  5. Suspend:在 Suspend 状态下,可以访问数据库对象,甚至可以修改数据,但限制 Redo 日志刷盘,一旦执行 COMMIT 等触发 Redo 日志刷盘的操作时,当前操作将被挂起。一般在修改归档状态之前将系统切换为 Suspend 状态。
  6. Shutdown:实例正常退出时设置为 Shutdown 状态。

        系统从 Open 状态切换为 Mount 状态时,会强制回滚所有活动事务,但不会强制清理 (Purge)已提交事务,不会强制断开用户连接,也不会强制 Buffer 中的脏页刷盘。

        Open 到 Suspend 的状态切换相比到Mount更加简单、高效,不会回滚任何活动事务,在状态切换完成后,所有事务可以继续执行。

        Mount 和 Suspend 状态不能直接转换, 其他状态为系统内部状态, 用户不能主动干预。

        各状态如图:

         修改数据库状态同样可以使用SQL语句:“ALTER DATABASE <状态名>”

 归档分类

本地归档

        本地归档(LOCAL):顾名思义,即将 Redo 日志写入到本地归档日志文件的过程。 配置本地归档情况下,Redo 日志刷盘线程将 Redo 日志写入联机 Redo 日志文件后,对应的 RLOG_PKG 由专门的归档线程负责写入本地归档日志文件中。

        不同于Redo日志文件,本地归档日志文件无法被覆盖,写入的归档日志会一直保留直到用户删除,如果设置了归档文件大小上限,当达到上限时,系统会自动删除最早配置的归档日志文件。

        如果磁盘空间不足,且没有配置归档日志空间上限(或者配置的上限超过实际空间),系统将自动挂起,直到用户主动释放出足够的空间后继续运行。

远程归档

        所谓远程归档,顾名思义就是将归档目录配置在远程节点上。远程归档专门用于 DMDSC 环境中。远程归档采用双向配置的方式,双向配置远程归档就是两个节点将自己的远程归档相互配置在对方机器上。集群中所有的节点,都拥有一套包括所有节点的,完整的归档日志文件。

        具体有两种配置方式:一是共享本地归档的远程归档,即将远程归档目录配置为另一节 点的本地归档目录,以此来共享它的本地归档日志文件;二是通过 MAL 发送的远程归档, 即将写入本地归档的 REDO 日志信息,通过 MAL 发送到远程节点,并写入远程节点的指定 归档目录中,形成远程归档日志文件。

实时归档

        与本地归档写入保存在磁盘中的日志文件不同,实时归档将主库产生的 Redo 日志通过 MAL 系统传递到备库,实时归档是实时主备和 MPP 主备的实现基础(也可以实现读写分离集群)。实时归档只在主库生效,一个主库可以配置 1~8 个实时备库。

        实时归档的执行流程是,主库在 Redo 日志(RLOG_PKG)写入联机日志文件前,将 Redo 日志发送到备库,备库收到 Redo 日志(RLOG_PKG)后标记为 KEEP_PKG,将原 KEEP_PKG 加入日志重演任务系统,并马上响应主库,不需要等待 Redo 日志重演结束后再响应主库。 主库收到备库的响应消息,确认备库已经收到 Redo 日志后,再将 Redo 日志写入联机日志文件中。

即时归档

        即时归档(Timely)在主库将 Redo 日志写入联机日志文件后,通过 MAL 系统将 Redo 日志发送到备库。即时归档与实时归档的主要区别是 Redo 日志的发送时机不同。一个主库可以配置 1~8 个即时备库。

        根据备库重演 Redo 日志和响应主库时机的不同,即时归档分为两种模式:事务一致模式高性能模式。即时归档模式根据配置文件 dmarch.ini 中的 ARCH_WAIT_APPLY 配置项(默认值为 1)来确定,1 表示事务一致模式,0 表示高性能模式。

  • 事务一致模式:主库事务提交触发 Redo 日志刷盘和即时归档,备库收到主库发 送的 Redo 日志,并重演完成后再响应主库。主库收到备库响应消息后,再响应用户的提交 请求。事务一致模式下,同一个事务的 SELECT 语句无论是在主库执行,还是在备库执行, 查询结果都满足 READ COMMIT 隔离级要求。
  • 高性能模式:与实时归档一样,备库收到主库发送的 Redo 日志后,马上响应主库,再启动日志重演。高性能模式下,备库与主库的数据同步存在一定延时,不能严格保证事务一致性。

异步归档

        由主、备库上配置的定时器触发,根据异步备库的 KEEP LSN 信息,扫描本地归档目录获取 Redo 日志,并通过 MAL 系统将 Redo 日志发送到异步备库。 异步备库的 Redo 日志重演过程与实时归档等其他类型的归档完全一致。

归档切换

        由于本地归档和远程归档是异步写入归档日志文件的,REDO 日志在写入联机日志文件后,再由专门的归档线程负责将这些 REDO 日志写入本地归档日志文件。通过归档切换功能, 可以将这些已经写入联机日志文件,但还没有写入归档日志文件的REDO日志,写入到归档日志文件中。

        执行如下SQL语句即可完成档案切换:

alter database archivelog current;

备份

        数据库的备份按数据组织形式、数据库状态、备份粒度、备份内容、以及备份的一致性和完整性等差异,可以从不同角度分类。

按数据库状态

        根据备份时数据库状态的不同,可以将数据库备份分为联机备份与脱机备份。

  • 联机备份:数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作。
  • 脱机备份:数据库处于关闭状态时进行的备份操作,被称为脱机备份(正在运行的数据库,无法执行 脱机备份,系统会报错)。

按数据的组织形式

        联机备份:将数据库逻辑组件(库级、模式级、表级)的数据导出到 文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。

        物理备份:直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理备份过程中,不关心数据页的具体内容是什么,也不关心数据页属于哪一张表, 只是简单的根据数据库文件系统的描述,来挑选有效的数据页。

按照备份数据完整性

        按照备份数据完整性,可将备份分为完全备份和增量备份。

        完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。当数据规模比较大的情况下,生成的完全备份集较大,而且备份时间也会较长。

        增量备份是在某个特定备份集基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、提高备份速度。这个特定的、已经存在的备份集称为增量备份的基备份。根据对基备份的要求不同,DM 的增量备份分为两种:
        差异增量备份:差异增量备份的基备份既可以是一个完全备份集,也可以是一个增量备份集。利用增量备份进行还原操作时,要求其基备份必须是完整的;如果差异增量备份的基备份本身也是一个增量备份,那么同样要求其基备份是完整的。
        累积增量备份:累积增量备份的基备份只能是完全备份集,而不能是增量备份集。 增量备份的基备份集既可以是脱机备份生成的,也可以是联机备份生成的,脱机增量备份的基备份集可以是联机备份生成的,联机增量备份的基备份集也可以是脱机备份生成的。

按备份的内容

        备份按照备份内容不同,可以分为数据备份和归档日志备份。

数据备份

        数据备份主要针对数据文件内容,包括库备份、表空间备份和表备份。库备份和表空间备份支持增 量备份,表备份不支持增量备份。

        库备份:顾名思义,对整个数据库执行的备份,又称为库级备份。库备份会拷贝数据库中所有数据文件的有效数据页,如果是联机备份,则还会拷贝备份过程中产生的归档日志, 写入到备份集中。

        表空间备份:表空间备份是针对特定表空间执行的备份,又称为表空间级备份。表空间备份只拷贝指定表空间的数据页,因此,相对于数据库备份而言,表空间备份的 速度会更快,生成的备份集会更小。对一些包含关键数据的用户表空间,我们可以使用表空间备份功能,进一步保障数据安全。表空间备份支持完全备份和增量备份,但只能在联机状态下执行。不支持 temp 表空间备份还原。

        表备份:表备份拷贝指定表的所有数据页到备份集中,并会记录各个数据页之间的逻辑关系用 以恢复。表备份只能在联机状态下执行,一次表备份操作只能备份一张用户表,表备份不需要配置归档就可以执行,并且不支持增量表备份。

归档日志备份

        归档日志备份,是专门针对归档日志文件进行操作,不涉及任何数据文件内容。归档日志备份扫描归档目录收集归档日志文件,并将归档日志写入到备份集中。既可以在数据库运行状态下,执行联机归档日志备份;也可以在数据库关闭状态下执行脱机归档日志备份。

按照备份集中的数据的一致性

        按照备份集中的数据是否满足一致性,可以将备份划分为一致性备份和非一致性备份。

        一致性备份的备份集包含了完整的数据文件内容和归档日志信息;利用一个单独的备份集可以将数据库恢复到备份时状态。不指定 WITHOUT LOG 选项的联机备份生成的备份集 就是一致性备份。脱机数据库备份会强制将检查点之后的有效 REDO 日志拷贝到备份集中, 因此,脱机备份一定是一致性备份。数据库正常关闭时,会生成完全检查点,脱机备份生成的备份集中,不包含任何 REDO 日志。

        非一致性备份的备份集只包含数据文件相关内容,没有归档日志信息,利用非一致性备份还原的数据库,无法直接启动,必须借助归档日志来恢复。表空间备份、指定 WITHOUT LOG 选项的联机备份生成的备份集都是非一致性备份集。

还原与恢复

        还原是备份的逆过程,就是从备份集中读取数据页,并将数据页写入到目标数据库对应数据文件相应位置的过程。

        由于联机备份时,系统中可能存在一些处于活动状态的事务正在执行,并不能保证备份集中的所有数据页是处于一致性状态;而脱机备份时,数据页不一定是正常关闭的,也不能 保证备份集中所有数据页是处于一致性状态。因此,还原结束后目标库有可能处于非一致性状态,不能马上提供数据库服务;必须要进行数据库恢复操作后,才能正常启动。

        与备份类似,根据数据组织形式、数据库状态、还原粒度、还原内容等不同,同样可以从不同角度分类。在此不再花篇幅赘述。

备份还原工具

        DM数据库中备份还原的工具主要有Disql工具、DMRMAN工具、图形化客户端(Manager)工具、CONSOLE控制台工具和dexp/dimp工具五种。其中前四种主要用于物理备份,dexp/dimp工具是逻辑导出/导入工具,用于逻辑备份还原。

        Disql工具通过SQL语句对数据库进行物理联机备份还原。DM 支持通过联机执行 SQL 语句方式对数据库执行备份还原操作。联机方式支持数据库、 用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表 空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。

        DMRMAN工具是 DM 的脱机备份还原管理工具,由它来统一负 责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制 台交互方式执行,降低了用户的操作难度。

        DM 数据库提供几种类型的图形化客户端管理工具,其中就包括图形化客户端工具Manager和CONSOLE控制台工具。利用Manager可以进行物理联机备份还原,而利用CONSOLE则可进行物理脱机备份还原

关于更多DM数据库信息请咨询DM社区文档: https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值