☆【嚣张恒少】MySQL备份脚本

#!/bin/sh
## author zhangheng ##
## date:2019-09-16 ##
## for mysql backup
## 备注:1. 备份文件gzip压缩,解压:gunzip or gzip -d

## -------------------------------------------------
## 自定义变量值(手动录入部分)
## -------------------------------------------------
## 选填项01:备份保留天数(3天)##
delete_date=`date +%Y%m%d -d"-3 day"`
delete_file=`echo ${delete_date}*`

## 必填项01:mysql bin目录
mysql_bin=/usr/local/mysql5.7/bin
## 必填项02:IP
ip=127.0.0.1
## 必填项03:端口
port=4403
## 必填项04:用户名
user=root
## 必填项05:密码
password=root
## 必填项06:参数文件路径
my_cnf=/etc/my.cnf
## 必填项07:备份文件存放目录
back_dir=/mysqldump_backup
## --------------------------------------------------

## --------------------------------------------------
## 变量初始化
## --------------------------------------------------
## 格式:20200703 用作记录具体某天 删除过期文件
date=`date +%Y%m%d`
## 格式:20200703171341 用作命名备份文件
time=`date +%Y%m%d%H%M%S`

## 不用输入密码 去除warning信息
export MYSQL_PWD=$password

## 记下当前目录
dir=`pwd`
## --------------------------------------------------

echo "-----------------------------"
echo "开始数据库备份(MySQL)......"
echo "-----------------------------"
## 备份文件存放目录 如果不存在 则创建
if [ ! -d $back_dir ]
then
mkdir -p $back_dir
fi

## ----------------------------------------------------
## 0、参数文件备份##
## ----------------------------------------------------
echo "step 0: 备份参数文件"
echo "-----------------------------"
## 临时文本初始化值为0(变为1说明执行成功)
echo '0'>tmp_status.txt

## 全库备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_mycnf ]
then
mkdir -p $back_dir/backup_mycnf
fi

## 反斜杠用来取消cp的别名
\cp -f $my_cnf $back_dir/backup_mycnf/$date\_my.cnf

if [ $? -eq 0 ] 
then
echo -n "备份状态:"
echo "复制成功!"
echo "-----------------------------"
else
echo -n "备份状态:"
echo "复制失败!"
echo "-----------------------------"
fi

## ----------------------------------------------------
## 1、全库备份##
## ----------------------------------------------------
echo "step 1: 全库备份(gzip压缩)"

## 临时文本初始化值为0(变为1说明执行成功)
echo '0'>tmp_status.txt

## 全库备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_all ]
then
mkdir -p $back_dir/backup_all
fi

## 记下开始时间
begin1=`date +"%Y-%m-%d %H:%M:%S"`
$mysql_bin/mysqldump -u$user  -h $ip -P $port  --single-transaction --set-gtid-purged=OFF -A --master-data=2 -R -E -F|gzip >$back_dir/backup_all/$time\_all.sql.gz

## 判断是否成功
## 数组值 空格替换为换行 去重
## 正确的情况 去重后应该仅有1个数字 且为0
echo ${PIPESTATUS[@]}>tmp_status.txt
status1=`cat tmp_status.txt|sed s/' '/"\n"/g|sort -u|wc -l`
status2=`cat tmp_status.txt|sed s/' '/"\n"/g|sort -u`

if [ $status1 -eq 1 ] && [ $status2 -eq 0 ]
then status_flag1=1
else status_flag1=0
fi

## 记录日志
if [ $status_flag1 -eq 1 ] 
then
end=`date +"%Y-%m-%d %H:%M:%S"`
b=`date -d "$begin1" +%s`
e=`date -d "$end" +%s`
costtime=`expr $e - $b`
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin1
echo -n "备份状态:" 
echo OK
echo -n "文件大小:"
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_all
filesize1=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize1
echo " M"
echo -n "备份耗时:" 
echo -n $costtime
echo " sec"
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_all/backup.log
echo $begin1 >>$back_dir/backup_all/backup.log
echo -n "备份状态:" >>$back_dir/backup_all/backup.log
echo OK>>$back_dir/backup_all/backup.log
echo -n "文件大小:">>$back_dir/backup_all/backup.log
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_all
filesize1=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize1>>$back_dir/backup_all/backup.log
echo " M">>$back_dir/backup_all/backup.log
echo -n "备份耗时:" >>$back_dir/backup_all/backup.log
echo -n $costtime>>$back_dir/backup_all/backup.log
echo " sec">>$back_dir/backup_all/backup.log
echo '---------------------------- '>>$back_dir/backup_all/backup.log
else
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin1
echo -n "备份状态:" 
echo ERROR
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_all/backup.log
echo $begin1 >>$back_dir/backup_all/backup.log
echo -n "备份状态:" >>$back_dir/backup_all/backup.log
echo ERROR>>$back_dir/backup_all/backup.log
echo '---------------------------- '>>$back_dir/backup_all/backup.log
fi

##删除过期备份##
cd $back_dir/backup_all
ls $delete_file>/dev/null 2>&1
if [ $? -eq 0 ]
then
del=`ls $delete_file`
rm -rf $del
fi

cd $dir

## ----------------------------------------------------
## 2、单库备份
## ----------------------------------------------------
echo "step 2: 单库备份(gzip压缩)"

## 临时文本初始化值为0(变为1说明执行成功)
echo '0'>tmp_status.txt

## 单库备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_per_db ]
then
mkdir -p $back_dir/backup_per_db
fi

## 记下开始时间
begin2=`date +"%Y-%m-%d %H:%M:%S"`

## 查询需要备份的业务库 
for db in `$mysql_bin/mysql -u$user  -h $ip -P $port -e "show databases" |grep -v Database|grep -v information_schema|grep -v performance_schema|grep -v sys`
do

## 备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_per_db/$date\_$db ]
then
mkdir -p $back_dir/backup_per_db/$date\_$db
fi

$mysql_bin/mysqldump -u$user  -h $ip -P $port  --single-transaction --set-gtid-purged=OFF $db --master-data=2 -R -E |gzip >$back_dir/backup_per_db/$date\_$db/$time\_$db.sql.gz

## 判断是否成功
## 数组值 空格替换为换行 去重
## 正确的情况 去重后应该仅有1个数字 且为0
echo ${PIPESTATUS[@]}>tmp_status.txt
status1=`cat tmp_status.txt|sed s/' '/"\n"/g|sort -u|wc -l`
status2=`cat tmp_status.txt|sed s/' '/"\n"/g|sort -u`


if [ $status1 -ne 1 ]||[ $status2 -ne 0 ]
then
break
else 
echo '1'>tmp_status.txt
fi

done

status_flag2=`cat tmp_status.txt`

## 记录日志
if [ $status_flag2 -eq 1 ]
then
end=`date +"%Y-%m-%d %H:%M:%S"`
b=`date -d "$begin2" +%s`
e=`date -d "$end" +%s`
costtime=`expr $e - $b`
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin2 
echo -n "备份状态:" 
echo OK
echo -n "文件大小:"
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_per_db
filesize2=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize2
echo " M"
echo -n "备份耗时:" 
echo -n $costtime
echo " sec"
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_per_db/backup.log
echo $begin2 >>$back_dir/backup_per_db/backup.log
echo -n "备份状态:" >>$back_dir/backup_per_db/backup.log
echo OK>>$back_dir/backup_per_db/backup.log
echo -n "文件大小:">>$back_dir/backup_per_db/backup.log
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_per_db
filesize2=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize2>>$back_dir/backup_per_db/backup.log
echo " M">>$back_dir/backup_per_db/backup.log
echo -n "备份耗时:" >>$back_dir/backup_per_db/backup.log
echo -n $costtime>>$back_dir/backup_per_db/backup.log
echo " sec">>$back_dir/backup_per_db/backup.log
echo '---------------------------- '>>$back_dir/backup_per_db/backup.log
else
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin2
echo -n "备份状态:" 
echo ERROR
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_per_db/backup.log
echo $begin2 >>$back_dir/backup_per_db/backup.log
echo -n "备份状态:" >>$back_dir/backup_per_db/backup.log
echo ERROR>>$back_dir/backup_per_db/backup.log
echo '---------------------------- '>>$back_dir/backup_per_db/backup.log
fi

##删除过期备份##
cd $back_dir/backup_per_db
ls $delete_file>/dev/null 2>&1
if [ $? -eq 0 ]
then
del=`ls -d $delete_file`
## 这里删除的是目录 ##
rm -rf $del
fi

## ----------------------------------------------------
## 3、单表备份
## ----------------------------------------------------
echo "step 3: 单表备份(未压缩)"

## 临时文本初始化值为0(变为1说明执行成功)
echo '0'>tmp_status.txt

## 单表备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_per_table ]
then
mkdir -p $back_dir/backup_per_table
fi

## 记下开始时间
begin3=`date +"%Y-%m-%d %H:%M:%S"`

## 查询需要备份的业务库 
for db in `$mysql_bin/mysql -u$user  -h $ip -P $port -e "show databases" |grep -v Database|grep -v information_schema|grep -v performance_schema|grep -v sys`
do

## 备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_per_table/$date\_$db ]
then
mkdir -p $back_dir/backup_per_table/$date\_$db
fi

## 查询需要备份的表 
for table in `$mysql_bin/mysql -u$user  -h $ip -P $port -e "select table_name from information_schema.tables where table_schema='$db'" |grep -v table_name`
do

## 单表数据可能比较小 就不压缩了
$mysql_bin/mysqldump -u$user  -h $ip -P $port  --single-transaction --set-gtid-purged=OFF $db $table --master-data=2  >$back_dir/backup_per_table/$date\_$db/$time\_$table.sql

## 判断是否成功
if [ $? -ne 0 ]
then
echo '2'>tmp_status.txt
break;
else 
echo '1'>tmp_status.txt
fi


done

## 里面循环break 外面循环也break
break=`cat tmp_status.txt`
if [ $break -eq 2 ]
then break;
fi

done


status_flag3=`cat tmp_status.txt`
## 判断是否成功
## 记录日志
if [ $status_flag3 -eq 1 ] 
then
end=`date +"%Y-%m-%d %H:%M:%S"`
b=`date -d "$begin3" +%s`
e=`date -d "$end" +%s`
costtime=`expr $e - $b`
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin3 
echo -n "备份状态:"
echo OK
echo -n "文件大小:"
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_per_table
filesize3=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize3
echo " M"
echo -n "备份耗时:" 
echo -n $costtime
echo " sec"
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_per_table/backup.log
echo $begin3 >>$back_dir/backup_per_table/backup.log
echo -n "备份状态:" >>$back_dir/backup_per_table/backup.log
echo OK>>$back_dir/backup_per_table/backup.log
echo -n "文件大小:">>$back_dir/backup_per_table/backup.log
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_per_table
filesize3=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize3>>$back_dir/backup_per_table/backup.log
echo " M">>$back_dir/backup_per_table/backup.log
echo -n "备份耗时:" >>$back_dir/backup_per_table/backup.log
echo -n $costtime>>$back_dir/backup_per_table/backup.log
echo " sec">>$back_dir/backup_per_table/backup.log
echo '---------------------------- '>>$back_dir/backup_per_table/backup.log
else
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin3
echo -n "备份状态:" 
echo ERROR
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_per_table/backup.log
echo $begin3 >>$back_dir/backup_per_table/backup.log
echo -n "备份状态:" >>$back_dir/backup_per_table/backup.log
echo ERROR>>$back_dir/backup_per_table/backup.log
echo '---------------------------- '>>$back_dir/backup_per_table/backup.log
fi

##删除过期备份##
cd $back_dir/backup_per_table
ls $delete_file>/dev/null 2>&1
if [ $? -eq 0 ]
then
del=`ls -d $delete_file`
## 这里删除的是目录 ##
rm -rf $del
fi

## ----------------------------------------------------
## 4、备份存储过程及函数
## ----------------------------------------------------
echo "step 4: 备份存储过程及函数"

## 临时文本初始化值为0(变为1说明执行成功)
echo '0'>tmp_status.txt

## 备份存储过程及函数目录 如果不存在 则创建
if [ ! -d $back_dir/backup_pro ]
then
mkdir -p $back_dir/backup_pro
fi

## 记下开始时间
begin4=`date +"%Y-%m-%d %H:%M:%S"`

## 查询需要备份的业务库 
for db in `$mysql_bin/mysql -u$user  -h $ip -P $port -e "show databases" |grep -v Database|grep -v information_schema|grep -v performance_schema|grep -v sys`
do

## 备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_pro/$date\_$db ]
then
mkdir -p $back_dir/backup_pro/$date\_$db
fi

$mysql_bin/mysqldump -u$user  -h $ip -P $port  --single-transaction --set-gtid-purged=OFF $db --master-data=2 -ntd -R  >$back_dir/backup_pro/$date\_$db/$time\_pro.sql

## 判断是否成功
if [ $? -ne 0 ]
then
break;
else 
echo '1'>tmp_status.txt
fi


done

status_flag4=`cat tmp_status.txt`

## 判断是否成功
## 记录日志
if [ $status_flag4 -eq 1 ]
then
end=`date +"%Y-%m-%d %H:%M:%S"`
b=`date -d "$begin4" +%s`
e=`date -d "$end" +%s`
costtime=`expr $e - $b`
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin4 
echo -n "备份状态:" 
echo OK
echo -n "文件大小:"
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_pro
filesize4=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize4
echo " M"
echo -n "备份耗时:" 
echo -n $costtime
echo " sec"
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_pro/backup.log
echo $begin4 >>$back_dir/backup_pro/backup.log
echo -n "备份状态:" >>$back_dir/backup_pro/backup.log
echo OK>>$back_dir/backup_pro/backup.log
echo -n "文件大小:">>$back_dir/backup_pro/backup.log
## 需要进入文件目录计算 否则输入绝对路径 计算的值不一样 具体原因不知道
cd $back_dir/backup_pro
filesize4=`find ./ -iname $time*|xargs du -cm|tail -1|awk '{print $1}'`
cd - 1>/dev/null
echo -n $filesize4>>$back_dir/backup_pro/backup.log
echo " M">>$back_dir/backup_pro/backup.log
echo -n "备份耗时:" >>$back_dir/backup_pro/backup.log
echo -n $costtime>>$back_dir/backup_pro/backup.log
echo " sec">>$back_dir/backup_pro/backup.log
echo '---------------------------- '>>$back_dir/backup_pro/backup.log
else
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin4
echo -n "备份状态:" 
echo ERROR
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_pro/backup.log
echo $begin2 >>$back_dir/backup_pro/backup.log
echo -n "备份状态:" >>$back_dir/backup_pro/backup.log
echo ERROR>>$back_dir/backup_pro/backup.log
echo '---------------------------- '>>$back_dir/backup_pro/backup.log
fi

##删除过期备份##
cd $back_dir/backup_pro
ls $delete_file>/dev/null 2>&1
if [ $? -eq 0 ]
then
del=`ls -d $delete_file`
## 这里删除的是目录 ##
rm -rf $del
fi

## ----------------------------------------------------
## 5、binlog备份
## ----------------------------------------------------
echo "step 5: binlog备份(gzip压缩)"

## 临时文本初始化值为0(变为1说明执行成功)
echo '0'>tmp_status.txt

## binlog备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_binlog ]
then
mkdir -p $back_dir/backup_binlog
fi

## 备份目录 如果不存在 则创建
if [ ! -d $back_dir/backup_binlog/$date/$time ]
then
mkdir -p $back_dir/backup_binlog/$date/$time
fi

## 记下开始时间
begin5=`date +"%Y-%m-%d %H:%M:%S"`

## 判断binlog日志是否开启
log=`$mysql_bin/mysql -u$user  -h $ip -P $port -e "select @@log_bin"|grep -v "log_bin"`
if [ $log -eq 1 ]
then
log_name=`$mysql_bin/mysql -u$user  -h $ip -P $port -e "select @@log_bin_basename"|grep -v "log_bin_basename"`
name=`echo ${log_name##*/}`
dir=`echo ${log_name%/*}`

## 修改时间为距今3天内的日志
find $dir -name "$name*" -newermt "`date -d '-3 day' '+%Y%m%d %H:%M'`" ! -newermt "`date '+%Y%m%d %H:%M'`"|xargs -i cp {} $back_dir/backup_binlog/$date/$time && gzip -r $back_dir/backup_binlog/$date/$time

## 判断是否成功
if [ $? -ne 0 ]
then
:
else 
echo '1'>tmp_status.txt
fi


status_flag5=`cat tmp_status.txt`

## 记录日志
if [ $status_flag5 -eq 1 ]
then
end=`date +"%Y-%m-%d %H:%M:%S"`
b=`date -d "$begin5" +%s`
e=`date -d "$end" +%s`
costtime=`expr $e - $b`
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin5 
echo -n "备份状态:" 
echo OK
echo -n "文件大小:"
filesize5=`du -sm $back_dir/backup_binlog/$date/$time|awk '{print $1}'`
echo -n $filesize5
echo " M"
echo -n "备份耗时:" 
echo -n $costtime
echo " sec"
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_binlog/backup.log
echo $begin2 >>$back_dir/backup_binlog/backup.log
echo -n "备份状态:" >>$back_dir/backup_binlog/backup.log
echo OK>>$back_dir/backup_binlog/backup.log
echo -n "文件大小:">>$back_dir/backup_binlog/backup.log
filesize5=`du -sm $back_dir/backup_binlog/$date/$time|awk '{print $1}'`
echo -n $filesize5>>$back_dir/backup_binlog/backup.log
echo " M">>$back_dir/backup_binlog/backup.log
echo -n "备份耗时:" >>$back_dir/backup_binlog/backup.log
echo -n $costtime>>$back_dir/backup_binlog/backup.log
echo " sec">>$back_dir/backup_binlog/backup.log
echo '---------------------------- '>>$back_dir/backup_binlog/backup.log
else
echo "-----------------------------"
echo -n "备份时间:" 
echo $begin5
echo -n "备份状态:" 
echo ERROR
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup_binlog/backup.log
echo $begin5 >>$back_dir/backup_binlog/backup.log
echo -n "备份状态:" >>$back_dir/backup_binlog/backup.log
echo ERROR>>$back_dir/backup_binlog/backup.log
echo '---------------------------- '>>$back_dir/backup_binlog/backup.log
fi

##删除过期备份##
cd $back_dir/backup_binlog
ls $delete_file>/dev/null 2>&1
if [ $? -eq 0 ]
then
del=`ls -d $delete_file`
## 这里删除的是目录 ##
rm -rf $del
fi


else
echo "二进制日志未开启"
echo "-----------------------------"
echo "二进制日志未开启">>$back_dir/backup_binlog/backup.log
echo '---------------------------- '>>$back_dir/backup_binlog/backup.log

fi

## 最终记录日志
if [ $status_flag1 -eq 1 ]&&[ $status_flag2 -eq 1 ]&&[ $status_flag3 -eq 1 ]&&[ $status_flag4 -eq 1 ]&&[ $status_flag5 -eq 1 ]
then
end=`date +"%Y-%m-%d %H:%M:%S"`
b=`date -d "$begin1" +%s`
e=`date -d "$end" +%s`
costtime=`expr $e - $b`
echo "-----------------------------"
echo "恭喜您!备份成功了!"
echo -n "备份状态:" 
echo OK
echo -n "备份耗时:" 
echo -n $costtime
echo " sec"
echo -n "文件大小:"
filesize=`echo $filesize1+$filesize2+$filesize3+$filesize4+$filesize5|bc`
echo -n $filesize
echo " M"
echo -n "文件路径:" 
echo "$back_dir"
echo "------------------------------"
echo -n "备份时间:" >>$back_dir/backup.log
echo $begin1 >>$back_dir/backup.log
echo -n "备份状态:" >>$back_dir/backup.log
echo OK>>$back_dir/backup.log
echo -n "备份耗时:" >>$back_dir/backup.log
echo -n $costtime>>$back_dir/backup.log
echo " sec">>$back_dir/backup.log
echo -n "文件大小:">>$back_dir/backup.log
filesize=`echo $filesize1+$filesize2+$filesize3+$filesize4+$filesize5|bc`
echo -n $filesize >>$back_dir/backup.log
echo " M">>$back_dir/backup.log
echo -n "文件路径:" >>$back_dir/backup.log
echo ''$back_dir''>>$back_dir/backup.log
echo '---------------------------- '>>$back_dir/backup.log
else

echo "-----------------------------"
echo "很遗憾!备份失败了!"
echo -n "备份时间:" 
echo $begin1
echo -n "备份状态:" 
echo ERROR
echo "-----------------------------"
echo -n "备份时间:" >>$back_dir/backup.log
echo $begin1 >>$back_dir/backup.log
echo -n "备份状态:" >>$back_dir/backup.log
echo ERROR>>$back_dir/backup.log
echo '---------------------------- '>>$back_dir/backup.log
fi

## "又回到最初的起点 记忆中你青涩的脸"
cd $dir

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值