![]() |
|
![]() |
|
| 来源: 录入者:admin 日期:2009-07-15 15:28 点击:166 | 当前位置:首页 > 文章详细页 |
数据库在运行中,会因为人为因素或一些不可抗力因素造成数据损坏。所以为了保护数据的安全和最小停机时间,我们需制定详细的备份/恢复计划,并定期对计划的有效性进行测试。 本章结合MySQL服务器的运行机制和所提供的工具,介绍如何进行数据库的备份、维护和修复。 以下是几点防范的措施: 制定一份数据库备份/恢复计划,并对计划进行仔细测试。 启动数据库服务器的二进制变更日志,该功能的系统开销很小(约为1%),我们没有理由不这样做。 定期检查数据表,防范于未燃。 定期对备份文件进行备份,以防备份文件失效。 把MySQL的数据目录和备份文件分别放到两个不同的驱动器中,以平衡磁盘I/O和增加数据的安全。 检查/修复数据表 也可用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状态的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; |
| 网站首页 | 关于我们 | CMS | 自助建站 | 技术团队 | 人才招聘 | 网站地图 | 在线留言 |
地址:四川省成都市营门口路188号人和逸景一栋B座10楼29号 查看成都网络公司地图 邮编:610031 |