如何利用mysqldump备份MySQL数据库

数据库 MySQL
mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。那么如何利用mysqldump备份MySQL数据库呢?

导读:对于很多企业的工作人员来说,在现实工作中,定期备份数据库是一项极为重要的事情。当我们使用MySQL时,在数据库备份方面有许多选择的余地,而而本文将向读者介绍如何使用MySQL的mysqldump来备份数据库。

一、数据备份的重要性

  工作中,如果意外删除了重要的文件或者目录的话,那结果可就惨了。尤其是当误删除的数据涉及重要的客户或者关键项目,并且这些数据无法轻易重新创建的时候,那滋味,不用我说你也能想象得到。不巧的是,像这样的数据在公司环境中随处可见,例如销售记录、客户联系方式,等等。

  所以,在现实工作中,定期备份数据库是一项极为最需关注的事的事情,否则就可能带来灾难性的后果。当我们使用MySQL时,在数据库备份方面有许多选择的余地。本文将向读者介绍如何使用MySQL的mysqldump来备份数据库。

二、关于mysqldump

  MySQL自身提供了许多命令行工具,例如mysql工具可以用来与MySQL的数据库模式、数据、用户和配置变量进行交互,而mysqladmin工具则可以进行各种管理任务,还有就是下面将要介绍的mysqldump。此外还有很多,不过那超出了本文上海同志的讨论范围。工具mysqldump既可以用来备份数据库模式,还可以用来备份数据;利用它,我们不仅可以对一个服务器上的所有数据库进行地毯式的备份,同时我们还可以选择性地备份某个数据库,甚至数据库中指定的某些表。

  当在服务器上安装MySQL的时候,应修改系统路径以便使全局命令行可以访问各个客户程序。打开终端窗口,并执行下列命令:

  %>mysqldumpUsage:mysqldump[OPTIONS]database[tables]ORmysqldump[OPTIONS]

  databases[OPTIONS]DB1[DB2DB3...]ORmysqldump[OPTIONS]all-databases[OPTIONS]

  Formoreoptions,usemysqldumphelp

  这里给出了使用mysqldump程序的方法。举例来说,若要备份所有数据库模式和数据至文件backup092210.sql的话,可以执行如下所示的命令:

  %>mysqldump-uroot-pall-databases>backup092210.sqlEnterpassword:

  这里,为了能够访问所有数据库,我们需要一个root权限,所以这里需要在提示符后面输入相应口令。此外,如果你是在开发用的服务器上练习这些命令的话,不妨花一些时间看看备份文件的内容。这时您会看到一系列的SQL语句,先是删除各个表后重新创建的语句,然后是重新创建相关数据的语句。另外,由于上面的例子中我们对所有数据库进行备份,所以您还会发现,备份文件将创建每个数据库(如果它还没有存在的话),然后通过USE命令切换到该数据库,进而创建与该数据库相关的表跟数据。

  若要备份单个数据库,例如要备份名为wiki的数据库到一个名为wiki-backup092210.sql的文件中,我们可以使用如下所示的命令:

  %>mysqldump-uroot-pwiki>wiki-backup092210.sqlEnterpassword:

  ***,若要备份数据库中名为users的表的话,例如要把它备份到名为wikiusers-backup092210.sql的文件中,我们可以使用如下所示的命令:

  %>mysqldump-uroot-pwikiusers>wikiusers-backup092210.sqlEnterpassword:

 

三、调整备份内容

  有时候,我们可能只想备份数据库的模式,或者只想备份数据库的数据。为了备份数据库模式,可以向mysqldump传递参数no-data,如下所示:

  %>mysqldump-uroot-pno-datawiki>wiki-backup092210.sql

  为了只备份数据库的数据,可以向mysqldump使用参数no-create-info,如下所示:

  %>mysqldump-uroot-pno-create-infowiki>wiki-backup092210.sql

四、如何自动进行备份

  对于前面所举的例子,仅需要少量的击键次数就能执行mysqldump命令。然而,工作中要干的活还有很多,并且如果老是执行这些命令的话,那么生活就会变得太单调了。因此,我们可以设法使这些过程自动化,这时我们可以借助cron工具来达成我们的目标,这个工具在所有类UNIX操作系统上都能找到。为了自动执行备份任务,我们需要新建一个正确命名的文件。例如nightly-backup.sh,具体命令如下所示:

  #!/bin/shmysqldump-uroot-psecretwiki>/home/backup/sql/wiki-backup-`date+%m%d%Y`.sql

  当我们执行这个脚本的时候,它会将wiki数据库备份到一个按照备份时间命名的文件中*,如wiki-backup-092210.sql。您需要注意一下这里的用户名root和口令secret是如何传递给mysqldump的,即将它们分别放到选项-u和-p后面。从安全的角度讲,我们必须进行正确的权限设置。

  接下来,我们将这个脚本提供交给cron,方法是使用crontab。为此,我们可以执行如下所示的命令:

  这将打开当前登录用户的crontab文件,如果该文件不存在的话maxman就会自动新建一个。在这个文件中,我们可以添加如下内容,来确保每天上午3时运行该备份脚本:

  03***/home/backup/scripts/nightly-backup.sh

  如果您对crontab的语法很陌生的话,这里的参数可能让您摸不着头脑。这里前五个参数分别对应于执行脚本的时间,依次为分、时、日、月和星期几。因此,要想在每星期二的4:45am执行脚本的话,可以使用参数454**3。

  插入上面所示的一行内容后,保存文件,那么我们的任务就会开始按照给定时间调度执行。需要注意的是,第二天早上一定要查看相应的目录,看看事情是否一切正常。

五、其它备份方案

  就像本文前面所说的那样,mysqldump只是MySQL众多备份方案中的一个。此外,您还可以使用MySQL的二进制日志文件进行增量备份,或者使用从MySQL主服务器中将数据复制到从服务器中。

  本文中,我们与读者一道建立了一个简单的MySQL备份解决方案。如果您之前还未实施任何解决方案的话,不妨立即动手试一下。重要的是,这只需要花费您几分钟的时间,我想这是很划得来的。希望大家读了这篇文章,都能很好的进行数据库备份工作。

【编辑推荐】

  1. MySQL数据库备份常识,不得不看
  2. MySQL数据库备份的一些小妙招
  3. MySQL数据库备份的实际操作方法大全
  4. 教您如何实现MySQL数据库备份及恢复
责任编辑:迎迎 来源: 阿里巴巴
相关推荐

2023-12-07 15:09:23

2010-06-07 14:09:12

mysqldump备份

2010-05-31 09:50:13

MySQL数据库

2010-03-31 10:39:40

RMANOracle

2010-05-26 09:01:43

mysqldump备份

2011-03-31 14:34:46

cactimysql备份

2011-03-30 13:57:41

MySQL数据库自动备份

2019-03-01 13:40:01

MySQL数据库备份案例

2018-06-07 09:22:16

LinuxMysql备份

2021-09-22 09:55:20

LinuxMySQL数据库

2009-11-20 14:08:39

Oracle数据库备份

2010-10-14 10:18:28

MySQL数据库备份

2010-06-09 11:32:51

MySQL数据库备份

2010-06-04 09:58:03

MySQL数据库备份

2019-12-13 10:31:45

数据库SQLMySQL

2011-05-16 09:32:33

mysql数据库备份

2018-08-24 13:58:13

数据库MySQL备份

2015-03-18 13:39:35

MySQLBackup数据库备份种类

2019-07-25 18:57:36

Linux数据库自动备份

2010-05-20 15:22:37

点赞
收藏

51CTO技术栈公众号