Home >Database >Mysql Tutorial >MYSQL检查数据表和修复数据表_MySQL

MYSQL检查数据表和修复数据表_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:58:54930browse

     数据库在运行中,会因为人为因素或一些不可抗力因素造成数据损坏。所以为了保护数据的安全和最小停机时间,我们需制定详细的备份/恢复计划,并定期对计划的有效性进行测试。

本章结合MySQL服务器的运行机制和所提供的工具,介绍如何进行数据库的备份、维护和修复。

以下是几点防范的措施:

制定一份数据库备份/恢复计划,并对计划进行仔细测试。

启动数据库服务器的二进制变更日志,该功能的系统开销很小(约为1%),我们没有理由不这样做。

定期检查数据表,防范于未燃。

定期对备份文件进行备份,以防备份文件失效。

把MySQL的数据目录和备份文件分别放到两个不同的驱动器中,以平衡磁盘I/O和增加数据的安全。

检查/修复数据表
对数据表进行维护最好通过发出CHECK TABLE(检查数据表)或REPAIRE TABLE(修复数据表)命令来做,这样MySQL服务器自动进行表锁定以协调数据表中数据的读写一致性问题。

也可用myisamchk工具来做数据表的维护,但它直接访问有关的数据表文件,不通过服务器,所以需人为地协调数据表数据的读写一致性问题。使用myisamchk检查数据表的具体操作步骤如下:

以mysql客户端程序连接服务器,并发出LOCK TABLE命令,以只读方式锁住数据表。

% mysql
mysql> use db
mysql> LOCK TABLE table_name READ;     #以只读方式锁定表
mysql> FLUSH TABLE table_name;        #关闭数据表文件,并把内存中的信息写入磁盘
保持上面的状态不退出,另开一个shell窗口,用以下命令维护(检查)数据表。

% myisamchk table_name
   
如果不保持上面状态,退出mysql会话,则表锁定会自动取消。

维护完成,切换回mysql状态的shell窗口,发出以下命令解除表锁定。

mysql> UNLOCK TABLES;
使用myisamchk修复数据表的具体操作步骤如下:

进行修复操作需以读/写方式锁定数据表,命令如下:

% mysql
mysql> use db
mysql> LOCK TABLE table_name WRITE;     #以读/写方式锁定数据表
mysql> FLUSH TABLE table_name;
保持mysql客户端连接状态,切换到第二个shell窗口,运行修复命令:

% myisamchk --recover table_name
   
运行修复命令前最好先备份一下数据文件。

修复完成后,切换回mysql客户端连接窗口,运行以下命令解除数据表锁定:

mysql> FLUSH TABLE table_name;     #使服务器觉察新产生的索引文件
mysql> UNLOCK TABLE;
还可用以下命令锁定所有表,锁定后,所有用户就只能读不能写数据,这样就可使我们能安全地拷贝数据文件。

mysql> FLUSH TABLES WITH READ LOCK;
下面是解除锁语句:
mysql> UNLOCK TABLES;

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn