一、数据备份的重要性
工作中,如果意外删除了重要的文件或者目录的话,那结果可就惨了。尤其是当误删除的数据涉及重要的客户或者关键项目,并且这些数据无法轻易重新创建的时候,那滋味,不用我说你也能想象得到。不巧的是,像这样的数据在公司环境中随处可见,例如销售记录、客户****,等等。
二、关于mysqldump
MySQL自身提供了许多命令行工具,例如mysql工具可以用来与MySQL的数据库模式、数据、用户和配置变量进行交互,而mysqladmin工具则可以进行各种管理任务,还有就是下面将要介绍的mysqldump。此外还有很多,不过那超出了本文的讨论范围。工具mysqldump既可以用来备份数据库模式,还可以用来备份数据;利用它,我们不仅可以对一个服务器上的所有数据库进行地毯式的备份,同时我们还可以选择性地备份某个数据库,甚至数据库中指定的某些表。
当在服务器上安装MySQL的时候,应修改系统路径以便使全局命令行可以访问各个客户程序。打开终端窗口,并执行下列命令:%>mysqldump Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS]
databases [OPTIONS] DB1 [DB2 DB3] OR mysqldump [OPTIONS] all-databases [OPTIONS]
For more options, use mysqldump help
这里给出了使用mysqldump程序的方法。举例来说,若要备份所有数据库模式和数据至文件backup092210sql的话,可以执行如下所示的命令:%>mysqldump -u root -p all-databases > backup092210sql Enter password:
这里,为了能够访问所有数据库,我们需要一个root权限,所以这里需要在提示符后面输入相应口令。此外,如果你是在开发用的服务器上练习这些命令的话,不妨花一些时间看看备份文件的内容。这时您会看到一系列的SQL语句,先是删除各个表后重新创建的语句,然后是重新创建相关数据的语句。另外,由于上面的例子中我们对所有数据库进行备份,所以您还会发现,备份文件将创建每个数据库(如果它还没有存在的话),然后通过USE命令切换到该数据库,进而创建与该数据库相关的表跟数据。
若要备份单个数据库,例如要备份名为wiki的数据库到一个名为wiki-backup092210sql的文件中,我们可以使用如下所示的命令:%>mysqldump -u root -p wiki > wiki-backup092210sql Enter password:
最后,若要备份数据库中名为users的表的话,例如要把它备份到名为wikiusers-backup092210sql的文件中,我们可以使用如下所示的命令:%>mysqldump -u root -p wiki users > wikiusers-backup092210sql Enter password:
三、调整备份内容
有时候,我们可能只想备份数据库的模式,或者只想备份数据库的数据。为了备份数据库模式,可以向mysqldump传递参数no-data,如下所示:%>mysqldump -u root -p no-data wiki > wiki-backup092210sql
为了只备份数据库的数据,可以向mysqldump使用参数no-create-info,如下所示:%>mysqldump -u root -p no-create-info wiki > wiki-backup092210sql
对于前面所举的例子,仅需要少量的击键次数就能执行mysqldump命令。然而,工作中要干的活还有很多,并且如果老是执行这些命令的话,那么生活就会变得太单调了。因此,我们可以设法使这些过程自动化,这时我们可以借助cron工具来达成我们的目标,这个工具在所有类UNIX *** 作系统上都能找到。为了自动执行备份任务,我们需要新建一个正确命名的文件。例如nightly-backupsh,具体命令如下所示:#!/bin/sh mysqldump -uroot -psecret wiki > /home/backup/sql/wiki-backup-`date +%m%d%Y`sql
接下来,我们将这个脚本提供交给cron,方法是使用crontab。为此,我们可以执行如下所示的命令:%>crontab -e
这将打开当前登录用户的crontab文件,如果该文件不存在的话就会自动新建一个。在这个文件中,我们可以添加如下内容,来确保每天上午3时运行该备份脚本:0 3 /home/backup/scripts/nightly-backupsh
如果您对crontab的语法很陌生的话,这里的参数可能让您摸不着头脑。这里前五个参数分别对应于执行脚本的时间,依次为分、时、日、月和星期几。因此,要想在每星期二的4:45am执行脚本的话,可以使用参数45 4 3。
插入上面所示的一行内容后,保存文件,那么我们的任务就会开始按照给定时间调度执行。 需要注意的是,第二天早上一定要查看相应的目录,看看事情是否一切正常。
五、其它备份方案
就像本文前面所说的那样,mysqldump只是MySQL众多备份方案中的一个。此外,您还可以使用MySQL的二进制日志文件进行增量备份,或者使用从MySQL主服务器中将数据复制到从服务器中。
六、小结本文中,我们与读者一道建立了一个简单的MySQL备份解决方案。如果您之前还未实施任何解决方案的话,不妨立即动手试一下。重要的是,这只需要花费您几分钟的时间,我想这是很划得来的。
是的,rman在noarchivelog模式下是不能backup的。进行rman备份之前要将数据库至于archivelog模式下。下面两种方法仅供参考:
1在数据库运行期间可以用:alter system archive log start
2重启数据库进入mont状态,然后:alter database archivelog
SQL server2012可以做维护计划,来对数据库进行自动的备份。
例如这样一个数据库维护的计划,每天0点对数据库进行差异备份,每周日0点对数据库进行完全备份,并且每天晚上10点删除一次过期备份(两个星期前的)。
做这样一个维护计划的方法如下:
1、在做计划之前,需要先启用SQL Server代理,并将启动模式设为自动。
2、接下来,依次点击“SQL Server Management Studio”--“管理”--“维护计划”--“维护计划向导”--“维护计划向导”
3、在这里由于这里有三项计划,并且每项计划周期不同,所以选择“每项任务单独计划”。
4、接着根据需求选择维护任务,我这边选择的是“备份数据库(完整)”、“备份数据库(差异)”、“清楚维护”任务”这三项
5、接着开始定义每一项任务,首先是定义“备份数据库(完整)”任务,我这边要对SharePoint进行备份,所以选择了特定数据库SharePoint的内容数据库WSS_Content,并且选定了备份集过期时间为晚于14天(这里的设置对清楚维护任务有用),最后选择你需要写入备份的文件夹,比如D:/Backup/Full;
6、然后是定义“备份数据库(差异)”任务,同样的选择特定的WSS_Content数据库,选定过期时间为14天,选定需要写入备份的文件夹,比如D:/Backup/Diff;
7、最后,定义“清楚维护”任务,在删除以下类型的文件中选择“备份文件”,在文件位置处选择搜索文件夹D:/Backup,文件扩展名bak,勾选包括一级子文件夹,在文件保留时间中选择2周,更改计划“在每天的22:00:00执行”。
8、然后一直点击“下一步”,直到完成维护计划向导,但是到这里维护计划并没有结束,前两项任务并没有做计划,需要单独为它们做计划
9、在这里,对完整备份设置每周日0点备份一次的计划,对差异备份设置每天备份一次的计划。
10、最后保存维护计划,这样就完成了对SharePoint内容数据库的备份计划。
以上就是关于如何利用mysqldump备份MySQL数据库全部的内容,包括:如何利用mysqldump备份MySQL数据库、数据库处于NOARCHIVELOG模式是不是不能用rman备份、SQL server2012怎么备份数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)