MYSQL自动备份策略选择及优缺点分析
类型:拨号时间大小:345KB语言:中文评分:6.0标签:下载现在流行的几种备份方式:
1.逻辑备份:
使用mysql自带的mysqldump工具进行备份。备份为sql文件。优点:最大的优点是可以自动与正在运行的mysql协同工作,可以保证备份在运行期间是当前点,并且会自动锁定操作对应的表,不允许其他用户修改(只能访问)。修改操作可能被阻止。Sql文件具有通用性,便于移植。缺点:备份速度比较慢。如果有大量数据。这需要很多时间。如果数据库服务器处于为用户提供服务的状态,就意味着在这个长时间的操作中锁定了表(一般是读锁,只能读不能写数据)。那么服务就会受到影响。注意:所谓与mysql服务器自动协作,其实就是增加参数来控制mysql服务器,比如锁定所有只能读不能写的表。-锁定所有表2,物理备份:
直接复制mysql数据目录。缺点:你无法操作正在运行的mysql服务器(在复制过程中,用户可以通过应用程序访问更新的数据,所以当时无法备份数据),可能无法移植到其他机器上。直接复制仅适用于myisam类型的表。这种类型的桌子独立于机器。但事实是,在设计数据库时,不能使用所有myisam类型的表。你也不能:因为myisam类型表独立于机器,便于移植,所以你选择这个表,这不是选择它的理由。更多的时候,你会根据业务特性(例如,如果需要支持事务机制,就必须使用innodb)、查询速度和服务性能来选择表类型。您必须确保该表未被使用。如果服务器在您复制表时更改了表,则复制没有意义。如果在文件系统备份过程中修改数据库表,备份的表文件主题不一致,对以后的恢复表失去意义。确保副本完整性的最佳方法是关闭服务器,复制文件,然后重新启动服务器。或者,锁定相应的表(导致前端用户的访问问题)。
解释为什么直接复制文件不可移植。
Mysqldump生成的文本文件可以移植到其他机器上,甚至是不同硬件结构的机器上。除非要复制的表使用MyISAM存储格式,否则直接复制文件不能移植到其他机器上。ISAM表只能在具有相同硬件结构的机器之间复制。例如,将文件从PARC Solaris机器复制到英特尔Solaris机器(反之亦然)是不可行的。MySQL3.23引入的MyISAM表存储格式可以解决这个问题,因为它独立于机器。因此,如果满足以下两个条件,直接复制文件可以移植到不同硬件结构的机器上:即另一台机器也必须运行MySQL3.23或更高版本,文件必须表示为MyISAM表,而不是ISAM表。
3.双机热备份。
mysql数据库没有增量备份机制。当数据量太大时,备份是一个大问题。好在mysql数据库提供了主从备份机制(即双机热备),具有适合大数据量的优势。我现在明白了。大型互联网公司使用热机备份进行mysql数据备份。为主从复制设置多个数据库服务器。主从复制中经常遇到的问题是如何确保数据不被阻塞或延迟。这个问题还是可以容忍的,有些解决方法是可以改进的。毕竟有得有失。这已经是非常省心的方式了。
================================================
目前我应该使用哪种备份策略:
物理备份,快速恢复,当然最好存储在机器上。我现在应该使用物理备份还是逻辑备份?考虑到平台未来会迁移。确保普遍性。我可以忍受1分钟左右的恢复速度差异。因此,我更喜欢跨平台使用逻辑备份。保存sql文件格式。目前双热机备份模式的硬件不多。技术人员有限,需要人力维护,麻烦。所以被排除了。
方案:1。总体策略:写一个要定期执行的任务。晚上或凌晨自动定时备份(考虑到数据库服务器在运行过程中无法停止)。备份成功后,删除前一个。避免大量数据占用磁盘。2.考虑到初始数据量小。使用mysqldump进行备份。在早上什么时间设置自动备份(4-6点,很少有人访问的时候)。3.使用逻辑备份模式:我可以容忍1分钟左右的恢复速度差异。因此,我更喜欢跨平台使用逻辑备份。保存sql文件格式。4.每天备份。
Mysqldump一大早就去锁定并访问数据库服务器。对服务器影响不大。所以你可以每天备份。每天一个sql文件。然后会有很多文件。所以每次成功备份后。删除以前的文件。保留最近一周的备份sql文件。备份工具路径:/usr/bin/mysqldump备份数据保存路径:/data/backdata/
5.编写备份脚本
思考:
5.1在shell脚本中调用mysqldump生成备份文件(这个工具可以生成sql文件到磁盘)
5.2为了方便以后查找。每次备份的记录都以日志的形式记录下来。备份操作是什么时候进行的,生成了什么文件名?这样,可以方便地检查将来备份是否不成功
已删除的文件也被记录为日志信息。
5.3让linux下的crontab进程调用脚本来执行。
命令:crontab -e
向打开的文件添加代码:0 05 * * *脚本/mysqlback.sh的路径。
mysqlback.sh的内容:
#/BIN/bashDB _ NAME=' * * * ' DB _ USER=' * * * ' DB _ PASS=' * * * ' BIN _ DIR='/usr/BIN ' back _ DIR='/data/back data ' date=' MySQL-` date ' % Y % m % d-% h :% m :% S ' ` Log file=' $ back _ DIR '/dbbakup . Log #保存日志记录的目录back new file=$ date . SQL $ BIN _ DIR/MySQL dump-opt-force-forceSQL '-print deleted . txt find '/data/back data/'-ctime 7-type f-name ' *。SQL '-print deleted . txtecho-e ' delete files : \ N ' $ log file #循环删除匹配的文件catdeleted.txt |同时读取line DOM-RF $ line echo $ line $ logfiledoneecho '-。
版权声明:MYSQL自动备份策略选择及优缺点分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。