如何在 MySQL 上恢复 SQL 转储时记录错误和警告?
以下是我们正在执行的步骤。
mysql> CREATE DATABASE dbname;
mysql> USE dbname;
mysql> SOURCE dbdumpname.sql
答案1
要将 MySQL 错误和警告重定向到日志文件,请从 bash 而不是从 MySQL 提示符恢复 SQL 转储。
mysql -u root -p db_name < dumpfilename.sql > /var/tmp/mysqldump.log 2>&1
如果需要抑制外键检查,请创建一个名为的shell脚本mysql-import.sh
,并在其中写入以下内容:
#!/bin/bash
mysql -u root -p'password' -h hostname db_name << EOF
CREATE DATABASE dbname;
USE dbname;
SET foreign_key_checks=0;
SOURCE dbdumpname.sql;
EOF
然后chmod +x mysql-import.sh
使脚本可执行并以如下方式运行该脚本,
./mysql-import.sh > /var/log/mysqldump.log 2>&1
该脚本将运行您在 MySQL 中运行的代码,但具有将输出重定向到日志文件的能力,因为它可以从 shell 调用。
答案2
mysql 客户端提供了一个有用的--tee <tofile>
选项。可以在启动时启用它,也可以在提示符中以交互方式启用它。
mysql> tee file.log
Logging to file 'file.log'
mysql> \W
Show warnings enabled.
mysql> use database;
mysql> source dump.sql;
请注意文档
屏幕上显示的所有数据都附加到给定的文件中。[..] Tee 功能仅在交互模式下有效。