如何正确备份mediawiki数据库(mysql)而不弄乱数据?

Tot*_*oto 5 mysql backup charset mediawiki

我想使用 mysqldump 备份存储在 MySQL 服务器 5.1.36 中的 mediawiki 数据库。

大多数 wiki 文章都是用西班牙语编写的,并且不想通过使用错误的字符集创建转储来搞乱它。

mysql> status
--------------
...
Current database:       wikidb
Current user:           root@localhost
...
Server version:         5.1.36-community-log MySQL Community Server (GPL)
....
Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
...
Run Code Online (Sandbox Code Playgroud)

使用以下命令:

mysql> show create table text;
Run Code Online (Sandbox Code Playgroud)

我看到表创建语句将字符集设置为二进制

CREATE TABLE `text` (
  `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `old_text` mediumblob NOT NULL,
  `old_flags` tinyblob NOT NULL,
  PRIMARY KEY (`old_id`)
) ENGINE=InnoDB AUTO_INCREMENT=317 DEFAULT CHARSET=binary MAX_ROWS=10000000 AVG_ROW_LENGTH=10240
Run Code Online (Sandbox Code Playgroud)

我应该如何使用 mysqldump 正确生成该数据库的备份?

Pek*_*kka 4

mysqldump通常show create table是相当可靠的主力,不应该自行更改编码。如果他们使用“二进制”字符集,则很可能实际上是赋予表的字符集(但不一定是列。您可以在数据库浏览器中重新检查当前表字符集吗?

我会尝试简单地mysqldump写入文件,将转储恢复到镜像数据库中,并仔细查看特殊字符。与使用 phpMyAdmin 进行的备份不同,根据我的经验,来自命令行的备份往往效果很好。