带有 Mysql 和 make.conf 的 FreeBSD 服务器
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
.endif
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif
我有这种结构的mysql表
mysql> show create table phpbb_bt_torrents\G
*************************** 1. row ***************************
Table: phpbb_bt_torrents
Create Table: CREATE TABLE `phpbb_bt_torrents` (
`info_hash` char(20) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL DEFAULT '',
) ENGINE=InnoDB AUTO_INCREMENT=128511 DEFAULT CHARSET=cp1251
我在晚上备份它mysqldump --quote-names --add-drop-table db>db.sql
mysql < db.sql
如果我在同一台服务器上恢复备份,那么我得到的数据并不完全相同,例如:
SELECT hex(info_hash) FROM phpbb_bt_torrents
8CB0701A0C8B7D976538 88 E8B959A6420AEC7679 恢复后变为 8CB0701A0C8B7D976538 3F E8B959A6420AEC7679
A9 98 6D2E961E1F407E74E9D18D811DDB702924F5 恢复后变为 A9 3F 6D2E961E1F407E74E9D18D811DDB702924F5
等等...我注意到只有 88h 和 98h 字符会损坏,但可能还有更多。
有没有办法备份和恢复数据而不会损坏?
您可以尝试使用“mysqldump --opt ...”进行转储然后恢复它吗?
在同一台服务器上时它不应该有什么不同,只是为了确保这不是一些用户特定的配置。
我已经在Bugs.MySQL.com上打开了票
从那里解决方法: