mysql简单主从搭建

全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2 Livox mid-360需要使用Livox-SDK2,而非Livox-SDK,以及对应的。并需要修改FAST_LIO中部分代码。Faster—LIO;Faster-LIO:快速激光IMU里程计。Faster-LIO:快速激光IMU里程计PDF。大部分Lidar SLAM都是基于loam进行改造的,基本上是通过线特征edge和面特征(面点)分割进行配准得到里程计的,而fast-lio2是通过一个迭代扩展卡尔曼滤波器去优化帧内位姿,然后通过输入点云与地图进行配准得到里程计,精度和鲁棒性都不错。 阅读详情

关闭selinux  iptables

保证从数据服务器上有主数据服务器的库和表且表结构要与主数据服务器一致

主服务器

    授权从服务器

mysql> grant replication slave on *.* to userslave@'192.168.70.132'  identified by '123456';

    开启binlog日志

[root@localhost mysql]# vim /etc/my.cnf
log-bin
server_id=1   主从服务器必须都要有server_id且servrer_id的值在整个主从架构中不能重复
[root@localhost mysql]# service mysql restart

    查看主服务器状态。file为从服务器指定时的master_log_file文件,position为master_log_pos指定值。

mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000007 |      120 |              |                  |                   |
+----------------------+----------+--------------+------------------+-------------------+

从服务器

    首先测试授权用户的权限

    其次配置my.cnf

[root@localhost mysql]# vim /etc/my.cnf
Server_id=2    主从服务器id值不能一样

 

    最后用自己本机数据库管理员登陆,指定自己的主服务器。

mysql> change master to
    ->  master_host='192.168.70.129',
    ->  master_user='userslave',
    ->  master_password='123456',
    ->  master_log_file='localhost-bin.000007',
    ->  master_log_pos=120;

做从服务器时多出的文件

localhost-relay-bin.000001 中继binlog日志
localhost-relay-bin.index 存放已有的中继binlog日志
master.info   主数据库服务的信息
relay-log.info   中继日志信息

 

查看从服务器状态

mysql>  start  slave; //启动同步
mysql>  stop  slave;  //停止同步
mysql> show slave status\G;
Slave_IO_Running: No
Slave_SQL_Running: No
mysql> start slave;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

两个全部为yes同步成功

 

mysql主从工作原理

    从服务器IO进程:负责连接主服务器。从主的binlog日志里拷贝sql语句放到本机的relaybinlog日志文件里。relaybinlog:中继binlog日志

    从服务器的SQL进程:执行本机中继binlog日志文件里sql语句,把数据写进本机的数据库里。

mysql主从同步的结构模式

    一主一从

    一主多从:(生产中用的比较多)

    主从从

    主主:互为主从

主服务器端

binlog-do-db=name    设置master对哪些库记日志
binlog-ignore-db=name 设置master对哪些库不记日志

 

从服务器端

replicate-do-db=name     仅复制指定库,可设置多条
replicate-ignore-db=name  不复制哪些库
log-slave-updates         记录从库更新,允许链式复制(主从从)
relay-log=               指定中继日志文件名
report-host=             报告给master的主机名或IP地址
slave-net-timeout=60             网络中断时,重试超时(默认60s)

 

 

 

am62x A53与R5F通信 AM62x是Ti的一款异构多核芯片。remoteproc驱动,硬编码(写死)了R5F/M4F固件的名字,这样驱动启动时,就会找硬件编码的固件,下面是其对应关系。值得注意的是,linux内核中的M4F remoteproc驱动启动M4F,而linux内核中的R5F remoreteproc驱动不启动R5F,相反,它attach到已经在boot阶段启动的R5F固件上。在/lib/firmware的真实固件名:,而我们生成的固件名如下所示,没有直接对应的,经确认,.out文件就是我们需要的,重命名后即可。 阅读详情

相关推荐

Web端百度离线地图3.0实战:从零搭建到私有化部署

本文详细介绍了Web端百度离线地图3.0的完整实战流程,从核心SDK本地化、功能模块下载到地图瓦片部署。通过逐步修改代码与配置,实现在无外网环境下的私有化部署,解决了内网或网络不稳定场景下的地图应用需求,并提供了关键的避坑指南。

n7o8p的博客 714

MySQL8主从简单搭建

简单介绍下MySQL8主从服务搭建 1.准备两台服务器ip(主):192.168.56.151 , ip(从):192.168.56.152 2.确保2台服务器已安装相同版本的mysql(这里装MySQL8) 3.在主库上,设置一个复制使用的账户,并授予 REPLICATION SLAVE权限。 这里创建一个复制用户wlcpt,可以从IP为192.168.56.152(从库)的主机进行连接: –创建用户 CREATE USER ‘wlcpt’@’%’ IDENTIFIED BY ‘Wlcpt123!

qq_39649033的博客 478

STM32实战:滑模观测器与PLL锁相环融合的FOC无感控制精解

本文深入解析了STM32平台下结合滑模观测器(SMO)与PLL锁相环的无感FOC控制技术。通过实战案例详细介绍了PLL锁相环在消除SMO高频抖振、提升角度跟踪精度方面的关键作用,并分享了工程调参技巧、C语言实现细节及系统联调方法,为电机控制开发者提供了一套完整的解决方案。

weixin_30838873的博客 190

MySQL主从复制的简单搭建

文章目录1、MySQL一主一从的简单搭建1.1、主从复制简介1.2、MySQL主从复制简介1.3、主从复制的架构1.4、前期准备1.5、主要配置实现1.5.1、测试环境1.5.2、配置my.cnf文件1.5.3、 1、MySQL一主一从的简单搭建 1.1、主从复制简介 在实际生产中,数据的重要性不言而喻。如果我们的数据库只有一台服务器,那么很容易产生单点故障的问题,如果服务器宕机或者损坏了,那么整个数据库的数据就丢失了,这是重大的安全事故。所有我们必须部署两台或两台以上的服务器来存储我们的数据。也就是说我

yuwenS的博客 4481

vivado下ECO操作-不重新综合实现修改属性并生成.bit

ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。 实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要

4657

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9482

Linux mysql 主从服务器简单搭建

本次实验以两台Linux操作系统,centos7.9发行版为基础配置,默认安装mariadb数据库5.5.68。首先需要至少两台虚拟机,一个作为主服务器,一个作为从服务器。本次以node1节点的主机作为主服务器,node2节点主机作为从服务器。

weixin_57254695的博客 671

海康Camera MVS Linux SDK二次开发封装ROS packge过程记录(c++)

https://www.hikrobotics.com/machinevision/service/download?module=0

weixin_41965898的博客 2万+

MySQL的主从结构的简单搭建

本文介绍了在Windows环境下搭建MySQL主从结构的详细步骤。主要内容包括:1) 通过.msi方式安装MySQL并创建主从实例的目录结构;2) 配置主库和从库的不同my.ini文件,设置server-id、端口等关键参数;3) 使用管理员CMD初始化并注册MySQL实例;4) 在主库创建复制用户并授权,在从库配置主从复制关系;5) 常见错误处理,包括版本兼容性、权限问题和配置更新等注意事项。文章特别提醒读者注意配置文件路径替换、端口设置差异以及使用AI辅助诊断时的版本兼容性问题。

thank3194003824的博客 797

如何程序化的将 Wire 文件转换成 STEP、CATIA、DWG、NX、FBX 等格式

Wire 文件是专有格式,只有 Autodesk Alias 软件能够直接打开和编辑。 虽然可以在 Alias 软件中手动打开文件并导出为 STEP,但在实际工作中,经常会遇到需要转换数十甚至数百个文件的场景。如果每次都手动操作软件进行转换,不仅效率低下,还容易出错,批量场景下会非常麻烦。因此,程序化、自动化的转换方案变得至关重要。

weixin_44211633的博客 450

k8s篇之underlay网络和overlay区别

underlay和overlay

小橙子的笔记屋 2142

MySQL主从简单搭建

  主服务器IP:192.168.1.11 从服务器IP:192.168.1.12 192.168.1.11主操作: 1、关闭防火墙、selinux service  iptables  stop setenforce  0 2、vim /etc/my.cnf 在[mysqld]下添加: server_id = 1 log-bin=mysql-bin binlog_forma...

Linux_Wrecking 6042

VMware使用Windows、WinXP等虚拟机上不了网的解决办法(管用)

这个情况一般出现在可以插网线的电脑上,比如台式机和有网线插口的笔记本。需要转换器才能插网线的笔记本一般不会出现这种情况. 查看主机的IP地址和虚拟机的IP地址是否在同一网段,如果在的话,虚拟机就能上网了!!(备注:虚拟机中的IP地址一定要和主机中的用来上网的那个连接的IP地址相同哦)。

爱吃雪糕的小布丁的博客 1万+

MySQL主从数据库简单搭建

主从同步简单搭建及遇到的问题

qq_40001822的博客 1475

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

mysql主从配置 搭建_MySQL 主从复制简单搭建配置(简单,绝对能用)

折腾一天,只因为网上讲的少了要开启mysql远程链接权限(mysql默认禁止远程链接,如navicat等软件的连接)。主从复制的作用是做冗余备份,而且主从做读写分离的话 往往从库会有好几台 分担了压力 并且可以直接做负载均衡。实验环境两台服务器做配置测试:虚拟机中的ubuntu(192.168.128.131)和宿主机xp(192.168.128.1)分别安装有mysql。最好版本一样(我的不一样...

weixin_39952502的博客 239

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

搭建一个最简单mysql主从复制

在之前的学习中对mysql的主从复制都还只是停留在理论层次,在此结合理论进行实践操作学习做个笔记,以便在以后的学习中能够快速回顾。 先来复习一下相关理论吧。 在海量数据背景下,单台服务器节点已经无法满足数据运算存储需求;单核处理器运算力发展摩尔定律已在2005年就已经失效了,在受限于单核运算力瓶颈之下,讨论单台计算机运算力主要还是集中在多核拓展上。进而衍生出了分布式运算概念,而数据的存储同样孕育而...

破晓的成长之路 347

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

简单搭建MySQL主从复制

个人认为,90%的公司的数据体量和并发量压根用不上从服务器,结合Redis,一台性能强劲的云MySQL服务器,做好日常备份。足够了。

weixin_42100387的博客 615

简单搭建mysql主从同步

首先,我们准备两台服务器(Centos 7 系统)进行试验 Master: 10.0.0.41 Slave: 10.0.0.42 两台服务器都要安装mysql数据库 yum -y install mariadb mariadb 启动mysql systemctl start mariadb 关闭防火墙 ...

weixin_45699835的博客 199

简单搭建Mysql主从同步

设置mysql主从同步 centos01 mysql从服务器 192.168.1.20 centos02 mysql主服务器 192.168.1.21 安装主服务器并修改root密码 [root@centos02 ~]# yum -y install mysql mysql-server [root@ce

Difffate的技术随笔 315

简单搭建mycat实现mysql主从读写分离

简单搭建个mycat+mysql主从实现数据读写分离,留个笔记备忘吧一级目录二级目录三级目录 一级目录 二级目录 三级目录

雾猩CODER的博客 707

简单搭建一个MySQL主从配置

MySQL主从(a/b)设置: 安装: 主机a: master 主机b: slave 请注意,虚拟机环境下不要克隆主机,应当直接安装两台,否则造成UUID相同不能实现主从配置 通用配置: 1.相同网段的IP master='1.1.1.102' slave='1.1.1.103' 2.hosts主机名(master,slave) 3.关闭防火墙 systemctl stop firewall...

pangfaheng的博客 219

简单五步教你搭建MySQL主从复制

环境 主机:172.17.0.2从机:172.17.0.3环境:CentOS7MySQL:5.6.38目标:实现主机172.17.0.2到从机172.17.0.3基于Binlog的主从复制 目前MySQL提供两种方式主从复制: 基于Binlog(我们此篇就是基于Binlog的主从复制) 基于GTID 第1步.下载MySQL并分别安装到...

weixin_33978044的博客 204

搭建简单的mysql主从复制

mysql搭建简单的主从复制

zlbyyds的博客 340

简单的mysql主从搭建及恢复

mysql主从搭建:怎么安装mysql数据库,这里不讲,只说它的主从复制,步骤如下:1、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码2、修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进...

weixin_33681778的博客 116

MySQL主从复制搭建(简单,好用)

MySQL5.7主从复制 1. 环境准备 三台虚拟机, 一主二从 host: 192.168.0.155 主 192.168.0.158 从一 192.168.0.159 从二 安装mysql参考文章 2. 主从复制具体实现 主数据库配置 修改主机的配置文件,添加如下三条内容,然后重启数据库 log-bin=mysql-bin binlog_format=row server-id=1 创建用户 grant replication slave on *.* to 'slave

笑三年-Dylen 1102

MySQL简单主从搭建

搭建一个MySQL简单主从,实现简单的主从同步

m0_65817740的博客 136
上一篇: RHEL5中搭建邮件服务
下一篇: 搭建LAMP服务器
willjay01
博客等级 码龄12年 3粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值