精灵巫婆 发表于 2015-1-16 20:11:59

MYSQL教程之在MySQL中利用更新日记文件

据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员DBA更倾向于选择一个专有关系数据库,例如Oracle。对于一些具有专门数据库管理员的比较大的环境来说,MySQL很难得到宠爱,这时候,关于MySQL是否真的具有良好的可扩展性的争论已经没有意义。你不成能随时备份数据,但你的数据丧失时,大概数据库目次中的文件破坏时,你只能恢复已备份的文件,而在这以后的拔出或更新的数据,就力所不及了。办理这个成绩,就必需利用更新日记。更新日记能够及时纪录更新、拔出和删除纪录的SQL语句。
启用日记
当以--log-update=file_name选项启动时,MySQLd将一切更新数据的SQL命令写进纪录文件中。文件被写进数据目次而且有一个名字file_name.#,这里#是一个数字,它在每次实行mysqladminrefresh或mysqladminflush-logs、FLUSHLOGS语句、或重启服务器时加1。
假如你不指定file_name,缺省利用服务器的主机名。
假如你在文件射中指定扩大名,那末更新日记不再利用按次文件,利用指定的文件。可是当你它在每次实行mysqladminrefresh或mysqladminflush-logs、FLUSHLOGS语句、或重启服务器光阴志文件被清空。
更新纪录很伶俐,由于它仅仅纪录真正更新数据的语句。因而一个用WHERE的UPDATE或DELETE找不到行,它就不被写进纪录文件。它乃至跳过将设置一个列为它已有的值的UPDATE语句。
重写日记
必需侧重指出的是,鄙人列情形之一,将利用新的日记文件――日记文件的按次主动增添(未指定file_name大概指定的file_name不包含扩大名)大概清空文件(指定的file_name包含扩大名):
命令mysqladminrefresh
命令mysqladminflush-logs
SQL语句FLUSHLOGS
服务重视新启动
恢复日记内容
关于一切的更新日记文件,你都能够把它指定为mysql客户机的输出,来实行个中的SQL语句,恢单数据。比方:
shell>mysql
可是,你大概由于实行DROPDATABASE误删除,但愿只恢复该数据库的内容,为了这个目标,你可使用--one-database选项:
shell>mysql--one-databasedb_name<hostname.nnn
假如你要批量恢复更新日记的数据,在Unix中能够如许:
$lsCtCrClhostname.*|xargscat|mysql--one-databasedb_name
注重因为文件是定时间工夫排序的,假如你修正的个中的任何文件,城市由于按次的毛病招致大概导进毛病的数据。
假如按文件按次恢单数据,就往失落-t和-r选项:
$ls-lhostname.*|xargscat|mysql--one-databasedb_name
总结
本节先容了有关日记文件特别是更新日记的操纵。必要注重的是怎样启用更新日记、服务重视写日记的机会、和怎样恢复更新日记的内容。特别是个中的各类技能,比方怎样依照日记文件天生的工夫按次恢复日记,怎样只恢复指定命据库的内容。
MySQLAB公司的一个高级开发者者表示,“这个特点使得MySQL可以根据你当前的系统的需要来进行调整。”

金色的骷髅 发表于 2015-1-18 18:30:09

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

若天明 发表于 2015-1-24 16:37:34

总感觉自己还是不会SQL

变相怪杰 发表于 2015-2-2 11:01:11

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

第二个灵魂 发表于 2015-2-7 18:37:16

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

山那边是海 发表于 2015-2-23 00:46:21

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

冷月葬花魂 发表于 2015-3-7 05:39:58

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

透明 发表于 2015-3-14 13:53:51

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

爱飞 发表于 2015-3-21 09:42:00

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
页: [1]
查看完整版本: MYSQL教程之在MySQL中利用更新日记文件