加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

操作系统层面恢复mysql数据库的办法是什么

发布时间:2021-12-21 09:39:05 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要介绍操作系统层面恢复mysql数据库的方法是什么,在日常操作中,相信很多人在操作系统层面恢复mysql数据库的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答操作系统层面恢复mysql数据库的方法是什么
这篇文章主要介绍“操作系统层面恢复mysql数据库的方法是什么”,在日常操作中,相信很多人在操作系统层面恢复mysql数据库的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”操作系统层面恢复mysql数据库的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
 操作系统层面恢复mysql数据库的办法是什么
利用复制一个mysql中的库的目录,来恢复mysql数据库。
问题描述:
 
2018年1月10号上午10点我们的oa系统的服务器突然down机,尝试启动服务器,但磁盘出现问题,最后只能用显示器直接连接服务器,crt不能远程连接,它也不能ssh到别的服务器,也不能scp文件到别的服务器,只能通过移动硬盘,把程序和数据库的备份copy出来,每天晚上mysqldump的sql文件,如果使用它恢复数据的话,今天早上的打卡记录就没有了,于是尝试使用操作系统目录恢复数据
 
我们知道mysql中每个数据库对应一个目录,然后这个库下的所有表都在这个目录下,如果这个mysql开启了独立表空间,理论上是可以用这个目录恢复数据的,
 
下面说下具体的流程:下面过程能成功的前提是源端mysql开启了独立表空间 也就是参数innodb_file_per_table =on
 
一:首先在目的端创建上需要恢复的那个库
 
mysql> create database oa;
 
Query OK, 1 row affected (0.03 sec)
 
二:根据昨天的备份的sql文件,恢复出oa库下的表结构,必须做这一步,否则mysql数据字典中没有这些表的信息,那么这些表就不能使用,也就是不能进行dml操作;
 
mysql> use  oa;
 
mysql> source oa-20180109.sql;
 
mysql> show tables;      #查看确实已经有了表结构,我们只需要创建表结构就可以。
 
+------------------------------------------+
 
| Tables_in_oa                             |
 
+------------------------------------------+
 
| 20161213_2_sch_assess_mark_opponent_copy |
 
| 20161213sch_assess_copy                  |
 
| 20161213sch_assess_mark_column_copy      |
 
| 20161213sch_assess_mark_copy             |
 
| 20161213sch_assess_mark_opponent_copy    |
 
| 20161213sch_assess_order_copy            |
 
| 20161213sch_assess_player_copy           |
 
| #Tableau_sid_000011DF_2_Group            |
 
| #Tableau_sid_000011E1_4_Group            |
 
| #Tableau_sid_000011EE_4_Group            |
 
| #Tableau_sid_000011EE_5_Group            |
 
| BDF2_BLOB_STORE                          |
 
| BDF2_CLOB_STORE                          |
 
| BDF2_COMPANY                             |
 
| BDF2_COMPONENT                           |
 
三:在操作系统层面用copy出来的oa目录,覆盖现在的oa目录;
 
bogon:root@/>ps -ef | grep mysql
 
root     20076  7826  0 21:44 pts/2    00:00:00 grep --color=auto mysql
 
root     25748     1  0  2017 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/mysql/data/data--pid-file=/var/run/mysql/mysql.pid
 
bogon:root@/> cd/mysql/data/data
 
bogon:root@/mysql/data/data>ll
 
total 1126436
 
-rw-rw----. 1 mysql mysql        56 Dec 15 11:46 auto.cnf
 
-rw-rw----. 1 mysql mysql  79691776 Jan 10 21:32 ibdata1
 
-rw-rw----. 1 mysql mysql 536870912 Jan 10 21:32 ib_logfile0
 
-rw-rw----. 1 mysql mysql 536870912 Jan 10 21:32 ib_logfile1
 
drwx------. 2 mysql mysql      4096 Jan  4 16:38 liuwenhe
 
drwx------. 2 mysql mysql      4096 Dec 20 22:10 mysql
 
drwx------. 2 mysql mysql     12288 Jan 10 21:31 oa
 
drwx------. 2 mysql mysql      4096 Dec 20 22:10 performance_schema
 
drwx------. 2 mysql mysql         6 Dec 20 22:10 test
 
bogon:root@/>cp -r oa_bak/   /mysql/data/data
 
bogon:root@/mysql/data/data>ll
 
total 1126452
 
-rw-rw----. 1 mysql mysql        56 Dec 15 11:46 auto.cnf
 
-rw-rw----. 1 mysql mysql  79691776 Jan 10 21:32 ibdata1
 
-rw-rw----. 1 mysql mysql 536870912 Jan 10 21:32 ib_logfile0
 
-rw-rw----. 1 mysql mysql 536870912 Jan 10 21:32 ib_logfile1
 
drwx------. 2 mysql mysql      4096 Jan  4 16:38 liuwenhe
 
drwx------. 2 mysql mysql      4096 Dec 20 22:10 mysql
 
drwx------. 2 mysql mysql     12288 Jan 10 21:31 oa
 
drwx------. 2 root  root      12288 Jan 10 21:46 oa_bak
 
drwx------. 2 mysql mysql      4096 Dec 20 22:10 performance_schema
 
drwx------. 2 mysql mysql         6 Dec 20 22:10 test
 
bogon:root@/mysql/data/data>rm -rf oa
 
bogon:root@/mysql/data/data>mv oa_bak   oa
 
四:一定注意修改oa目录的权限,
 
bogon:root@/mysql/data/data>chown -R mysql:mysql oa
 
五:查看数据库是否正常
 
查看确实已经有了今天的数据
 
mysql> use oa;
 
mysql> select  * from  LOG_ATTENDANCE  where  User_Uid='liuwenhe' order by 4 desc  limit 2;
 
+---------+----------+---------------+---------------------+
 
| Sort_ID | User_Uid | IP_Address    | Create_Date         |
 
 
六:最后一步很关键,
 
因为我是在一套主主复制的mysql上恢复的,这个操作我只是在一个实例上操作了,所以我打算先mysqldump出来这个库,然后再删除这个库,之后再从新恢复出来,保证两套库数据一致;
 
bogon:root@/mysql/data/data>mysqldump  -uroot -pliuwenhe  oa >oa.sql
 
但是删除这个库有问题,(后来我模拟这个过程的时候,没有报错,很奇怪!)
 
mysql> drop database oa;
 
ERROR 1010 (HY000): Error dropping database (can't rmdir './oa/', errno: 17)
 
于是从操作系统级别直接删除目录,两个实例都删除
 
bogon:root@/mysql/data/data>rm -rf oa
 
然后从新创建上库oa,并恢复出最近的数据;
 
mysql> create  database oa;
 
mysql> source oa.sql;
 
至此利用操作系统的文件恢复数据库的操作完成了
 
到此,关于“操作系统层面恢复mysql数据库的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读