在mysql服务器启动时,它检查其命令行的操作,来查看它是否应该执行登录并打开相应的日志文件(如果应该的话).可以让服务器生成两种主要类型的日志文件:常规日志文件.它报告客户机的连接.查询与其他各种各样的事件.它对于跟踪服务器的活动很有用:谁正在连接.从哪里连接,以及他们正在做什么.
它报告修改数据库的查询.在此上下文中的术语“更新”不只涉及update语句,还涉及修改数据库的所有语句.由于这个原因,它包含了对d e l e t e.insert.replace.create table.drop table.grant 与revoke 的查询记录.更新日志的内容以sql 语句的形式书写,这些语句用作对mysql的输入.如果在崩溃后必须恢复表的话,更新日志与备份是很有用的.您可以从备份文件中恢复数据库,然后通过将更新日志作为对mysql的输入,重新运行在该备份文件之后又修改数据库的任何查询.这样,可将表恢复到崩溃时刻的状态. 【程序编程相关:关于网络防火墙防范溢出策略分析】
更新日志 【推荐阅读:5种方法逃过防火墙控制系统的研究】
笔者建议在首次使用mysql时应使两种日志类型都有效.在获得一些使用mysql的经验后,可能会只用更新日志来对付,以便减少磁盘空间的需求. 【扩展信息:统一威胁管理设备很快将取代现有的防火墙设】
为了使日志有效,可使用--log 选项开启常规日志,并用--log-update 选项开启更新日志.可以在mysqld.safe_mysqld 或mysql.server 的命令行中,或在某个选项的[mysqld] 组中指定这些选项.当日志有效时,日志文件在缺省时被写到服务器的数据目录中.
在使日志有效后,要确保不用大量的日志信息将磁盘填满,尤其是如果服务器正在处理大量的查询话.可使用日志文件循环与截止时间,在避免日志文件无边界地增长的同时保持最近的几个日志是联机可用的.
日志文件循环工作如下.假定日志文件名为l o g.在第一个循环中, log 被重新命名为l o g . 0,且服务器开始写新的l o g文件.在第二次循环中, log.0 被重命名为l o g . 1,log 重命名为l o g . 0,服务器开始写另一个新的log 文件.这样,每个文件循环通过名字l o g . 0.l o g . 1,等等.当文件到达循环的某一点时,可以终止它.
更新日志与load data 语句
通常,当服务器执行load date 语句时,它只将该语句本身而不是被加载的行内容写到更新日志中.这意味着除非该数据文件仍然保持可访问,否则使用更新日志的恢复操作将是不完整的.为了确保这一点的安全,除非数据库已经备份,否则不应该删除数据文件.
系统备份
更新日志对于数据库恢复并不是任何时候都好,如果一个磁盘崩溃导致您失去了更新日志的话,应确保您执行定期的文件系统备份.... 下一页