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

41次阅读
没有评论

共计 3967 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章主要介绍“操作系统层面恢复 mysql 数据库的方法是什么”,在日常操作中,相信很多人在操作系统层面恢复 mysql 数据库的方法是什么问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”操作系统层面恢复 mysql 数据库的方法是什么”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

利用复制一个 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         |

+———+———-+—————+———————+

|  213614 | liuwenhe | 192.168.8.172 | 2018-01-10 08:12:50 |

|  213501 | liuwenhe | 192.168.8.172 | 2018-01-09 17:47:59 |

+———+———-+—————+———————+

尝试做增删改查操作,是可以的;

mysql create table test (id int);

Query OK, 0 rows affected (0.24 sec)

mysql insert into test values (1);

Query OK, 1 row affected (0.04 sec)

六:最后一步很关键,

因为我是在一套主主复制的 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 数据库的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计3967字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)