我最近意外删除了整个 Wordpress 数据库,但幸运的是,我使用 Time Machine 恢复了。
现在的问题是,当我将数据库文件复制回存储所有数据库的路径时,现在只有 28 个表中的 11 个显示,PhPAdmin
我不知道为什么。
即使我已经仔细检查了权限组和权限是否与其他数据库完全相同,但我仍然只能看到其中的 11 个。
问题是,如果它不做任何事情我不会介意,但现在我的 Wordpress 无法登录,它说没有找到用户。
更多信息:
我尝试ls
在终端中查看所有表是否都已被复制,并且我实际上可以看到所有表都在那里(28 个表,包括一些我不知道是什么的文件。)
我再次对我的数据库进行列表操作,发现这里有问题。
-rw-------@ 8 _mysql admin 65 Apr 29 20:29 db.opt
-rw-------@ 8 _mysql admin 8802 Apr 29 22:50 wp_amazonpin_articles_keys.frm
-rw-------@ 8 _mysql admin 8726 Apr 29 22:50 wp_amazonpin_articles_links.frm
-rw-------@ 8 _mysql admin 9239 Apr 29 22:50 wp_amazonpin_camps.frm
-rw-------@ 8 _mysql admin 8568 Apr 29 22:50 wp_amazonpin_categories.frm
-rw-------@ 8 _mysql admin 8596 Apr 29 22:50 wp_amazonpin_feeds_links.frm
-rw-------@ 8 _mysql admin 8668 Apr 29 22:50 wp_amazonpin_feeds_list.frm
-rw-------@ 8 _mysql admin 8712 Apr 29 22:50 wp_amazonpin_keywords.frm
-rw-------@ 8 _mysql admin 8856 Apr 29 22:50 wp_amazonpin_links.frm
-rw-------@ 8 _mysql admin 8680 Apr 29 22:50 wp_amazonpin_log.frm
-rw-------@ 8 _mysql admin 8688 Apr 29 22:50 wp_commentmeta.frm
-rw-------@ 8 _mysql admin 13380 Apr 29 22:50 wp_comments.frm
-rw-------@ 8 _mysql admin 540 Apr 29 22:12 wp_links.MYD
-rw-------@ 8 _mysql admin 3072 Apr 29 22:50 wp_links.MYI
-rw-------@ 8 _mysql admin 13176 Apr 29 22:12 wp_links.frm
-rw-------@ 8 _mysql admin 0 Apr 29 22:12 wp_maker.MYD
-rw-------@ 8 _mysql admin 1024 Apr 29 22:12 wp_maker.MYI
-rw-------@ 8 _mysql admin 8716 Apr 29 22:12 wp_maker.frm
-rw-------@ 8 _mysql admin 6404 Apr 29 22:12 wp_option_tree.MYD
-rw-------@ 8 _mysql admin 8192 Apr 29 22:50 wp_option_tree.MYI
-rw-------@ 8 _mysql admin 8800 Apr 29 22:12 wp_option_tree.frm
-rw-------@ 1 _mysql admin 2334552 Apr 30 06:23 wp_options.MYD
-rw-------@ 1 _mysql admin 318464 Apr 30 06:23 wp_options.MYI
-rw-------@ 8 _mysql admin 8734 Apr 29 22:12 wp_options.frm
-rw-------@ 8 _mysql admin 8682 Apr 29 22:50 wp_postmeta.frm
-rw-rw----@ 2 _mysql admin 26169304 Apr 30 06:02 wp_posts.MYD
-rw-rw----@ 2 _mysql admin 55496704 Apr 30 06:02 wp_posts.MYI
-rw-rw----@ 7 _mysql admin 13684 Apr 30 01:14 wp_posts.frm
-rw-------@ 2 _mysql admin 198896 Apr 30 05:55 wp_stt2_meta.MYD
-rw-------@ 2 _mysql admin 475136 Apr 30 05:55 wp_stt2_meta.MYI
-rw-------@ 8 _mysql admin 8698 Apr 29 22:12 wp_stt2_meta.frm
-rw-------@ 8 _mysql admin 8666 Apr 29 22:50 wp_term_relationships.frm
-rw-------@ 8 _mysql admin 8768 Apr 29 22:50 wp_term_taxonomy.frm
-rw-------@ 8 _mysql admin 8668 Apr 29 22:50 wp_terms.frm
-rw-------@ 8 _mysql admin 8684 Apr 29 22:50 wp_usermeta.frm
-rw-------@ 8 _mysql admin 8968 Apr 29 22:50 wp_users.frm
-rw-------@ 8 _mysql admin 0 Apr 29 22:12 wp_visitor_maps_ge.MYD
-rw-------@ 8 _mysql admin 1024 Apr 29 22:12 wp_visitor_maps_ge.MYI
-rw-------@ 8 _mysql admin 8628 Apr 29 22:12 wp_visitor_maps_ge.frm
-rw-------@ 8 _mysql admin 84 Apr 29 22:12 wp_visitor_maps_st.MYD
-rw-------@ 8 _mysql admin 2048 Apr 29 22:50 wp_visitor_maps_st.MYI
-rw-------@ 8 _mysql admin 8622 Apr 29 22:12 wp_visitor_maps_st.frm
-rw-------@ 8 _mysql admin 160612 Apr 29 22:12 wp_visitor_maps_wo.MYD
-rw-------@ 8 _mysql admin 17408 Apr 29 22:50 wp_visitor_maps_wo.MYI
-rw-------@ 8 _mysql admin 9408 Apr 29 22:12 wp_visitor_maps_wo.frm
-rw-------@ 8 _mysql admin 0 Apr 29 22:12 wp_wpseon_syndacc.MYD
-rw-------@ 8 _mysql admin 1024 Apr 29 22:50 wp_wpseon_syndacc.MYI
-rw-------@ 8 _mysql admin 12901 Apr 29 22:12 wp_wpseon_syndacc.frm
-rw-------@ 4 _mysql admin 34032 Apr 30 05:10 wp_wpseon_visits.MYD
-rw-------@ 3 _mysql admin 4096 Apr 30 06:16 wp_wpseon_visits.MYI
-rw-------@ 8 _mysql admin 9085 Apr 29 22:12 wp_wpseon_visits.frm
从上面的列表中您可以看到,我的列表中显示的phpadmin
是带有的MYD
MYI
,frm
其中有 11 个表真正显示,其余的则缺失。
我不知道为什么会发生这样的事?
答案1
这可能对你现在没有太大帮助,但备份数据库的正确方法是使用实用程序将其转储(转储为序列化形式)并保存。然后,当您需要恢复它时,您只需清空数据库,然后导入转储即可。某些软件允许您从其 Web 界面创建数据库备份,或者您可以使用实用程序mysqldump
。
通过保存实际数据库文件进行备份时会遇到的问题是,它们有点像黑匣子。你对它们几乎没有保证。例如,DBMS(mysql)可能会将某些内容存储在内存中,并等待出于内存原因将它们刷新到磁盘。这意味着,当你这样做时,即使假设你获得了所有文件并将它们正确复制回来,并且 DBMS 恰好接受了它们,如果你在 mysql 守护程序未运行时执行了除备份整个数据目录之外的其他任何操作,它们可能处于不一致的状态。
但是,请检查 mysql 是否具有表文件的权限。例如,如果您使用的是 MyISAM,请检查tablename.frm
、tablename.MYD
和tablename.MYI
是否存在。如果您使用的是 innodb,如果我没记错的话,还有一个名为 的文件ibdata1
和另一个名为 的文件db.opt
,它们存储了部分表定义。
一般来说,如果您要进行二进制恢复(这是一种最后的手段),您不会只恢复部分数据目录;您会停止 mysql 守护进程,重命名现有数据目录,并在重新启动守护进程之前将整个备份目录复制到位。尝试仅对某些表进行二进制恢复会产生不确定的结果,包括但不限于您所经历的情况。