在MySQL中使用更新日志文件
发布时间:2009-02-26 16:22:00
你不可能随时备份数据,但你的数据丢失时,或者数据库目录中的文件损坏时, 你只能恢复已经备份的文件,而在这之后的插入或更新的数据,就无能为力了。解决这个问题,就必须使用更新日志。更新日志可以实时记录更新、插入和删除记录的SQL语句。
启用日志
当以--log-update=file_name选项启动时,mysqld将所有更新数据的SQL命令写入记录文件中。文件被写入数据目录并且有一个名字file_name.#,这里#是一个数字,它在每次执行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS语句、或重启服务器时加1。
如果你不指定file_name,缺省使用服务器的主机名。
如果你在文件命中指定扩展名,那么更新日志不再使用顺序文件,使用指定的文件。但是当你它在每次执行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS语句、或重启服务器时日志文件被清空。
更新记录很聪明,因为它仅仅记载真正更新数据的语句。因此一个用WHERE的UPDATE或DELETE找不到行,它就不被写入记录文件。它甚至跳过将设置一个列为它已经有的值的UPDATE语句。
重写日志
必须着重指出的是,在下列情况之一,将使用新的日志文件——日志文件的顺序自动增加(未指定file_name或者指定的file_name不包括扩展名)或者清空文件(指定的file_name包括扩展名):
命令mysqladmin refresh
命令mysqladmin flush-logs
SQL语句FLUSH LOGS
服务器重新启动
恢复日志内容
对于所有的更新日志文件,你都可以把它指定为mysql客户机的输入,来执行其中的SQL语句,恢复数据。例如:
shell>mysql
但是,你可能因为执行DROP DATABASE误删除了,希望只恢复该数据库的内容,为了这个目的,你可以使用--one-database选项:
shell>mysql --one-database db_name < hostname.nnn
如果你要批量恢复更新日志的数据,在Unix中可以这样:
$ ls –t –r –l hostname.[0-9]* | xargs cat | mysql --one-database db_name
注意由于文件是按时间时间排序的,如果你修改的其中的任何文件,都会因为顺序的错误导致可能导入错误的数据。
如果按文件顺序恢复数据,就去掉-t和-r选项:
$ ls -l hostname.[0-9]* | xargs cat | mysql --one-database db_name
总结
本节介绍了有关日志文件尤其是更新日志的操作。需要注意的是如何启用更新日志、服务器重写日志的时机、以及如何恢复更新日志的内容。尤其是其中的各种技巧,例如如何按照日志文件生成的时间顺序恢复日志,如何只恢复指定数据库的内容。


猜你喜欢
- 本文实例讲述了C#查询SqlServer数据库并返回单个值的方法。分享给大家供大家参考。具体实现方法如下:static public str
- 使用expdp时,遇到”ORA-39002、ORA-39070......”连续报错。1、 遇到的问题C:\Users\Admi
- 一个几百行代码做出http/https代理服务器的脚本,启动即可做http https透明代理使用python proxy.py 8992使
- 本文的爬虫教程分为四部: 1.从哪爬 where &nbs
- 前言django wsgi python有个自带的wsgi模块 可以写自定义web框架 用wsgi在内部创建socket对象就可以了 自己只
- 目录前言连接管理额外连接管理端口总结前言下面这个报错,相信大多数童鞋都遇见过;那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7及之前
- 定时任务是老生常谈了,因为我们总是需要定时修改特定的数据。实现它的方法肯定不止一种,但我在相当长一段时间里都是用程序编码去做的,今天突然想到
- 字符串字符串常用操作拼接字符串拼接字符串需要使用‘+’运算符可完成对多个字符串的拼接。如str =
- 零基础学习Python的入手方向:1、首先你确定学习Python用来做什么方向,爬虫还是……;2、确定方向后,就按照你喜欢的方式找学习资料;
- OpenAI 是一个人工智能的工具包,包括神经网络、遗传算法和有限状态机等。使用python可以非常便捷的操作OpenAI的API。一下是O
- <script language='javascript' for='document' event=
- 背景:pony是公司的首席体验官、首席产品经理。这次在产品峰会上pony将自己平时经验的积累与大家交流,体验较细。这次分享研发管理部,设计中
- 正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决(三)。  
- 本文实例讲述了Python基于聚类算法实现密度聚类(DBSCAN)计算。分享给大家供大家参考,具体如下:算法思想基于密度的聚类算法从样本密度
- 本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,
- 描述给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。 例如,给定序列 [-2,1,-3,4,-1,2
- 动态生成的IFRAME,设置SRC时的,不同位置带来的影响。以下所说的是在IE7下运行的。IE6下也是同样。在这个blog中,直接点击运行代
- validator库参数校验若干实用技巧在web开发中一个不可避免的环节就是对请求参数进行校验,通常我们会在代码中定义与请求参数相对应的模型
- 基于Python中求和函数sum的用法详解今天在看《集体编程智慧》这本书的时候,看到一段Python代码,当时是百思不得其解,总觉得是书中排
- 最近开发过程中遇到一些小问题(似乎问题总是那么多),但一直没什么时间去优化与解决。程序员不能被业务绑架,有时间还是花点在代码,开始这次的vu