查看“Mysqlpump - 数据库备份程序”的源代码
←
Mysqlpump - 数据库备份程序
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
mysqlpump 客户端实用程序执行逻辑备份,生成一组可以执行以恢复原始数据库对象定义和表数据的SQL语句。它将一个或多个MySQL数据库转储为备份或传输到另一个SQL服务器。 <br> <blockquote>注意 从MySQL 8.0.34开始,mysqlpump已被弃用;预计在未来的MySQL版本中将其移除。您可以使用这些MySQL程序作为mysqldump和MySQL Shell来执行逻辑备份、转储数据库和类似任务。 </blockquote> <br> <blockquote>提示 考虑使用MySQL Shell转储实用程序,它提供多线程转储、文件压缩和进度信息显示功能,以及诸如Oracle Cloud Infrastructure Object Storage流式传输和MySQL HeatWave Service兼容性检查和修改等功能。可以使用MySQL Shell加载转储实用程序将转储轻松导入到MySQL Server实例或MySQL HeatWave Service DB System中。 </blockquote> <br> mysqlpump功能包括: * 数据库和数据库内对象的并行处理,以加速转储过程 * 更好地控制要转储哪些数据库和数据库对象(表、存储程序、用户帐户) * 将用户帐户转储为帐户管理语句(CREATE USER、GRANT),而不是插入到mysql系统数据库中 * 创建压缩输出的功能 * 进度指示器(值是估计值) * 对于InnoDB表的行插入后更快的次级索引创建,用于重新加载转储文件 <br> <blockquote>注意 mysqlpump使用自MySQL 5.7引入的MySQL功能,因此假定与MySQL 5.7或更高版本一起使用。 </blockquote> <br> mysqlpump需要至少对转储表的SELECT权限、对转储视图的SHOW VIEW权限、对转储触发器的TRIGGER权限,以及如果未使用–single-transaction选项,则还需要LOCK TABLES权限。对mysql系统数据库的SELECT权限是转储用户定义所需的。某些选项可能需要其他权限,如选项描述中所指出的。 <br> 要重新加载转储文件,您必须具有执行其中包含的语句所需的权限,例如为由这些语句创建的对象提供的适当的CREATE权限。 <br> <blockquote>注意 在Windows上使用PowerShell通过输出重定向创建的文件具有UTF-16编码: <pre>mysqlpump [options] > dump.sql</pre> 然而,UTF-16不是允许作为连接字符集的,因此转储文件无法正确加载。要解决此问题,请使用–result-file选项,它在ASCII格式中创建输出: <pre>mysqlpump [options] --result-file=dump.sql</pre></blockquote> <br> <span id="mysqlpump-调用语法"></span> == mysqlpump 调用语法 == 默认情况下,mysqlpump转储所有数据库(请注意mysqlpump限制中的例外情况)。要显式指定此行为,请使用–all-databases选项: <pre>mysqlpump --all-databases</pre> <br> 要转储单个数据库或该数据库中的某个表,请在命令行上指定数据库名称,可选地后跟表名称: <pre>mysqlpump db_name mysqlpump db_name tbl_name1 tbl_name2 ...</pre> <br> 要将所有名称参数视为数据库名称,请使用–databases选项: <pre>mysqlpump --databases db_name1 db_name2 ...</pre> <br> 默认情况下,mysqlpump不转储用户帐户定义,即使您转储包含授权表的mysql系统数据库。要将以逻辑形式以CREATE USER和GRANT语句的形式转储授权表内容,请使用–users选项并抑制所有数据库转储: <pre>mysqlpump --exclude-databases=% --users</pre> <br> <span id="mysqlpump-对象选择"></span> == mysqlpump 对象选择 == mysqlpump 具有一组包含和排除选项,这些选项可以过滤几种对象类型并提供对要转储的对象的灵活控制: * –include-databases 和 –exclude-databases 适用于数据库及其内部的所有对象。 * –include-tables 和 –exclude-tables 适用于表。这些选项还影响与表关联的触发器,除非给定了触发器特定的选项。 * –include-triggers 和 –exclude-triggers 适用于触发器。 * –include-routines 和 –exclude-routines 适用于存储过程和函数。如果存储过程选项与存储过程名称匹配,它还会匹配同名的相同类型的存储函数。 * –include-events 和 –exclude-events 适用于 Event Scheduler 事件。 * –include-users 和 –exclude-users 适用于用户帐户。 <br> 任何包含或排除选项都可以多次给出。效果是累加的。这些选项的顺序无关紧要。 <br> 每个包含和排除选项的值都是逗号分隔的适当对象类型的名称列表。例如: <pre>--exclude-databases=test,world --include-tables=customer,invoice</pre> <br> 允许在对象名称中使用通配符字符: * % 匹配零个或多个字符的任何序列。 * _ 匹配单个字符。 <br> 例如,–include-tables=t%,__tmp 匹配所有以 t 开头的表名以及所有五个字符的表名以 tmp 结尾的表名。 <br> 对于用户,未指定主机部分的名称将与隐含的 % 主机进行解释。例如,u1 和 u1@% 是等效的。这与 MySQL 中的一般规则相同。 <br> 包含和排除选项的作用如下: * 默认情况下,没有包含或排除选项,mysqlpump 转储所有数据库(请注意 mysqlpump Restrictions 中的例外情况)。 * 如果没有排除选项而给定包含选项,则只转储命名为包含的对象。 * 如果没有包含选项而给定排除选项,则转储除命名为排除的对象之外的所有对象。 * 如果给定了包含和排除选项,则不转储命名为排除且未命名为包含的对象。所有其他对象都将被转储。 <br> 如果要转储多个数据库,可以通过在对象名称中限定数据库名称来指定特定数据库中的表、触发器和存储过程。以下命令转储 db1 和 db2 数据库,但排除 db1.t1 和 db2.t2 表: <pre>mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2</pre> <br> 以下选项提供了另一种指定要转储哪些数据库的方法: * –all-databases 选项转储所有数据库(请注意 mysqlpump Restrictions 中的例外情况)。这相当于完全不指定对象选项(mysqlpump 的默认操作是转储所有内容)。 * –include-databases=% 类似于 –all-databases,但选择要转储的所有数据库,即使它们是 –all-databases 的例外。 * –databases 选项使 mysqlpump 将所有名称参数视为要转储的数据库的名称。这与指定相同数据库的 –include-databases 选项等效。 <br> <span id="mysqlpump-并行处理"></span> == mysqlpump 并行处理 == mysqlpump 可以使用并行处理实现并发处理。您可以在数据库之间(以同时转储多个数据库)以及在数据库内部(以同时从给定数据库转储多个对象)选择并发性。 <br> 默认情况下,mysqlpump 设置了一个包含两个线程的队列。您可以创建额外的队列并控制每个队列分配给每个线程的数量,包括默认队列: * –default-parallelism=N 指定每个队列用于使用的默认线程数。如果没有此选项,则 N 为 2。 ** 默认队列始终使用默认线程数。其他队列使用默认线程数,除非您指定了其他值。 * –parallel-schemas=[N:]db_list 设置用于转储 db_list 中命名的数据库的处理队列,并可选地指定队列使用的线程数。db_list 是逗号分隔的数据库名称列表。如果选项参数以 N: 开头,则队列使用 N 个线程。否则,–default-parallelism 选项确定队列线程数。 ** 多个 –parallel-schemas 选项创建多个队列。 <br> 数据库列表中的名称允许包含与过滤选项支持的相同 % 和 _ 通配符字符(参见 mysqlpump 对象选择)。 <br> mysqlpump 使用默认队列处理任何没有明确使用 –parallel-schemas 选项指定的数据库,并在命令选项选择时转储用户定义(如果需要)。 <br> 总的来说,在多个队列的情况下,mysqlpump 使用队列处理的数据库集合之间的并行性,以同时转储多个数据库。对于使用多个线程的队列,mysqlpump 在数据库内部使用并行性,以同时从给定数据库转储多个对象。可能会出现异常;例如,mysqlpump 可能在获取数据库中的对象服务器列表时阻塞队列。 <br> 启用并行性后,不同数据库的输出可以交错。例如,并行转储的多个表中的 INSERT 语句可以交错;语句不会按特定顺序写入。这不会影响重新加载,因为输出语句通过将对象名称与数据库名称一起限定或在需要时用 USE 语句作为前缀来满足要求。 <br> 并行性的粒度是一个单独的数据库对象。例如,单个表不能使用多个线程并行转储。 <br> 示例: <pre>mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3</pre> mysqlpump 设置一个处理 db1 和 db2 的队列,另一个处理 db3 的队列,以及一个默认队列处理所有其他数据库。所有队列使用两个线程。 <br> <pre>mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3 --default-parallelism=4</pre> 这与上一个示例相同,只是所有队列使用四个线程。 <br> <pre>mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3</pre> db1 和 db2 的队列使用五个线程,db3 的队列使用三个线程,默认队列使用默认的两线程。 <br> 特殊情况下,如果 –default-parallelism=0 且没有 –parallel-schemas 选项,mysqlpump 作为单线程进程运行并创建没有队列。 <br> <span id="mysqlpump-限制"></span> == mysqlpump 限制 == <ul> <li><p>mysqlpump 默认不转储 performance_schema、ndbinfo 或 sys schema。要转储这些中的任何一个,请在命令行上显式命名它们。您还可以使用 –databases 或 –include-databases 选项命名它们。</p></li> <li><p>mysqlpump 不转储 INFORMATION_SCHEMA schema。</p></li> <li><p>mysqlpump 不转储 InnoDB CREATE TABLESPACE 语句。</p></li> <li><p>mysqlpump 使用 CREATE USER 和 GRANT 语句以逻辑形式转储用户帐户(例如,当您使用 –include-users 或 –users 选项时)。因此,mysql 系统数据库的转储默认不包括包含用户定义的授权表:user、db、tables_priv、columns_priv、procs_priv 或 proxies_priv。要转储任何授权表,请在 mysql 数据库后指定表名:</p> <pre> mysqlpump mysql user db ...</pre></li></ul>
返回至“
Mysqlpump - 数据库备份程序
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息