关于 mysqlpump 的故事,它是 mysqldump 的后继工具,使转储变得有趣

您好,
我是开发团队的免费素材管理员 Mandai。
我有点后知后觉,不过我已经试用了 mysqlpump(mysqldump 的继任者),并总结了一些使用心得,供还没用过的朋友参考。
正如你所预期的,作为继任者,它的基本功能保持不变,而且设计得非常人性化,即使是从 mysqldump 迁移过来的用户也能轻松上手,所以我强烈推荐大家试用一下。
它包含在 MySQL 中也是一个加分项。
单凭进度显示就值得切换。
这次我测试的数据库只有大约 200MB,所以没有看到太多好处,但是 mysqlpump 确实会显示转储的进度。
mysqlpump -uroot -p --databases xxxxx > xxxxx_20XX0X0X.sql 输入密码: 转储进度:1/6 个表,0/352 行 转储进度:73/145 个表,551291/1274767 行 转储完成,耗时 2073 毫秒
基本命令如下所示。
乍一看,它很像 mysqldump,以至于你可能会认为这是一个拼写错误。
当我尝试使用 mysqldump 导出同一个数据库时,mysqlpump 的速度稍慢一些。我
不禁有些失望,但考虑到我处理的数据量,只慢了大约 0.2 秒,所以我觉得这在误差范围内。
可以选择压缩输出文件
备份或将转储文件传输到其他服务器进行复制时,通常会对其进行压缩。
为此,mysqlpump 提供了一个选项,可以直接输出压缩文件,从而省去了繁琐的后处理步骤。
mysqlpump -uroot -p --compress-output=LZ4 --databases xxxxx > xxxxx_20XX0X0X.lz4
您可以使用 `--compress-output` 选项选择压缩格式。
但是,目前仅支持 LZ4 和不太常见的 OpenSL zlib 格式。
我一开始不知道 OpenSL zlib 是什么,后来查了一下才知道它原来是一个 zip 文件。
压缩文件不太方便,所以我尝试用 LZ4 压缩,但现在我不知道如何解压缩它。
我就是在那里找到MySQL 文档的。
LZ4 格式似乎是一种标准的 Linux 压缩格式,并且有相应的解压缩命令。
lz4_decompress xxxxx_20XX0X0X.lz4 xxxxx_20XX0X0X.sql
就是这样。而且篇幅很长。
我原本想让它像解压缩一样。
总之,你只需将生成的文件输入到 mysql 命令中即可导入。
mysql -uroot -p < xxxxx_20XX0X0X.sql
文件压缩方面,压缩率固然重要,但LZ4在压缩率方面似乎并没有太大优势,关键在于压缩速度。
不过,LZ4的压缩率看起来也还不错,所以我打算在使用mysqlpump时暂时采用LZ4格式。
并行处理是可能的
它与 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 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)
就是这样。
0