63、MySQL实用工具:mysqld_multi、mysqld_safe与mysqldump详解

MySQL实用工具:mysqld_multi、mysqld_safe与mysqldump详解

在MySQL的使用过程中,有几个实用的工具可以帮助我们更高效地管理数据库服务器和进行数据备份等操作。下面将详细介绍 mysqld_multi mysqld_safe mysqldump 这三个工具。

1. mysqld_multi

mysqld_multi 脚本让在单台主机上运行多个 mysqld 服务器变得更加容易。它可以启动、停止服务器,或者判断服务器是否正在运行。其基本语法如下:

mysqld_multi [options] command server_list

其中, command 可以是 start stop report server_list 参数指定了你想要操作的服务器。

1.1 标准选项
  • --help :显示帮助信息。
  • --silent :安静模式,从MySQL 5.0.2版本开始可用。
  • --verbose :详细模式,从MySQL 5.0.2版本开始可用。
  • --password :指定密码。
  • --user :指定用户。
  • --version :显示版本信息。

mysqld_multi 需要停止服务器或判断服务器是否正在运行时,会将 --user --password 选项的值传递给 mysqladmin

1.2 特定选项
  • --config-file=file_name :从MySQL 5.0.42/5.1.18版本开始,该选项已被弃用,建议使用标准的 --defaults-extra-file 选项。在早期版本中,该选项用于指定读取服务器选项的配置文件。如果不使用该选项, mysqld_multi 会读取 /etc/my.cnf 和用户主目录下的 .my.cnf 文件来获取服务器选项。
  • --example :显示一个示例配置文件,展示适合 mysqld_multi 使用的配置文件组。
  • --log=file_name :指定日志文件的名称,用于记录 mysqld_multi 的操作。如果日志文件已存在,输出将追加到该文件中。默认的日志文件名为 mysqld_multi.log ,位于数据目录中。若要禁用日志记录,可使用 --no-log 选项。
  • --mysqladmin=file_name :指定要使用的 mysqladmin 二进制文件的路径。当 mysqld_multi 无法自行找到 mysqladmin ,或者你想使用特定版本的 mysqladmin 时,该选项很有用。
  • --mysqld=file_name :指定要使用的 mysqld 二进制文件的路径。当 mysqld_multi 无法自行找到 mysqld ,或者你想使用特定版本的 mysqld 时,该选项很有用。该选项的值可以是 mysqld mysqld_safe 的路径名。
  • --no-log :将日志输出显示在屏幕上,而不是写入日志文件。如果你想在屏幕上查看输出,必须使用该选项,因为默认是将日志记录到文件中。
  • --tcp-ip :默认情况下, mysqld_multi 尝试使用Unix套接字文件连接到服务器。该选项会使连接尝试使用TCP/IP协议。当服务器正在运行,但套接字文件已被删除时,该选项很有用,因为此时服务器只能通过TCP/IP访问。
2. mysqld_safe

mysqld_safe 用于启动 mysqld 服务器并对其进行监控。其基本语法如下:

mysqld_safe [options]

如果服务器崩溃, mysqld_safe 会自动重启它。 mysqld_safe 是一个shell脚本,在Unix系统上可用,在NetWare系统上也有编译版本可供使用。

2.1 标准选项
  • --help :显示帮助信息,从MySQL 5.0.3版本开始可用。
2.2 特定选项
  • --basedir=dir_name :指定MySQL的基础目录路径。
  • --core-file-size=n :如果服务器崩溃,将核心文件的大小限制为 n 字节。
  • --datadir=dir_name :指定MySQL的数据目录路径。
  • --err-log=file_name :这是 --log-error 选项的旧形式。
  • --ledir=dir_name :指定查找服务器的目录,通常被视为“libexec”目录的位置。
  • --log-error=file_name :指定错误日志文件的名称。相对名称是相对于 mysqld_safe 被调用的目录来解释的。如果不指定该选项,默认的错误日志文件名为 HOSTNAME.err ,位于数据目录中,其中 HOSTNAME 是当前主机的名称。
  • --mysqld=file_name :指定 mysqld 程序的路径。
  • --mysqld-version=suffix :该选项的值是一个后缀字符串。如果指定了该选项,后缀将被添加到 mysqld 的基本名称后面,中间用连字符分隔,以生成 mysqld_safe 应该启动的服务器名称。
  • --open-files=n --open-files-limit=n :指定 mysqld 应该保留的文件描述符数量。
  • --pid-file=file_name :指定 mysqld 进程ID文件的名称。
  • --port=port_num :指定服务器监听TCP/IP连接的端口号。
  • --port-open-timeout=n :指定服务器在启动时等待其TCP/IP端口可用的时间(秒)。默认值为0(不等待),该选项从MySQL 5.0.19/5.1.5版本开始引入。
  • --skip-kill-mysqld :在启动新的 mysqld 进程之前,不尝试杀死当前正在运行的 mysqld 进程。当你运行同一个 mysqld 二进制文件的多个实例时,该选项很有用,且仅在Linux系统上有效。
  • --skip-syslog :指定错误输出不发送到系统日志,而是使用日志文件。默认是使用日志文件,该选项从MySQL 5.1.20版本开始引入。
  • --socket=file_name :指定Unix套接字文件的路径名。
  • --syslog :指定错误输出发送到系统日志,适用于具有 logger 程序的系统。该选项从MySQL 5.1.20版本开始引入。
  • --syslog-tag=tag :当错误输出发送到系统日志时, mysqld_safe mysqld 的消息将以程序名称作为前缀进行标记。该选项将前缀修改为 mysqld_safe-tag mysqld-tag ,从MySQL 5.1.21版本开始引入。
  • --timezone=tz_name :将服务器的系统时区设置为 tz_name 。当服务器无法自动确定系统时区时,该选项可能会有用。
  • --user=user_name --user=uid :指定运行服务器的账户的用户名或数字用户ID。
3. mysqldump

mysqldump 程序用于将数据库表的内容写入文本文件。这些文件可用于多种目的,如数据库备份、将数据库迁移到另一台服务器,或根据现有数据库的内容设置测试数据库。

默认情况下,每个转储表的输出包括一个创建表的 CREATE TABLE 语句,后面跟着一组插入表内容的 INSERT 语句。如果使用 --tab 选项,表内容将以制表符分隔的值形式写入数据文件,每行代表一行记录,而表创建的SQL语句将写入单独的文件。

mysqldump 可以以以下三种模式运行:

mysqldump [options] db_name [tbl_name] ...
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases
  • 第一种模式:转储指定数据库中的指定表。如果未指定表名,则转储该数据库中的所有表。
  • 第二种模式:将所有参数视为数据库名称,并转储每个数据库中的所有表。
  • 第三种模式:转储所有数据库中的所有表。如果使用 --databases --all-databases 选项,输出将包含 CREATE DATABASE IF EXISTS USE 语句,这些语句位于每个数据库的表语句之前。

一个常见的使用 mysqldump 的方法如下:

% mysqldump db_name > backup_file

备份文件应该使用 mysql 而不是 mysqlimport 重新导入到MySQL中:

% mysql db_name < backup_file

需要注意的是, mysqldump 会忽略 INFORMATION_SCHEMA 数据库,即使你在命令行中明确指定了该数据库。

3.1 标准选项
选项 说明
--character-sets-dir 指定字符集目录
--password 指定密码
--socket 指定套接字文件路径
--compress 启用压缩
--pipe 使用命名管道(仅适用于Windows)
--user 指定用户
--debug 启用调试模式
--port 指定端口号
--verbose 详细模式
--default-character-set 指定默认字符集
--protocol 指定连接协议
--version 显示版本信息
--help 显示帮助信息
--set-variable 设置变量
--debug-check 启用调试检查,从MySQL 5.0.32/5.1.14版本开始可用
--host 指定主机名
--debug-info 显示调试信息,从MySQL 5.1.21版本开始可用
--shared-memory-base-name 指定共享内存基名(仅适用于Windows)

mysqldump 还支持标准的SSL选项。

3.2 特定选项

以下选项控制 mysqldump 的操作:
- --add-drop-database (boolean) :在每个 CREATE DATABASE 语句之前添加 DROP DATABASE IF EXISTS 语句,该选项从MySQL 5.0.7版本开始引入。
- --add-drop-table (boolean) :在每个 CREATE TABLE 语句之前添加 DROP TABLE IF EXISTS 语句。
- --add-locks (boolean) :在每个表的 INSERT 语句集周围添加 LOCK TABLE UNLOCK TABLE 语句。
- --all, -a (boolean) :该选项已被弃用,建议使用 --create-options
- --all-databases, -A (boolean) :转储所有数据库中的所有表,该选项还会使转储输出包含每个数据库的 CREATE DATABASE IF NOT EXISTS USE 语句。
- --all-tablespaces, -Y (boolean) :转储所有表空间,该选项从MySQL 5.1.6版本开始引入。
- --allow-keywords (boolean) :允许创建作为关键字的列名。
- --apply-slave-statements (boolean) :与 --dump-slave 选项一起使用,使转储输出在 CHANGE MASTER 语句之前包含 STOP SLAVE ,在末尾包含 START SLAVE ,该选项从MySQL 6.0.4版本开始引入。
- --comments, -i (boolean) :在输出中包含额外的信息注释,如 mysqldump 版本、每组 INSERT 语句应用于哪些表等。该选项默认启用,可使用 --skip-comments 禁用。
- --compact (boolean) :生成更简洁的输出,不包含注释,包括设置系统变量的特定版本注释。该选项还会启用 --skip-add-drop-table --skip-set-charset --skip-disable-keys --skip-add-locks 选项。
- --compatible=mode :使 mysqldump 修改其输出,以与标准SQL、其他数据库服务器或旧版本的MySQL服务器兼容。 mode 值指定兼容性模式,可以使用以下一个或多个值,用逗号分隔:
| 选项 | 兼容性含义 |
| ---- | ---- |
| ANSI | 与ANSI兼容 |
| DB2 | 与DB2兼容 |
| MAXDB | 与MaxDB兼容 |
| MSSQL | 与MS SQL Server兼容 |
| MYSQL323 | 与MySQL 3.23兼容 |
| MYSQL40 | 与MySQL 4.0兼容 |
| ORACLE | 与Oracle兼容 |
| POSTRESQL | 与PostgreSQL兼容 |
| NO_FIELD_OPTIONS | 抑制MySQL特定的列相关选项 |
| NO_KEY_OPTIONS | 抑制MySQL特定的索引相关选项 |
| NO_TABLE_OPTIONS | 抑制MySQL特定的表相关选项 |

该选项在你使用 mysqldump 连接到早于MySQL 4.1.0版本的服务器时无效。
- --complete-insert, -c (boolean) :写入指定每个要插入列名的 INSERT 语句。
- --create-options (boolean) :在 mysqldump 生成的 CREATE TABLE 语句中包含额外的信息,如存储引擎、起始自增值等。该选项默认启用,可使用 --skip-create-options 禁用。
- --databases, -B (boolean) :将所有参数解释为数据库名称,并转储每个数据库中的所有表。该选项还会使转储输出包含每个数据库的 CREATE DATABASE IF NOT EXISTS USE 语句。
- --delayed-insert (boolean) :写入 INSERT DELAYED 语句而不是 INSERT 语句。当你将MyISAM表的转储文件加载到另一个数据库中,并且希望最小化该操作对该数据库中可能正在进行的其他语句的影响时,该选项很有用。
- --delete-master-logs :在生成转储输出后,通过执行 FLUSH MASTER 语句删除服务器上的二进制日志文件并开始一个新的日志文件。除非你确定要清除现有的二进制日志,否则不要使用该选项。该选项会启用 --master-data
- --disable-keys, -K (boolean) :在输出中添加 ALTER TABLE ... DISABLE KEYS ALTER TABLE ... ENABLE KEYS 语句,以在处理 INSERT 语句时禁用对非唯一索引的更新。这会使每个MyISAM表在加载后一次性创建索引,从而加快索引创建速度。
- --dump-date (boolean) :在输出末尾添加一个注释,指示转储日期,该选项从MySQL 5.0.52/5.1.23版本开始引入。
- --dump-slave[=n] :该选项类似于 --master-data ,但用于转储复制从服务器,并在输出中生成一个 CHANGE MASTER 语句,指示从服务器的主服务器的二进制日志坐标,而不是从服务器本身的坐标。有关如何使用选项参数的说明,请参阅 --master-data 的描述。该选项从MySQL 6.0.4版本开始引入。
- --events, -E (boolean) :在转储输出中包含事件,该选项从MySQL 5.1.8版本开始引入。
- --extended-insert, -e (boolean) :写入多行 INSERT 语句,这些语句比单行语句加载效率更高。
- --first-slave, -x (boolean) :该选项已被弃用,建议使用 --lock-all-tables
- --flush-logs, -F (boolean) :在转储表之前刷新服务器日志文件。默认情况下,为每个数据库刷新日志以创建一个检查点。这使得恢复操作更容易,因为你知道在检查点时间之后创建的二进制日志文件是在对给定数据库进行备份之后创建的。与 --lock-all-tables --master-data 一起使用时,仅在锁定所有表之后刷新日志。该选项需要 RELOAD 权限。
- --flush-privileges (boolean) :如果转储包含 mysql 数据库,在转储该数据库后,在输出中包含 FLUSH PRIVILEGES 。该选项从MySQL 5.0.26/5.1.12版本开始引入。
- --force, -f (boolean) :即使发生错误也继续执行。
- --hex-blob (boolean) :将 BINARY VARBINARY BLOB 列作为十六进制常量转储。例如,使用该选项时, mysqldump 会将 "MySQL" 写成 0x4D7953514C
- --ignore-table=db_name.tbl_name :跳过指定表的转储输出。若要忽略多个表,为每个表重复使用该选项。该选项从MySQL 5.0.3版本开始引入。
- --include-master-host-port (boolean) :对于使用 --dump-slave 生成的输出中的 CHANGE MASTER 语句,包含指定从服务器主服务器的主机名和端口号的 MASTER_HOST MASTER_PORT 选项。该选项从MySQL 6.0.4版本开始引入。
- --insert-ignore (boolean) :写入 INSERT IGNORE 语句而不是 INSERT 语句,该选项从MySQL 5.0.6版本开始引入。
- --lock-all-tables, -x (boolean) :使用 FLUSH TABLES WITH READ LOCK 锁定所有数据库中的所有表。该选项会禁用 --single-transaction --lock-tables
- --lock-tables, -l (boolean) :在转储表之前,使用 LOCK TABLES ... READ LOCAL 获取所有要转储表的锁。该选项适用于MyISAM表,因为 READ LOCAL 锁允许在转储过程中进行并发插入。对于InnoDB和Falcon表, --single-transaction 更可取。
- --log-error=file_name :将警告和错误消息写入指定文件的末尾,该选项从MySQL 5.0.42/5.1.18版本开始引入。
- --master-data[=value] :该选项有助于创建可用于设置从服务器的备份。使用该选项时, mysqldump 会向服务器发送 SHOW MASTER STATUS 语句,以获取其当前的二进制日志文件名和位置,并使用结果在输出中写入一个 CHANGE MASTER 语句,包含相同的文件名和位置。这样,当你将转储文件加载到从服务器时,它会将从服务器同步到被转储服务器的正确复制坐标,从而在转储时开始复制。该选项在服务器未启用二进制日志记录时无效。默认情况下, CHANGE MASTER 语句以非注释形式写入。 --master-data 接受一个可选值,以显式控制语句的注释。值为1时生成非注释语句,值为2时生成注释语句。该选项需要 RELOAD 权限。如果未指定 --single-transaction ,该选项会自动启用 --lock-all-tables
- --no-autocommit (boolean) :将每个表的 INSERT 语句写入一个事务中。这样生成的输出比在自动提交模式下执行每个语句加载效率更高。
- --no-create-db, -n (boolean) :不写入 CREATE DATABASE 语句。通常,当使用 --databases --all-databases 选项时,这些语句会自动添加到输出中。
- --no-create-info, -t (boolean) :不写入 CREATE TABLE 语句。当你只想转储表数据时,该选项很有用。
- --no-data, -d (boolean) :不写入表数据。当你只想转储 CREATE TABLE 语句时,该选项很有用。
- --no-tablespaces, -y (boolean) :不转储表空间,该选项从MySQL 5.1.14版本开始引入。
- --opt :优化表转储速度,并写入一个最适合重新加载速度的转储文件。该选项会启用 mysqldump 版本中存在的以下选项: --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 。该选项默认启用,可使用 --skip-opt 禁用。
- --order-by-primary (boolean) :按主键或第一个唯一索引(如果有)的顺序转储表行。这会为每个表生成排序的转储输出,但会影响性能。
- --quick, -q (boolean) :默认情况下, mysqldump 会将表的整个内容读入内存,然后再写入输出。该选项会使每一行在从服务器读取后立即写入输出,这样内存占用更少。但是,如果你使用该选项,不应暂停 mysqldump ,否则会导致服务器等待,可能会干扰其他客户端。
- --quote-names, -Q (boolean) :使用反引号( )将表名和列名括起来。当名称是保留字或包含特殊字符时,该选项很有用。该选项默认启用,可使用 –skip-quote-names 禁用。 - –replace :写入 REPLACE 语句而不是 INSERT 语句。 - –result-file=file_name, -r file_name :将输出写入指定文件。该选项适用于Windows,可防止换行符转换为回车符/换行符对。 - –routines, -R (boolean) :在转储输出中包含存储函数和过程,该选项从MySQL 5.0.13版本开始引入。 - –set-charset (boolean) :在输出中写入 SET NAMES charset 语句,其中 charset 默认是 utf8 。可以使用 –default-character-set 选项更改字符集。该选项默认启用,可使用 –skip-set-charset 禁用。 - –single-transaction (boolean) :该选项可实现对InnoDB和Falcon表的一致转储。其原理是在一个事务中转储所有表。 mysqldump 使用 REPEATABLE READ 事务隔离级别来生成一致的转储,而不会导致其他客户端阻塞。(对于非事务性表,在转储操作期间仍可能发生更改。)该选项会禁用 –lock-all-tables 。 - –skip-opt :该选项与 –opt 效果相反, –opt 默认启用。 - –tab=dump_dir, -T dump_dir :该选项会使 mysqldump 为每个表写入两个文件,使用 dump_dir 作为文件的位置。该目录必须已经存在。对于每个表 tbl_name ,会写入一个包含表数据的文件 dump_dir/tbl_name.txt ,以及一个包含表创建SQL语句的文件 dump_dir/tbl_name.sql 。使用该选项需要 FILE 权限。默认情况下,数据文件以换行符结尾的行形式写入,列值用制表符分隔。可以使用下面介绍的“数据格式选项”来更改此格式。该选项的效果可能会让人困惑,除非你确切了解其工作原理: - 一些文件在服务器主机上写入,一些文件在客户端主机上写入。 dump_dir 在服务器主机上用于 .txt 文件,在客户端主机上用于 .sql 文件。如果两个主机不同,输出文件将在不同的机器上创建。为了避免对文件写入位置的不确定性,使用该选项时最好在服务器主机上运行 mysqldump ,这样所有文件都将在同一台机器上创建。 - .txt 文件将由运行服务器的账户拥有, .sql 文件将由你拥有。这是因为服务器本身写入 .txt 文件,而表创建SQL语句由服务器发送给 mysqldump ,由 mysqldump 写入 .sql 文件。 - –tables :覆盖 –databases ,使后续的任何参数都被解释为表名。 - –triggers (boolean) :在转储输出中包含触发器。触发器默认包含,可使用 –skip-triggers 排除,该选项从MySQL 5.0.11版本开始引入。 - –tz-utc (boolean) :连接到服务器后,将时区设置为UTC,并在输出中包含 SET TIME_ZONE=’+00:00’ 语句。这样可以在转储和重新加载数据时抑制本地时区的转换,从而确保如果在与转储不同的时区重新加载, TIMESTAMP 值不会改变。该选项默认启用,可使用 –skip-tz-utc 禁用,该选项从MySQL 5.0.15版本开始引入。 - –where=where_expr, -w where_expr :仅转储由 where_expr 指定的 WHERE 条件选择的行。你应该将条件用引号括起来,以防止命令解释器将其视为多个命令行参数。 - –xml, -X`:生成XML格式的输出,而不是一组SQL语句。

3.3 数据格式选项

如果你指定 --tab -T 选项为每个表生成单独的数据文件,则有几个额外的选项适用。你可能需要将选项值用适当的引号字符括起来。这些选项类似于 LOAD DATA 语句的数据格式选项,可参考附录E中 LOAD DATA 的条目。
- --fields-enclosed-by=char :指定列值应该用给定的字符(通常是引号字符)括起来。默认情况下,列值不被任何字符括起来。该选项排除了使用 --fields-optionally-enclosed-by 的可能性。
- --fields-escaped-by=char :指定用于转义特殊字符的转义字符。默认情况下没有转义字符。
- --fields-optionally-enclosed-by=char :指定列值应该用给定的字符(通常是引号字符)括起来。该字符用于非数字列。默认情况下,列值不被任何字符括起来。该选项排除了使用 --fields-enclosed-by 的可能性。
- --fields-terminated-by=str :指定数据文件中列值的分隔字符或字符序列。默认情况下,值用制表符分隔。
- --lines-terminated-by=str :指定输出行末尾要写入的字符或字符序列。默认情况下,写入换行符。

3.4 mysqldump变量

可以使用相关说明来设置以下 mysqldump 变量。

通过合理使用这些工具和选项,你可以更高效地管理MySQL数据库,包括启动和监控服务器、备份和恢复数据等操作。在实际使用中,根据具体需求选择合适的工具和选项,以达到最佳的效果。

4. 工具使用流程及示例

4.1 mysqld_multi使用流程

下面是使用 mysqld_multi 启动、停止和报告服务器状态的基本流程:

graph LR
    A[开始] --> B[配置选项]
    B --> C{选择命令}
    C -->|start| D[启动指定服务器]
    C -->|stop| E[停止指定服务器]
    C -->|report| F[报告指定服务器状态]
    D --> G[结束]
    E --> G
    F --> G

示例命令:
- 启动服务器1和2:

mysqld_multi start 1,2
  • 停止服务器1:
mysqld_multi stop 1
  • 报告服务器2的状态:
mysqld_multi report 2
4.2 mysqld_safe使用流程

mysqld_safe 的使用流程相对简单,主要是启动并监控 mysqld 服务器:

graph LR
    A[开始] --> B[配置选项]
    B --> C[启动mysqld服务器]
    C --> D{服务器是否崩溃}
    D -->|是| E[重启服务器]
    D -->|否| F[持续监控]
    E --> F
    F --> G[结束]

示例命令:

mysqld_safe --datadir=/var/lib/mysql --port=3307
4.3 mysqldump使用流程

mysqldump 的使用根据不同的模式有不同的流程,以下是常见的备份和恢复流程:

graph LR
    A[开始] --> B[选择模式]
    B -->|单数据库表| C[指定数据库和表]
    B -->|多数据库| D[指定多个数据库]
    B -->|所有数据库| E[使用--all-databases]
    C --> F[配置选项]
    D --> F
    E --> F
    F --> G[执行转储操作]
    G --> H[生成备份文件]
    H --> I[恢复数据]
    I --> J[使用mysql导入备份文件]
    J --> K[结束]

示例命令:
- 备份单个数据库:

mysqldump -u root -p db_name > backup.sql
  • 恢复数据库:
mysql -u root -p db_name < backup.sql

5. 总结与注意事项

5.1 工具总结
工具名称 主要功能 适用场景
mysqld_multi 管理多个 mysqld 服务器的启动、停止和状态报告 在单台主机上运行多个MySQL服务器时
mysqld_safe 启动并监控 mysqld 服务器,崩溃自动重启 确保 mysqld 服务器的稳定运行
mysqldump 将数据库表内容转储到文本文件,用于备份、迁移等 数据库备份、迁移和测试数据库设置
5.2 注意事项
  • 权限问题 :部分操作需要特定的权限,如 mysqldump --flush-logs 选项需要 RELOAD 权限, --tab 选项需要 FILE 权限。在使用这些选项时,确保用户具有相应的权限。
  • 文件路径 :使用 --tab 选项时,要注意文件在服务器主机和客户端主机的写入位置,最好在服务器主机上运行以避免不确定性。
  • 日志管理 :合理设置日志文件路径和大小,避免日志文件占用过多磁盘空间。
  • 兼容性 :使用 --compatible 选项时,要确保服务器版本支持相应的兼容性模式。

通过深入了解和合理使用 mysqld_multi mysqld_safe mysqldump 这些工具,你可以更加高效地管理和维护MySQL数据库,保障数据的安全性和可用性。在实际应用中,根据具体需求灵活选择工具和选项,结合适当的操作流程,能够更好地应对各种数据库管理任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值