带有 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
8CB0701A0C8B7D97653888E8B959A6420AEC7679 变成 8CB0701A0C8B7D9765383楼恢复后 E8B959A6420AEC7679
A9986D2E961E1F407E74E9D18D811DDB702924F5 变成 A93楼6D2E961E1F407E74E9D18D811DDB702924F5 还原后
等等...我注意到只有 88h 和 98h 个字符损坏,但可能还有更多。
有没有办法可以备份并恢复数据而不造成损坏?
答案1
您可以尝试使用“mysqldump --opt ...”转储然后恢复它吗?
在同一台服务器上时不应该有区别,只是要确保这不能是某些用户特定的配置。