为什么我的还原操作不起作用?
我使用以下方法为数据库创建了一个转储文件:
mysqldump -u root -p databasename > /home/databasename_bkup.sql
Run Code Online (Sandbox Code Playgroud)
然后我打开了 dumfile 并确认它包含CREATE TABLE
数据库中每个表的语句。因此,在运行以下恢复命令之前,我删除了数据库并重新创建了一个同名的空数据库:
mysqldump -u root -p databasename < /home/databasename_bkup.sql
Run Code Online (Sandbox Code Playgroud)
此恢复命令导致在终端中打印以下内容:
-- MySQL dump 10.13 Distrib 5.6.23, for Linux (x86_64)
--
-- Host: localhost Database: databasename
-- ------------------------------------------------------
-- Server version 5.6.23
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 …
Run Code Online (Sandbox Code Playgroud) MySQL 数据库需要包含高度敏感的数据,这些数据不能在静止状态下保持未加密状态。但是数据库需要保持可由应用程序搜索。 使用 MySQL 进行静态加密有哪些选项?
我已经研究过 CryptDB,但它自 2014 年初以来一直不受支持,而且 CryptDB 也不会自然地与 Java 集成。让 CryptDB 与 Spring 和 Eclipse 一起工作可能需要做很多工作,但随着时间的推移,它的支持越来越少。而且似乎其他行级加密方法尚不可行,除非有人提出建议。
那么 MySQL 的数据库级加密选项是什么?与在 CentOS 7 中运行的 MySQL 数据库相关的文件系统加密选项是什么?
MySQL 数据库专门与 Spring MVC 应用程序交互。
注意:这是在一个只安装了 CentOS 7 的专用物理机器上运行的。所以我们不能使用任何 Windows 特定的工具。
一个设计不佳的脚本从两个现有表中选择记录,并将记录添加到新创建的表中,持续了 24 小时,直到我通过终止 MySQL 5.6 命令行客户端并重新启动服务器来杀死它。我估计该脚本向新表中插入了超过 7000 万行。结果是service.msc
不会启动MySQL服务。我采取了各种步骤来解决这个问题,包括删除日志文件和文件myservername.err
,然后重新启动服务器。新myservername.err
文件包含一长串重复警告,指出我需要强制进行 innodb 恢复,因为数据库已损坏。我怎样才能做到这一点?
我想要:
1.) start the corrupted database, and then
2.) do a rollback to the status of the database before the script was run.
Run Code Online (Sandbox Code Playgroud)
我可以选择一个时间点,也可以简单地删除新创建的表,因为自从一切正常以来数据库中的唯一活动就是运行设计不良的脚本。我需要采取哪些步骤来重新启动损坏的数据库,然后将数据库回滚到损坏前的状态?
我将错误日志上传到文件共享网站。您可以点击此链接来阅读。
我想我需要将以下行添加到 my.ini 中,紧接在 [mysqld] 行之后:
[mysqld]
innodb_force_recovery=?
Run Code Online (Sandbox Code Playgroud)
但我该用什么数字来代替呢?
?那么我应该使用什么代码来进行回滚呢?我只是简单地写吗drop table new_table_name
?或者我是否执行回滚命令到特定日期?(我将日志文件移至不同的文件夹,因此我需要重新导入日志文件吗?)这在代码中会是什么样子?
编辑:
我完成了 mysqldump,然后将目录的内容移动/data
到备份位置。然后,我将/data/MySQL
子目录内容移回到/mysql
空/data
目录的子目录中。但是当我尝试启动 MySQL Windows 服务器时,我得到了error 1067
. 我将新创建的文件的内容上传myservername.err
到文件共享网站。 这是查看错误日志的链接。