Mysqlpump 是 mysqldump 的继任者,它让转储过程变得有趣。

泵

您好,
我是Mandai,负责开发团队中的免费图库图片。

我虽然有点后知后觉,但还是试用了 mysqlpump(mysqldump 的继任者),所以整理了一份它的优势总结,供还没用过的朋友参考。
作为一款继任者,它的基本功能与 mysqldump 相同,而且设计上也更人性化,方便从 mysqldump 迁移过来的用户,所以我真心希望大家能试用一下。
它与 MySQL 捆绑在一起,这一点也很棒。

单凭进度显示就值得切换。

这次我测试的数据库只有大约 200MB,所以没有看到太多好处,但是 mysqlpump 确实会显示转储的进度。

mysqlpump -uroot -p --databases xxxxx > xxxxx_20XX0X0X.sql 输入密码: 转储进度:1/6 个表,0/352 行 转储进度:73/145 个表,551291/1274767 行 转储完成,耗时 2073 毫秒

 

基本命令如下所示。
乍一看,你可能会认为这是一个拼写错误,因为它实际上是 `mysqldump`。

我还尝试使用 mysqldump 导出同一个数据库,结果发现 mysqldump 的速度稍慢一些。
这让我有点失望,但考虑到数据量这么小,只慢了大约 0.2 秒,所以应该还在误差范围内。

 

可以选择压缩输出文件

无论是用于备份还是传输到另一台服务器进行复制,转储文件通常都会被压缩。mysqlpump
提供了一个选项,可以直接输出压缩文件,从而省去了繁琐的后处理步骤。

mysqlpump -uroot -p --compress-output=LZ4 --databases xxxxx > xxxxx_20XX0X0X.lz4

 

`--compress-output` 选项允许您选择压缩格式。
但是,它仅支持 LZ4 和 openssl zlib,这两种格式并不常见。
令我尴尬的是,我查了一下 openssl zlib 是什么,发现它其实就是一个 zip 文件。

压缩文件不太方便,所以我尝试用 LZ4 压缩,但现在我不知道如何解压缩它。

那时我找到了 MySQL 文档

LZ4 格式似乎是一种标准的 Linux 压缩格式,并且有相应的解压缩命令。

lz4_decompress xxxxx_20XX0X0X.lz4 xxxxx_20XX0X0X.sql

 

顾名思义,就是这么回事。而且文件很长。
我原本希望它能像解压缩命令那样。
不过,先不说这个抱怨,你只需将解压后的文件输入到 mysql 命令中即可导入。

mysql -uroot -p < xxxxx_20XX0X0X.sql

 

文件压缩方面,压缩比是主要考虑因素,但 LZ4 在压缩比方面似乎并没有太大优势;它的优势在于压缩速度。
话虽如此,它的压缩比也还不错,所以我打算暂时用 LZ4 格式压缩 mysqlpump 文件。

 

并行处理是可能的

与 mysqldump 最大的区别在于并行处理的概念。
然而,从文档来看,除非你理解 mysqlpump 的转储机制,否则似乎无法有效地使用它。

--default-parallelism 选项指定要启动的线程数。默认值为 2。

mysqlpump -uroot -p \ --default-parallelism=4 \ --databases xxxxx \ > xxxxx_20XX0X0X.sql

 

使用 --parallel-schemas 选项创建队列,并指定哪些队列应该处理哪些表。

mysqlpump -uroot -p \ --parallel-schemas=xxxxx \ --parallel-schemas=yyyyy \ > xxxxxyyyyy_20XX0X0X.sql

 

这样就可以在不同的线程中处理 xxxxx 表和 yyyyy 表。很简单,对吧?
此外,您还可以结合使用 `--default-parallelism` 选项来指定处理队列的线程数。

mysqlpump -uroot -p \ --default-parallelism=4 \ --parallel-schemas=xxxxx \ --parallel-schemas=yyyyy \ > xxxxxyyyyy_20XX0X0X.sql

 

在上面的例子中,将创建两个队列,每个队列将由四个线程处理。

为每个表创建队列是值得记住的;如果能有效地分配处理负载,很可能会缩短执行时间。
起初,你可能会认为可以在进行计算的同时直接输出数据,但这相当于在不同的队列中分别处理一个大表和几个小表。

--parallel-schemas 选项还可以指定同时启动的线程数,因此可以控制线程数。

mysqlpump -uroot -p \ --parallel-schemas=2:xxxxx \ --parallel-schemas=4:yyyyy \ > xxxxxyyyyy_20XX0X0X.sql

 

该命令表示将使用 2 个线程来转储 xxxxx 表,使用 4 个线程来转储 yyyyy 表。

 

尝试导出文件时出现了一个奇怪的错误。

我第一次运行它时,遇到了一个无法理解的错误,当时我很慌张,所以就把这个当备忘录发出来。

mysqlpump -uroot -p --databases xxxxx > xxxxx_20XX0X0X.sql 输入密码: mysqlpump:[警告] (1356) 视图“sys.host_summary”引用了无效的表、列或函数,或者缺少视图定义者/调用者权限来使用它们 mysqlpump:[警告] (1356) 视图“sys.host_summary_by_file_io”引用了无效的表、列或函数,或者缺少视图定义者/调用者权限来使用它们 mysqlpump:[警告] (1356) 视图“sys.host_summary_by_file_io_type”引用了无效的表、列或函数,或者缺少视图定义者/调用者权限来使用它们 mysqlpump:[警告] (1356) 视图mysqlpump: [警告] (1356) 视图 'sys.host_summary_by_statement_latency' 引用了无效的表、列、函数,或者视图的定义者/调用者缺少使用权限。mysqlpump: [警告] (1356) 视图 'sys.host_summary_by_statement_type' 引用了无效的表、列、函数,或者视图的定义者/调用者缺少使用权限。mysqlpump: [警告] (1356) 视图 'sys.innodb_buffer_stats_by_schema' 引用了无效的表、列、函数,或者视图的定义者/调用者缺少使用权限。 (1356) 视图“sys.innodb_buffer_stats_by_table”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.innodb_lock_waits”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.io_by_thread_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.io_global_by_file_by_bytes”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump: [警告] (1356) 视图“sys.io_global_by_file_by_latency”引用了无效的表、列、函数,或者定义者/调用者没有使用权限。mysqlpump:[警告] (1356) 视图“sys.io_global_by_wait_by_bytes”引用了无效的表、列、函数,或者定义者/调用者没有使用权限。mysqlpump:[警告] (1356) 视图“sys.io_global_by_wait_by_latency”引用了无效的表、列、函数,或者定义者/调用者没有使用权限。mysqlpump:[警告] (1356) 视图“sys.latest_file_io”引用了无效的表、列、函数,或者定义者/调用者没有使用权限。 mysqlpump:[警告] (1356) 视图“sys.memory_by_host_by_current_bytes”引用了无效的表、列、函数,或者定义者/调用者缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.memory_by_thread_by_current_bytes”引用了无效的表、列、函数,或者定义者/调用者缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.memory_by_user_by_current_bytes”引用了无效的表、列、函数,或者定义者/调用者缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.memory_global_by_current_bytes”引用了无效的表、列、函数,或者定义者/调用者缺少使用权限。 mysqlpump:[警告] (1356) 视图“sys.memory_global_total”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用这些权限。mysqlpump:[警告] (1356) 视图“sys.processlist”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用这些权限。mysqlpump:[警告] (1356) 视图“sys.schema_index_statistics”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用这些权限。mysqlpump:[警告] (1356) 视图“sys.schema_table_lock_waits”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用这些权限。 mysqlpump:[警告] (1356) 视图“sys.schema_table_statistics”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.schema_table_statistics_with_buffer”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.schema_tables_with_full_table_scans”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.session”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。 mysqlpump:[警告] (1356) 视图“sys.statement_analysis”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.statements_with_errors_or_warnings”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.statements_with_full_table_scans”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.statements_with_runtimes_in_95th_percentile”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用它们的权限。 mysqlpump:[警告] (1356) 视图“sys.statements_with_sorting”引用了无效的表、列或函数,或者缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.statements_with_temp_tables”引用了无效的表、列或函数,或者缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.user_summary”引用了无效的表、列或函数,或者缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.user_summary_by_file_io”引用了无效的表、列或函数,或者缺少使用这些视图的权限。 mysqlpump:[警告] (1356) 视图“sys.user_summary_by_file_io_type”引用了无效的表、列或函数,或者该视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.user_summary_by_stages”引用了无效的表、列或函数,或者该视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.user_summary_by_statement_latency”引用了无效的表、列或函数,或者该视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.user_summary_by_statement_type”引用了无效的表、列、函数,或者该视图的定义者/调用者没有使用它们的权限。 mysqlpump: [警告] (1356) 视图“sys.wait_classes_global_by_avg_latency”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。mysqlpump: [警告] (1356) 视图“sys.wait_classes_global_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。mysqlpump: [警告] (1356) 视图“sys.waits_by_host_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。mysqlpump: [警告] (1356) 视图“sys.waits_by_user_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。 mysqlpump:[警告] (1356) 视图“sys.waits_global_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.x$ps_schema_table_statistics_io”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.x$schema_table_lock_waits”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.x$schema_table_statistics”引用了无效的表。 mysqlpump:[警告] (1356) 视图“sys.x$schema_table_statistics_with_buffer”引用了无效的表、列、函数或视图定义者/调用者,但没有使用它们的权限。mysqlpump:[错误] (1356) 视图“sys.host_summary”引用了无效的表、列、函数或视图定义者/调用者,但没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.host_summary_by_file_io”引用了无效的表、列、函数或视图定义者/调用者,但没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.host_summary_by_file_io_type”引用了无效的表、列、函数或视图定义者/调用者,因此没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图 mysqlpump:[错误] (1356) 视图“sys.host_summary_by_statement_type”引用了无效的表、列或函数定义或调用者 mysqlpump:[错误] (1356) 视图“sys.innodb_buffer_stats_by_schema”引用了无效的表、列、函数或定义者/调用者,或者缺少使用这些表、列、函数或函数的视图权限。转储过程遇到错误,将不再继续。“sys.innodb_buffer_stats_by_table”引用了无效的表、列、函数或定义者/调用者 mysqlpump:[错误] (1356) 视图“sys.innodb_lock_waits”引用了无效的表、列、函数或定义者/调用者,或者缺少使用这些表、列、函数或函数的视图权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.io_by_thread_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储进程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.io_global_by_file_by_bytes”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储进程遇到错误。mysqlpump:[错误] (1356) 视图“sys.io_global_by_file_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储进程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.io_global_by_wait_by_bytes”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.io_global_by_wait_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图 mysqlpump:[错误] (1356) 视图“sys.memory_by_host_by_current_bytes”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.memory_by_thread_by_current_bytes”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用权限。转储过程遇到错误,将不再继续。“sys.memory_by_user_by_current_bytes”引用了无效的表或 mysqlpump:[错误] (1356) 视图“sys.memory_global_by_current_bytes”引用了无效的表、列或函数,或者视图的定义者/调用者缺少使用权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.memory_global_total”引用了无效的表、列或函数,或者缺少使用该视图的权限。转储进程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.processlist”引用了无效的表、列或函数,或者缺少使用该视图的权限。转储进程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.schema_index_statistics”引用了无效的表、列或函数,或者缺少使用该视图的权限。转储进程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.schema_table_lock_waits”引用了无效的表、列或函数,或者 mysqlpump:[错误] (1356) 视图“sys.schema_table_statistics”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.schema_table_statistics_with_buffer”引用了无效的表,或者 mysqlpump:[错误] (1356) 视图“sys.schema_tables_with_full_table_scans”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.session”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.statements_with_errors_or_warnings”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.statements_with_full_table_scans”引用了无效的表、列或函数。mysqlpump:[错误] (1356) 视图“sys.statements_with_runtimes_in_95th_percentile”引用了无效的表、列、函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.statements_with_sorting”。mysqlpump:[错误] (1356) 视图“sys.statements_with_temp_tables”引用了无效的表、列、函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.user_summary”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.user_summary_by_file_io_type”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.user_summary_by_stages”引用了无效的表、列、函数或视图定义者/调用者,因此缺少使用权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.user_summary_by_statement_latency”引用了无效的表、列、函数或视图定义者/调用者,因此缺少使用权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.wait_classes_global_by_avg_latency”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。视图“sys.waits_by_host_by_latency”引用了无效的表,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.waits_global_by_latency”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。mysqlpump:[错误] (1356) 视图“sys.x$ps_schema_table_statistics_io”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误。mysqlpump:[错误] (1356) 视图“sys.x$schema_table_lock_waits”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。转储过程遇到错误,将不再继续。 mysqlpump:[错误] (1356) 视图“sys.x$schema_table_statistics”引用了无效的表、列、函数或视图定义者/调用者权限。转储过程遇到错误,将不再继续。 mysqlpump:[警告] (1356) 视图“sys.host_summary”引用了无效的表、列或函数,或者缺少使用该视图的定义者/调用者的权限。mysqlpump:[警告] (1356) 视图“sys.host_summary_by_file_io”引用了无效的表、列或函数,或者缺少使用该视图的定义者/调用者的权限。mysqlpump:[警告] (1356) 视图“sys.host_summary_by_file_io_type”引用了无效的表、列或函数,或者缺少使用该视图的定义者/调用者的权限。mysqlpump:[警告] (1356) 视图“sys.host_summary_by_stages”引用了无效的表、列或函数,或者缺少使用该视图的定义者/调用者的权限。 mysqlpump:[警告] (1356) 视图“sys.host_summary_by_statement_latency”引用了无效的表、列、函数,或者视图的定义者/调用者缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.host_summary_by_statement_type”引用了无效的表、列、函数,或者视图的定义者/调用者缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.innodb_buffer_stats_by_schema”引用了无效的表、列、函数,或者视图的定义者/调用者缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.innodb_buffer_stats_by_table”引用了无效的表、列、函数,或者mysqlpump:[警告] (1356) 视图“sys.innodb_lock_waits”引用了无效的表、列或函数,或者定义者/调用者缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.io_by_thread_by_latency”引用了无效的表、列或函数,或者定义者/调用者缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.io_global_by_file_by_bytes”引用了无效的表、列或函数,或者定义者/调用者缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.io_global_by_file_by_latency”引用了无效的表、列或函数,或者定义者/调用者缺少使用这些视图的权限。 mysqlpump:[警告] (1356) 视图“sys.io_global_by_wait_by_bytes”引用了无效的表、列、函数或视图的定义者/调用者,且缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.io_global_by_wait_by_latency”引用了无效的表、列、函数或视图的定义者/调用者,且缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.latest_file_io”引用了无效的表、列、函数或视图的定义者/调用者,且缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.memory_by_host_by_current_bytes”引用了无效的表或列,且缺乏使用权限。 mysqlpump:[警告] (1356) 视图“sys.memory_by_thread_by_current_bytes”引用了无效的表、列、函数或视图定义者/调用者,缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.memory_by_user_by_current_bytes”引用了无效的表、列、函数或定义者/调用者,缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.memory_global_by_current_bytes”引用了无效的表、列、函数或定义者/调用者,缺少使用权限。mysqlpump:[警告] (1356) 视图“sys.memory_global_total”引用了无效的表、列、函数或定义者/调用者,缺少使用权限。 mysqlpump:[警告] (1356) 视图“sys.processlist”引用了无效的表、列、函数或定义者/调用者,且定义者/调用者缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.schema_index_statistics”引用了无效的表、列、函数或定义者/调用者,且定义者/调用者缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.schema_table_lock_waits”引用了无效的表、列、函数或定义者/调用者,且定义者/调用者缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.schema_table_statistics”引用了无效的表、列、函数或定义者/调用者,且定义者/调用者缺乏使用权限。 mysqlpump:[警告] (1356) 视图“sys.schema_table_statistics_with_buffer”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.schema_tables_with_full_table_scans”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.session”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。mysqlpump:[警告] (1356) 视图“sys.statement_analysis”引用了无效的表、列或函数,或者视图的定义者/调用者没有使用它们的权限。 mysqlpump:[警告] (1356) 视图“sys.statements_with_errors_or_warnings”引用了无效的表、列、函数或视图定义者/调用者,缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.statements_with_full_table_scans”引用了无效的表、列、函数或定义者/调用者,缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.statements_with_runtimes_in_95th_percentile”引用了无效的表、列、函数或定义者/调用者,缺少使用这些视图的权限。mysqlpump:[警告] (1356) 视图“sys.statements_with_sorting”引用了无效的表、列、函数或定义者/调用者,缺少使用这些视图的权限。 mysqlpump: [警告] (1356) 视图“sys.statements_with_temp_tables”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用它们的权限。mysqlpump: [警告] (1356) 视图“sys.user_summary”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用它们的权限。mysqlpump: [警告] (1356) 视图“sys.user_summary_by_file_io”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用它们的权限。mysqlpump: [警告] (1356) 视图“sys.user_summary_by_file_io_type”引用了无效的表、列或函数,或者mysqlpump:[警告] (1356) 视图“sys.user_summary_by_stages”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.user_summary_by_statement_latency”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.user_summary_by_statement_type”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。mysqlpump:[警告] (1356) 视图“sys.wait_classes_global_by_avg_latency”引用了无效的表、列或函数,或者视图的定义者/调用者缺乏使用权限。 mysqlpump: [警告] (1356) 视图“sys.wait_classes_global_by_latency”引用了无效的表、列、函数或视图定义者/调用者,因此缺少使用权限。mysqlpump: [警告] (1356) 视图“sys.waits_by_host_by_latency”引用了无效的表、列、函数或视图定义者/调用者,因此缺少使用权限。mysqlpump: [警告] (1356) 视图“sys.waits_by_user_by_latency”引用了无效的表、列、函数或视图定义者/调用者,因此缺少使用权限。mysqlpump: [警告] (1356) 视图“sys.waits_global_by_latency”引用了无效的表、列、函数或视图定义者/调用者,因此缺少使用权限。 mysqlpump: [警告] (1356) 视图 'sys.x$ps_schema_table_statistics_io' 引用了无效的表、列、函数或定义者/调用者,且该视图的定义者/调用者缺乏使用权限。mysqlpump: [警告] (1356) 视图 'sys.x$schema_table_lock_waits' 引用了无效的表、列、函数或定义者/调用者,且该视图的定义者/调用者缺乏使用权限。mysqlpump: [警告] (1356) 视图 'sys.x$schema_table_statistics' 引用了无效的表、列、函数或定义者/调用者,且该视图的定义者/调用者缺乏使用权限。mysqlpump: [警告] (1356) 视图'sys.x$schema_table_statistics_with_buffer' 引用了无效的表、列、函数,或者定义者/调用者缺乏使用权限。

 

我不知道我做错了什么,但似乎是MySQL表兼容性问题。这不是我的错。

解决方法很简单:只需升级系统表即可。

我参考了这个博客。
它只有一行字,但却给了我勇气。
[已修复] mysqlpump:[警告] (1356) – Biesma.net

顾名思义,它只是简单地执行了 `mysql_upgrade` 命令,但实际上,我怀疑它只有在 root 用户下才能运行。
因此,我尝试按如下方式运行它。

mysql_upgrade -uroot -p

 

输出结果类似于修复表时的输出(我忘了截图),之后程序成功完成。
为了安全起见,我在运行程序之前用 mysqldump 备份了所有数据。我想我
已经达到目标了……

我开始纳闷自己到底在干什么,但之后mysqlpump就开始正常工作了。

 

概括

这次我介绍了mysqlpump,它是mysqldump命令的后续工具。
即使只提供进度显示和压缩选项,我认为它也相当易于使用。

此外,还有并行处理。
我想导出更大的数据库,但似乎找不到合适的目标。

最后,我分享了这次恰好出现的问题。
我认为我们已经很好地解决了这个问题,但由于涉及到表修复,为了以防万一,请务必备份您的数据。

它包含在 MySQL 5.7.8 及更高版本中,请尝试一下。

最后

我已推出“SEKARAKU Lab”,这是我所属系统开发公司的服务网站。Beyond
提供从服务器设计、构建到运维的一站式服务,如果您在服务器端开发方面遇到任何问题,欢迎随时联系我们。SEKARAKU
Lab:[https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

就这样。

如果您觉得这篇文章对您有帮助,请点个“赞”!
1
加载中...
1票,平均分:1.00/11
7,465
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。