100分求助,MySQL能通过复制 data 目录下的文件进行数据还原吗?

小灰狼 2016-02-22 03:42:42
一个运行在 CentOS7 上的 MySQL数据库启不动了,估计是操作系统出了什么问题,错误一大把,没有专业的 linux 工程师,很多问题不好找

想重装系统,但是必须把原来的数据备份下来

由于 MySQL 无法启动,使用 mysqldump 是不可能备份的,但是 /var/lib/mysql 目录下的文件可以备份出来

不知道这些文件能不能找回系统的所有数据?

...全文
1341 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
以物挫志 2017-04-16
  • 打赏
  • 举报
回复
请问楼主最后解决了没,我碰到了相同的问题。
zhu19774279 2016-02-25
  • 打赏
  • 举报
回复
把ib_logfile0、ib_logfile1等所有ib_logfile开头的文件都删掉试试
小灰狼 2016-02-25
  • 打赏
  • 举报
回复
引用 13 楼 yupeigu 的回复:
不仅data目录,最好把所有目录都复制过去。mysql有很多文件,包括: my.cnf参数文件,然后就是数据文件,还有存放元数据的文件等
元数据文件是哪些文件? 我是把 /var/lib/mysql 目录全部备份过来了,别的目录就不知道了 my.cnf 没有复制过来,不过里面的内容基本上就是那几个,在初始安装的基础上加上 bin_log、bin log trust function creators 这些参数,别的都没改
小灰狼 2016-02-25
  • 打赏
  • 举报
回复
引用 12 楼 ACMAIN_CHM 的回复:
ibdata文件有没有复制过去?
有复制过来
小灰狼 2016-02-25
  • 打赏
  • 举报
回复
引用 16 楼 zhu19774279 的回复:
把ib_logfile0、ib_logfile1等所有ib_logfile开头的文件都删掉试试
你好,还是启动不了


[root@vm ~]# systemctl start mysql
Job for mysql.service failed. See 'systemctl status mysql.service' and 'journalctl -xn' for details.
[root@vm ~]# journalctl -xn
-- Logs begin at 四 2016-02-25 23:12:36 CST, end at 四 2016-02-25 15:25:08 CST. --
2月 25 15:24:49 vm.centos0 sshd[4380]: Accepted password for root from 192.168.162.56 port 22473 ssh2
2月 25 15:24:49 vm.centos0 systemd[1]: Starting Session 4 of user root.
-- Subject: Unit session-4.scope has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit session-4.scope has begun starting up.
2月 25 15:24:49 vm.centos0 systemd-logind[819]: New session 4 of user root.
-- Subject: A new session 4 has been created for user root
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat
--
-- A new session with the ID 4 has been created for the user root.
--
-- The leading process of the session is 4380.
2月 25 15:24:49 vm.centos0 systemd[1]: Started Session 4 of user root.
-- Subject: Unit session-4.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit session-4.scope has finished starting up.
--
-- The start-up result is done.
2月 25 15:24:49 vm.centos0 sshd[4380]: pam_unix(sshd:session): session opened for user root by (uid=0)
2月 25 15:25:07 vm.centos0 systemd[1]: Starting LSB: start and stop MySQL...
-- Subject: Unit mysql.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysql.service has begun starting up.
2月 25 15:25:08 vm.centos0 mysql[4453]: Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/vm.centos0.pid).
2月 25 15:25:08 vm.centos0 systemd[1]: mysql.service: control process exited, code=exited status=1
2月 25 15:25:08 vm.centos0 systemd[1]: Failed to start LSB: start and stop MySQL.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysql.service has failed.
--
-- The result is failed.
2月 25 15:25:08 vm.centos0 systemd[1]: Unit mysql.service entered failed state.
[root@vm ~]# systemctl status mysql
mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysql)
   Active: failed (Result: exit-code) since 四 2016-02-25 15:25:08 CST; 15s ago
  Process: 3834 ExecStop=/etc/rc.d/init.d/mysql stop (code=exited, status=0/SUCCESS)
  Process: 4453 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=1/FAILURE)

2月 25 15:25:07 vm.centos0 systemd[1]: Starting LSB: start and stop MySQL...
2月 25 15:25:08 vm.centos0 mysql[4453]: Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/vm.centos0.pid).
2月 25 15:25:08 vm.centos0 systemd[1]: mysql.service: control process exited, code=exited status=1
2月 25 15:25:08 vm.centos0 systemd[1]: Failed to start LSB: start and stop MySQL.
2月 25 15:25:08 vm.centos0 systemd[1]: Unit mysql.service entered failed state.
[root@vm ~]#


  • 打赏
  • 举报
回复
不仅data目录,最好把所有目录都复制过去。mysql有很多文件,包括: my.cnf参数文件,然后就是数据文件,还有存放元数据的文件等
ACMAIN_CHM 2016-02-24
  • 打赏
  • 举报
回复
ibdata文件有没有复制过去?
怜寒 2016-02-23
  • 打赏
  • 举报
回复
labserver.err 里看看具体的错误信息吧先
zhu19774279 2016-02-23
  • 打赏
  • 举报
回复
假设你原来的目录是/var/lib/mysql/,那么你新建一个/var/lib/mysql/,再完全拷过去,然后执行下面语句试试
chown -R mysql:mysql /var/lib/mysql/
chcon -R -t mysqld_db_t /var/lib/mysql/
拷贝应该是不能单库恢复的,把所有文件都拷回去,整体恢复了以后再删除不要的库。
小灰狼 2016-02-23
  • 打赏
  • 举报
回复
引用 6 楼 zhu19774279 的回复:
如果出故障的时候,数据库还在写入数据,可能会有问题,但如果当时没有问题,拷贝回去可以恢复,不过有三点你要注意: 1. 文件目录与my.ini里的路径一致; 2. 文件目录有mysql用户授权; 3. 文件目录有SELinux下mysql的放行
1、我先在我的数据库中创建一个与原数据库名称相同的数据库,然后把其中一个没有外键关联的 frm 和 idb 文件复制到相应目录下 2、执行过 chown mysql:mysql *、chmod 660 * 3、SELinux 是被禁用的 这样执行之后,能够看到表,但是无法访问表:

mysql> use ismart
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------+
| Tables_in_ismart |
+------------------+
| tbTel            |
+------------------+
1 row in set (0.01 sec)

mysql> select * from tbTel;
ERROR 1146 (42S02): Table 'ismart.tbTel' doesn't exist
mysql> exit
Bye
[root@vm ismart]# systemctl stop mysql

zhu19774279 2016-02-23
  • 打赏
  • 举报
回复
如果出故障的时候,数据库还在写入数据,可能会有问题,但如果当时没有问题,拷贝回去可以恢复,不过有三点你要注意: 1. 文件目录与my.ini里的路径一致; 2. 文件目录有mysql用户授权; 3. 文件目录有SELinux下mysql的放行
小灰狼 2016-02-23
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
复制 data 目录下所有文件。
试过了,不行啊,哥! 把数据库文件复制到相应目录下,启动 MySQL 后用 show databases 可以看到那个数据库,进入数据库后用 show tables 也可以看到那些表 但是当要访问那些表的时候,就报表不存在的错误了 我用的是 MySQL社区版 5.6,缺省使用 InnoDB 引擎
小灰狼 2016-02-23
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
复制 data 目录下所有文件。
试过了,不行啊,哥!
小灰狼 2016-02-23
  • 打赏
  • 举报
回复
有木有人啊???
小灰狼 2016-02-23
  • 打赏
  • 举报
回复
引用 8 楼 zhu19774279 的回复:
假设你原来的目录是/var/lib/mysql/,那么你新建一个/var/lib/mysql/,再完全拷过去,然后执行下面语句试试
chown -R mysql:mysql /var/lib/mysql/
chcon -R -t mysqld_db_t /var/lib/mysql/
拷贝应该是不能单库恢复的,把所有文件都拷回去,整体恢复了以后再删除不要的库。
全部复制过来后,mysql服务启不动了:

[root@vm mysql]# systemctl start mysql
Job for mysql.service failed. See 'systemctl status mysql.service' and 'journalctl -xn' for details.
[root@vm mysql]# systemctl status mysql.service
mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysql)
   Active: failed (Result: exit-code) since 二 2016-02-23 14:10:41 CST; 7s ago
  Process: 3826 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=1/FAILURE)

2月 23 14:10:40 vm.centos0 systemd[1]: Starting LSB: start and stop MySQL...
2月 23 14:10:41 vm.centos0 mysql[3826]: Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/vm.centos0.pid).
2月 23 14:10:41 vm.centos0 systemd[1]: mysql.service: control process exited, code=exited status=1
2月 23 14:10:41 vm.centos0 systemd[1]: Failed to start LSB: start and stop MySQL.
2月 23 14:10:41 vm.centos0 systemd[1]: Unit mysql.service entered failed state.
[root@vm mysql]#
[root@vm mysql]# journalctl -xn
-- Logs begin at 二 2016-02-23 22:07:14 CST, end at 二 2016-02-23 14:10:41 CST. --
2月 23 14:10:37 vm.centos0 NetworkManager[955]: Listening on Socket/ens33
2月 23 14:10:37 vm.centos0 NetworkManager[955]: Sending on   Socket/ens33
2月 23 14:10:37 vm.centos0 NetworkManager[955]: PRC: Soliciting for leases (INIT).
2月 23 14:10:37 vm.centos0 NetworkManager[955]: <info> dhclient started with pid 3823
2月 23 14:10:37 vm.centos0 NetworkManager[955]: <info> (ens33): canceled DHCP transaction, DHCP client pid 3821
2月 23 14:10:40 vm.centos0 systemd[1]: Starting LSB: start and stop MySQL...
-- Subject: Unit mysql.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysql.service has begun starting up.
2月 23 14:10:41 vm.centos0 mysql[3826]: Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/vm.centos0.pid).
2月 23 14:10:41 vm.centos0 systemd[1]: mysql.service: control process exited, code=exited status=1
2月 23 14:10:41 vm.centos0 systemd[1]: Failed to start LSB: start and stop MySQL.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysql.service has failed.
--
-- The result is failed.
2月 23 14:10:41 vm.centos0 systemd[1]: Unit mysql.service entered failed state.
[root@vm mysql]#


ACMAIN_CHM 2016-02-22
  • 打赏
  • 举报
回复
复制 data 目录下所有文件。
小灰狼 2016-02-22
  • 打赏
  • 举报
回复
引用 1 楼 tata8188 的回复:
可以的,你备份下来之后可以放入新数据库的
哥啊,您可真是理工科出身,问什么您直接答什么! 我想知道的是怎么做,据我所知,直接复制过去覆盖是不行的
tata8188 2016-02-22
  • 打赏
  • 举报
回复
可以的,你备份下来之后可以放入新数据库的

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧