第十二周作业

1、主从复制及主主复制的实现

  1. 主从复制的实现:
Master(主服务器)CentOS8-10.0.8.18:
#安装数据库
yum install -y mysqld
#修改配置文件
vim  /etc/my.cnf.d/mysql-server.cnf
[mysqld]
#增加以下几行
server-id=18
log-bin=/data/mysql/nologin/mysql-bin  #CentOS8默认开启二进制。二进制存放路径/data/mysql/nologin。(mkdir  /data/mysql/nologin/  -p ;chown -R mysql:mysql  /data/mysql/nologin/ )

#启动服务
systemctl  start  mysqld

进入数据库:
#查看数据库中的二进制文件和位置
show  master   logs;   
 mysql-bin.000001 |       156 |

#创建复制用户
create user  'repluser'@'10.0.8.%';
#赋予该用户所有权限
grant replication slave on *.*  to  'repluser'@'10.0.8.%';
Slave(从服务器)CentOS8-10.0.8.28:
#安装数据库
yum install -y mysqld
#修改配置文件
vim  /etc/my.cnf.d/mysql-server.cnf
[mysqld]
#增加该行
server-id=28
#启动服务
systemctl  start  mysqld

进入数据库:
#执行以下命令
CHANGE MASTER TO MASTER_HOST='10.0.8.18', 
MASTER_USER='repluser', 
 MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000001', 
MASTER_LOG_POS=156;
#启动线程
start  slave;
#查看状态
show slave status\G

*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.8.18
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 618
               Relay_Log_File: CS8-VM8-10-relay-bin.000002
                Relay_Log_Pos: 786
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 618
              Relay_Log_Space: 1000
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0     #复制的延迟时间
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 18
                  Master_UUID: 65794410-e24e-11ec-b1a1-000c299f142d
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
       Master_public_key_path: 
        Get_master_public_key: 0
            Network_Namespace: 
1 row in set, 1 warning (0.01 sec)


  1. 主主复制的实现(互为主从关系):
主节点1(Master1)CentOS8-10.0.8.18:
yum  install -y  mysqld
#修改配置文件
vim  /etc/my.cnf.d/mysql-server.cnf
[mysqld]
#增加以下几行
server-id=18
log-bin=/data/mysql/nologin/mysql-bin

#重启服务
systemctl  restart  mysqld

进入数据库:
#查看数据库中的二进制文件和位置
show  master   logs;  
mysql-bin.000001 |       156 | 

创建账号并赋予权限:
create user repluser@'10.0.8.%' identified by "000000";
grant replication slave on *.* to repluser@"10.0.8.%";

然后在主节点2上执行
CHANGE MASTER TO....(该步骤在主节点2上)

CHANGE MASTER TO
     MASTER_HOST='10.0.8.28',
     MASTER_USER='repluser',
     MASTER_PASSWORD='000000',
     MASTER_PORT=3306,
     MASTER_LOG_FILE='mysql-bin.000001',
     MASTER_LOG_POS=695;

#start  slave;
#show slave status\G
...
 Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.8.28
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 695
               Relay_Log_File: CS8-VM8-10-relay-bin.000002
                Relay_Log_Pos: 324
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...
             SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
           ...

主节点2(Master2)CentOS8-10.0.8.28:
yum  install -y  mysqld
#修改配置文件
vim  /etc/my.cnf.d/mysql-server.cnf
[mysqld]
#增加以下几行
server-id=28
log-bin=/data/mysql/nologin/mysql-bin

#重启服务
systemctl  restart  mysqld


进入数据库:

执行以下命令
CHANGE MASTER TO
     MASTER_HOST='10.0.8.18',
     MASTER_USER='repluser',
     MASTER_PASSWORD='000000',
     MASTER_PORT=3306,
     MASTER_LOG_FILE='mysql-bin.000001',
     MASTER_LOG_POS=156;
#start  slave;
#show slave status\G
...
        Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.8.18
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 681
               Relay_Log_File: CS8-VM8-10-relay-bin.000002
                Relay_Log_Pos: 849
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...
  Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
...



#查看数据库中的二进制文件和位置
show  master   logs;  
mysql-bin.000001 |       695 |  
(然后再主节点1,同样执行CHANGE MASTER TO....)


验证:

在主节点1中执行:mysql> create database db1;
在主节点2中查询:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

2、xtrabackup实现全量+增量+binlog恢复库

xtrabackup执行完毕:出现"completed OK!"代表命令执行成功。

源主机CentOS8-10.0.8.18:

#安装对应的软件
yum install -y percona-xtrabackup-80-8.0.28-21.1.el8.x86_64.rpm
#建立备份的相应目录
mkdir   /backup/
#开启数据库
systemctl start mysqld
#导入数据库
mysql < hellodb_innodb.sql 
#完全备份
xtrabackup -uroot --backup --target-dir=/backup/base
#进入数据库
mysql
#第一次修改数据
mysql> insert teachers values(null,'ZS','16','F');
#第一次增量备份
xtrabackup -uroot --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base
#第二次修改数据
mysql> insert teachers values(null,'LS','18','M');
#第二次增量备份
xtrabackup -uroot --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

#把源主机的备份(完全备份加两次增量备份)拷贝到目标主机(CentOS8-10.0.8.28)。目标主机应该要有/backup该目录,否则在此之前应该先建立该文件夹。
scp  -r  /backup/*  10.0.8.28:/backup/

目标主机CentOS8-10.0.8.28还原:

 #安装对应的软件
 yum install -y percona-xtrabackup-80-8.0.28-21.1.el8.x86_64.rpm
 #还原完全备份(选项--apply-log-only 阻止回滚未完成的事务)
 xtrabackup --prepare  --apply-log-only --target-dir=/backup/base
 #还原第一次增量备份至完全备份中
 xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1
 #还原第二次增量备份至完全备份中(最后一次还原该选项--apply-log-only不需要)
 xtrabackup --prepare   --target-dir=/backup/base --incremental-dir=/backup/inc2
 #复制到数据库目录中。(数据库目录应该为空且MYSQL服务不能够启动。如果目录不为空,则:systemctl stop mysqld  ; rm rf  /var/log/mysql/*。)
 xtrabackup --copy-back --target-dir=/backup/base
 #属性还原
 chown -R mysql:mysql /var/lib/mysql
 #启动服务
 systemctl  start mysqld
 

验证:


mysql> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name          | Age | Gender |
+-----+---------------+-----+--------+
|   1 | Song Jiang    |  45 | M      |
|   2 | Zhang Sanfeng |  94 | M      |
|   3 | Miejue Shitai |  77 | F      |
|   4 | Lin Chaoying  |  93 | F      |
|   5 | ZS            |  16 | F      |
|   6 | LS            |  18 | M      |
+-----+---------------+-----+--------+
6 rows in set (0.00 sec)

3、MyCAT实现MySQL读写分离

本实验四台机器,都在CS8上操作:客户端(10.0.8.8)、mycat服务器(10.0.8.38)、Master(10.0.8.18)、Slave(10.0.8.28)
主从复制参照上文。

客户端(10.0.8.8):

#使用默认端口登录:
mysql -uroot -p123456 -h 10.0.8.38 -P8066
#查看数据库
show  databases;
+----------+
| DATABASE |
+----------+
| TESTDB   |     有TESTDB虚拟数据库,说明连接成功

#切换数据库
mysql> use  TESTDB;    #TESTDB虚拟数据库映射会主动映射成真正数据库hellodb( 真正数据库在Master主服务器上/apps/mycat/conf/schema.xml定义了)
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed     #(说明切换成功)

#测试读写操作
 select * from teachers;
 insert teachers values(5,'wang',30,'M');
------------------------------------------------------------------------------
#从节点停止服务时:
mysql> select * from teachers;
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
Connection id:    10
Current database: TESTDB

+-----+---------------+-----+--------+
| TID | Name          | Age | Gender |
+-----+---------------+-----+--------+
|   1 | Song Jiang    |  45 | M      |
|   2 | Zhang Sanfeng |  94 | M      |
|   3 | Miejue Shitai |  77 | F      |
|   4 | Lin Chaoying  |  93 | F      |
|   5 | wang          |  30 | M      |
+-----+---------------+-----+--------+
5 rows in set (0.03 sec)


mycat服务器(10.0.8.38):内存3G以上

#下载并安装Mycat
wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
#解压缩至指定文件夹/apps/中
mkdir  /apps/
tar vxf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz -C  /apps/
#安装java
yum install -y java
#加入环境变量
echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.sh
.    /etc/profile.d/mycat.sh 
--------------------------------------------------------------------------
mycat
file /apps/mycat/bin/mycat
--------------------------------

#启动mycat服务
 mycat start 
#查看是否启动成功
tail  -f    /apps/mycat/logs/wrapper.log 
INFO   | jvm 1    | 2022/06/20 21:59:20 | MyCAT Server startup successfully. see logs in logs/mycat.log            #mycat服务开启成功

#修改配置文件,实现读写分离:
vim    /apps/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
 <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"
dataNode="dn1">
 </schema>
 <dataNode name="dn1" dataHost="localhost1" database="hellodb" />
 <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
  writeType="0" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100">
 <heartbeat>select user()</heartbeat>
 <writeHost host="host1" url="10.0.8.18:3306" user="root"
   password="123456">   #Master应该创建相对应的账号(root)、密码(123456)。
         <readHost host="host2" url="10.0.8.28:3306" user="root"
password="123456" />
 </writeHost>
   </dataHost>
</mycat:schema>

#重启服务
mycat  restart 
successfully. see logs in logs/mycat.log            #mycat服务重启成功

#查看端口:(8066------Mycat默认端口)
[10:15:47 root@CS8-VM8-10 ~][#ss -ntl
State                Recv-Q               Send-Q                             Local Address:Port                              Peer Address:Port              Process               
LISTEN               0                    1                                      127.0.0.1:32000                                  0.0.0.0:*                                       
LISTEN               0                    128                                      0.0.0.0:111                                    0.0.0.0:*                                       
LISTEN               0                    128                                      0.0.0.0:22                                     0.0.0.0:*                                       
LISTEN               0                    5                                      127.0.0.1:631                                    0.0.0.0:*                                       
LISTEN               0                    128                                      0.0.0.0:32919                                  0.0.0.0:*                                       
LISTEN               0                    50                                             *:1984                                         *:*                                       
LISTEN               0                    100                                            *:8066                                         *:*                                       
LISTEN               0                    50                                             *:39267                                        *:*                                       
LISTEN               0                    70                                             *:33060                                        *:*                                       
LISTEN               0                    100                                            *:9066                                         *:*                                       
LISTEN               0                    128                                            *:3306                                         *:*                                       
LISTEN               0                    128                                         [::]:111                                       [::]:*                                       
LISTEN               0                    50                                             *:42099                                        *:*                                       
LISTEN               0                    128                                         [::]:22                                        [::]:*                                       
LISTEN               0                    5                                          [::1]:631                                       [::]:*                                       
LISTEN               0                    128                                         [::]:57787                                     [::]:*

Master(10.0.8.18):

根据Mycat服务器中/apps/mycat/conf/schema.xml,创建用户并授权。

create user root@'10.0.8.%' identified by '123456';
grant all on *.* to root@'10.0.8.%';

#开启通用日志,并写入配置文件
开启通用日志:
show  variables like 'general%';
set  global   general_log=1 ;  
通用日志存放位置:/var/lib/mysql/master.log (/var/lib/mysql/CS8-VM8-10.log)
tail -f   /var/lib/mysql/master.log
写入配置文件:
vim  /etc/my.cnf.d/mysql-server.cnf
[mysqld]
general_log=ON

#重启服务
systemctl restart  mysqld

#查看通用日志
tail -f /var/lib/mysql/CS8-VM8-10.log
...
2022-06-21T07:29:50.444592Z	   39 Query	select user()   #select user()健康行检查
2022-06-21T07:30:00.442737Z	   42 Query	select user()
2022-06-21T07:30:10.442440Z	   37 Query	select user()
2022-06-21T07:30:10.687383Z	   35 Query	insert teachers values(5,'wang',30,'M')    #记入写操作

Slave(10.0.8.28):

#开启通用日志,并写入配置文件
开启通用日志:
show  variables like 'general%';
set  global   general_log=1 ;  
通用日志存放位置:/var/lib/mysql/slave.log (/var/lib/mysql/CS8-VM8-10.log)
tail -f   /var/lib/mysql/master.log
写入配置文件:
vim  /etc/my.cnf.d/mysql-server.cnf
[mysqld]
general_log=ON

#重启服务
systemctl restart  mysqld

#查看通用日志
tail -f /var/lib/mysql/CS8-VM8-10.log
...
2022-06-21T07:29:50.443860Z	   11 Query	select user()
2022-06-21T07:29:50.753241Z	   10 Query	select * from teachers
2022-06-21T07:29:51.607792Z	   12 Query	select * from teachers  #记入读操作
...

注:本实验使用默认端口8066登录。

4、ansible常用模块介绍

#查看帮助:
ansible-doc  --help
#统计目前的所有模块(-l ),并计数(wc  -l):
ansible-doc -l | wc -l
#查看某模块的帮助:
ansible-doc    [-s]  module_name   --help

ansible:
**ansible <host-pattern> [-m module_name] [-a args]**

1.command(在远程主机执行命令,默认模块,-m选项可省略。不支持某些特定符号:<、>、|、&等,可能用shell模块实现。此模块不具有幂等性。)
例:
ansible  webservers  -m  command  -a  'chdir=/etc  cat  centos-release'

2. shell  (和command相似,用shell执行命令,支持各种符号,比如:*,$, >。此模块不具有幂等性。 )
例:
ansible webservers -m shell -a "echo $HOSTNAME"

3. script(在远程主机上运行ansible服务器上的脚本(无需执行权限);此模块不具有幂等性)
例:
ansible websrvs -m script -a /data/test.sh

4. copy(从ansible服务器主控端复制文件到远程主机;src=file 如果是没指明路径,则为当前目录或当前目录下的files目录下的file文件)  
例:
#如果目标文件存在,默认覆盖(应该先备份)
ansible websrvs -m copy -a "src=/root/test1.sh dest=/tmp/test2.sh   owner=wang 
mode=600 backup=yes"
#指定内容,直接生成目标文件
ansible websrvs -m copy -a "content='test line1\ntest line2\n' 
dest=/tmp/test.txt"

5. get_url(用于将文件从http、https或ftp下载到被管理机节点上)    
6. fetch(从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录)
例:
ansible websrvs -m fetch -a 'src=/root/test.sh         dest=/data/scripts'
7.file (设置文件属性,创建软链接等)
例:
#创建空文件:
ansible all -m file  -a 'path=/data/test.txt state=touch'
ansible all -m file  -a 'path=/data/test.txt state=absent'
#创建目录
ansible all -m file -a "path=/data/mysql state=directory owner=mysql 

ansible all -m file  -a 'path=/data/testdir state=directory'
#创建软链接
ansible all -m file -a 'src=/data/testfile    path|dest|name=/data/testfile-link    state=link'
8. stat(检查文件或文件系统的状态--Windows用win_stat模块)
例:
 ansible 127.0.0.1 -m stat -a 'path=/etc/passwd'(path是绝对路径) 

9. unarchive(解包解压缩)
方法一:将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes,此为默认值,可省略
方法二:将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no 
例:
ansible all -m unarchive -a 'src=/data/foo.tgz dest=/var/lib/foo owner=wang  group=bin'
ansible all -m unarchive -a 'src=https://example.com/example.zip dest=/data copy=no'
ansible all -m unarchive -a 'src=/tmp/foo.zip dest=/data copy=no mode=0777'
10. archive(打包压缩保存在被管理节点)
例:
ansible websrvs -m archive  -a 'path=/var/log/   dest=/data/log.tar.bz2   format=bz2  owner=wang   mode=0600'
11. hostname(管理主机名)
例:
ansible 10.0.0.18 -m hostname -a    'name=node18.ncgxy.com'
12. cron(计划任务;支持时间:minute,hour,day,month,weekday)
例:
  #创建任务
  ansible 10.0.0.8 -m cron -a 'hour=2 minute=30 weekday=1-5 name="backup mysql"  job=/root/mysql_backup.sh'
  #禁用计划任务
  ansible websrvs   -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.20.0.1  &>/dev/null'   name=Synctime disabled=yes"
  #启用计划任务
  ansible websrvs   -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.20.0.1  &>/dev/null'   name=Synctime disabled=no"
  #删除任务
  ansible websrvs -m cron -a "name='backup mysql' state=absent"
  ansible websrvs -m cron -a 'state=absent name=Synctime' 
13. yum和apt模块
yum 管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本
apt 模块管理 Debian 相关版本的软件包
例:
#安装
ansible websrvs -m yum -a 'name=httpd state=present' 
(state=absent   删除 )
ansible websrvs -m yum -a 'name=sl,cowsay'
#启用epel源安装
ansible websrvs -m yum -a 'name=nginx state=present enablerepo=epel' 

14. yum_repository 

15. service(管理服务)
例:
ansible all -m service -a 'name=httpd state=started enabled=yes'
(state=started/stoped/reloaded/restarted)

16. user(管理用户)
例:
#创建用户
ansible all -m user -a 'name=user1 comment="test user" uid=2048 home=/app/user1  group=root'

ansible all -m user -a 'name=nginx comment=nginx uid=88 group=nginx   groups="root,daemon"  shell=/sbin/nologin system=yes create_home=no   home=/data/nginx non_unique=yes'
#删除用户(remove=yes表示删除用户及家目录等数据,默认remove=no)
ansible all -m user -a 'name=nginx state=absent remove=yes'

17. group(管理组)
例:
#创建组
ansible websrvs -m group  -a 'name=nginx gid=88 system=yes'
#删除组 
ansible websrvs -m group  -a 'name=nginx state=absent'

18. lineinfile(相当于sed,可以修改文件内容)
 一般在ansible当中去修改某个文件的单行进行替换的时候需要使用lineinfile模块。
 regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最
后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被
删除。
如果想进行多行匹配进行替换需要使用replace模块
例:
ansible all -m   lineinfile -a "path=/etc/selinux/config regexp='^SELINUX=' line='SELINUX=disabled'"

19. replace(上同)
 
20. selinux(管理SELInux策略)
 
21. reboot
ansible websrvs -m reboot 

22. mount挂载和卸载(挂载和卸载文件系统)

23. setup(setup 模块来收集主机的系统信息,这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度)
gather_facts: no禁止ansible收集facts信息
例:ansible  all   -m  setup
ansible all -m setup -a    "filter=ansible_nodename"
("filter=ansible_hostname"、"filter=ansible_domain"、"filter=ansible_memtotal_mb"、
"filter=ansible_memory_mb"、 "filter=ansible_memfree_mb"、"filter=ansible_os_family"
) 
("filter=ansible_distribution_major_version"
"filter=ansible_distribution_version"
"filter=ansible_processor_vcpus"
"filter=ansible_all_ipv4_addresses"
"filter=ansible_architecture"
"filter=ansible_uptime_seconds"
"filter=ansible_processor*"
''filter=ansible_env'')

24. debug(此模块可以用于输出信息,并且通过 msg 定制输出的信息内容,msg后面的变量有时需要加 " " 引起来
) 
   
   
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值