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可以根据你当前的系统的需要来进行调整。” 多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油 总感觉自己还是不会SQL 数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。 但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。 我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力 数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
页:
[1]