mysqldump 的备份/恢复问题(带有 URL 的表)

Posted

技术标签:

【中文标题】mysqldump 的备份/恢复问题(带有 URL 的表)【英文标题】:Backup/Restore issue with mysqldump (table with URLs) 【发布时间】:2013-05-23 19:19:28 【问题描述】:

我有一个主要有 innodb 表的 mysql。我确实使用 mysqldump、phpmyadmin 并将文件保存在 /var/lib/mysql 中进行了备份。

当我现在尝试恢复它们时,除了包含“URL”的表之外,所有表都已恢复。该表中的信息不完整。我尝试恢复这三种类型的备份,它是相同的。 (URL 使用 UTF8 存储)

知道发生了什么吗? mysqldump 有没有可能总是按预期工作? 你认为我有办法恢复我的“URL”数据吗?

【问题讨论】:

如何恢复数据?这可能是罪魁祸首。像 Phpmyadmin 这样的工具不如直接命令行输入可靠。例如:cat dump.sql | mysql -u USER -pPASSWORD -h HOST -d DATABASE 另外,您能否附上转储数据的 sn-p(假设可以公开)? 我正在使用 mysql -u root -pPASSWORD databasename 进行恢复 问题是dump数据太大,我认为里面没有包含丢失的表(我的一个同事等了30分钟才打开)。 啊,是的。巨大的数据库转储有时需要更改您的 MySQL 配置文件。通常增加 max-allowed-packet 设置会做到这一点。显然,仅对受信任的连接执行此操作。 【参考方案1】:

我最近在使用 mysqldump 时遇到了麻烦。我的语言环境和客户端、服务器和表字符集以及可能设置为使用 utf8 字符集的所有内容都设置为使用它,但我仍然在 mysqldump 上得到乱七八糟的 ASCII 输出,由于所有的 ??·$ ^"·???. mojibake 输入。我的解决方案(希望对你有用):

出口:

mysqldump -u USER -pPASS -r db.sql db

导入:

mysql -u USER -pPASS db
MYSQL [db]>SOURCE db.sql

另外,像percona xtrabackup 这样的解决方案乍一看似乎有点过头了,但至少这种方法效果很好,基本用法也很简单,该工具是 GPL 许可的,您无需担心不精确的复制,因为它会按原样复制二进制数据库文件,而不会生成应该创建像您这样的数据库的命令,但它们不会...

【讨论】:

以上是关于mysqldump 的备份/恢复问题(带有 URL 的表)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库的备份与恢复

xtrabackup 备份和恢复

Mysql运维管理-MySQL备份与恢复实战案例及生产方案17

MySQL常用的三种备份方法

Mysql DBA 高级运维学习笔记-MySQL备份与恢复实战案例及生产方案

MySQ备份常见问题