如何备份MYSQL数据库?

定期的备份可使我们数据库崩溃造成的损失大大降低。在MySQL中进行数据备份的方法有两种,一种是使用mysqldump程序,一种是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷贝数据库文件。mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行操作,...
如何备份MYSQL数据库?
定期的备份可使我们数据库崩溃造成的损失大大降低。在MySQL中进行数据备份的方法有两种,一种是使用mysqldump程序,一种是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷贝数据库文件。mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行操作,需人为协调数据库数据的备份前后一致性。

使用mysqldump备份数据库其实就是把数据库转储成一系列CREATE TABLE和INSERT语句,通过这些语句我们就可重新生成数据库。使用mysqldump的方法如下:

% mysqldump --opt testdb | gzip > /data/backup/testdb.bak
#--opt选项会对转储过程进行优化,生成的备份文件会小一点,后的管道操作会进行数据压缩
% mysqldump --opt testdb mytable1,mytable2 | gzip > /data/backup/testdb_mytable.bak
#可在数据库后接数据表名,只导出指定的数据表,多个数据表可用逗号分隔

--opt选项还可激活--add-drop-table选项,它将会在备份文件的每条CREATE TABLE前加上一条DROP TABLE IF EXISTS语句。这可方便进行数据表的更新,而不会发生“数据表已存在”的错误。

用mysqldump命令还可直接把数据库转移到另外一台服务器上,不用生成备份文件。重复执行可定期更新远程数据库。

% mysqladmin -h remote_host create testdb
% mysqldump --opt testdb | mysql -h remote_host testdb
另外还可通过ssh远程调用服务器上的程序,如:
% ssh remote_host mysqladmin create testdb
% mysqldump --opt testdb | ssh remote_host mysql testdb

通过直接拷贝系统文件的方式备份数据库,在备份时,要确保没有人对数据库进行修改操作。要做到这点,最好关闭服务器。如果不能关闭的,要以只读方试锁定有关数据表。下面是一些示例:

% cp -r db /backup/db #备份db数据库到/backup/db目录
% cp table_name.* /backup/db #只备份table_name数据表
% scp -r db remotehot:/usr/local/mysql/data #用scp把数据库直接拷贝到远程服务器

在把数据库直接拷贝到远程主机时,应注意两台机器必须有同样的硬件结构,或者将拷贝的数据表全部是可移植数据表类型。

使用mysqlhotcopy工具,它是一个Perl DBI脚本,可在不关闭服务器的情况下备份数据库,它主要的优点是:

它直接拷贝文件,所以它比mysqldump快。

可自动完成数据锁定工作,备份时不用关闭服务器。

能刷新日志,使备份文件和日志文件的检查点能保持同步。

下面是该工具的使用示例:

% mysqlhotcopy db /bakcup/ #把db数据库备份到backup/db目录里,会自动创建一个db目录

使用BACKUP TABLE语句进行备份,该语句最早出现在MySQL 3.23.25版本中,仅适用于MyISAM数据表。用法如下:

mysql> BACKUP TABLE mytable TO '/backup/db'; #把mytable数据表备份到/backup/db目录下

为了执行该语句,你必须拥有那些表的FILE权限和SELECT权限,备份目录还必须是服务器可写的。该语句执行时,会先把内存中的数据写入磁盘,再把各个数据表的.frm(表结构定义文件)、.MYD(数据)文件从数据目录拷贝到备份目录。它不拷贝.MYI(索引)文件,因为它能用另外两个文件重建。BACKUP TABLE语句备份时,依次锁定数据表,当同时备份多个数据表时,数据表可能会被修改,所以备份0完成时,备份文件中的数据和现时数据表中的数据可能会有差异,为了消除该差异,我们可用只读方式锁定数据表,在备份完成后再解锁。如:

mysql> LOCK TABLES tb1 READ,tb2 READ;
mysql> BACKUP TABLE tb1,tb2 TO 'backup/db';
mysql> UNLOCK TABLE2013-09-20
mysqldump -h 127.0.0.1 -u root -p mydb > c:/mydb.sql
使用这句话,就可以将mydb备份到c盘的mydb.sql文件2013-09-20
用 多备份 可以在线备份你的网站和数据库2014-06-30
楼上的答案不错!
不过我还是想介绍一款工具!
MySQL-Front window 很不错!
楼主可以试一下!2013-09-20
2019-11-19
mengvlog 阅读 8 次 更新于 2025-07-21 02:07:52 我来答关注问题0
  •  武汉誉祥科技 怎样备份/还原MySQL数据库 之 MySQL Workbench

    首先,需要在 MySQL 官方网站下载并安装 MySQL Workbench。安装过程中,需要注意安装 Visual C++ 2010 Redistributable 和 .Net Framework 4 支持。安装完成后,启动 MySQL Workbench。在软件界面中,点击加号按钮,输入目标数据库的登录信息,然后点击“测试连接”。如果连接成功,点击“确定”。如果出现连接警...

  •  阿暄生活 Mysql如何使用phpMyadmin进行数据库的备份恢复

    备份数据库:登录phpMyAdmin:首先,在浏览器中打开phpMyAdmin的登录页面,输入正确的数据库用户名和密码,点击“执行”进行登录。选择数据库:登录成功后,在左侧列表中找到需要备份的数据库名称,例如“dedecmsv57utf8sp1”,并点击它。导出数据库:进入数据库管理页面后,点击页面上方的“导出”标签。在导出...

  •  翡希信息咨询 如何备份整个mysql数据库

    备份整个MySQL数据库,可以通过phpMyAdmin进行,具体步骤如下:登录phpMyAdmin:首先,通过浏览器访问phpMyAdmin的登录页面。选择数据库:在phpMyAdmin的数据库列表中,找到并点击你想要备份的数据库。导出数据库:在弹出的数据库管理页面中,点击页面右侧的“导出”按钮。保持默认选项不变,这些默认选项通常已经足够...

  • 2.mysqlhotcopy备份【如果是企业版的mysql可以用mysqlbackup当然是要收费的】mysqlhotcopy 是一个 PERL 程序。它使用 LOCK TABLES、FLUSHTABLES 和 cp 或 scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。mysqlhotcopy 只能用...

  • 在该文件中编写MySQL数据库的备份命令,例如使用mysqldump工具。备份命令的基本格式如下:batchmysqldump u [用户名] p[密码] [数据库名] > [备份文件路径]backup_[日期].sql其中,[用户名]替换为你的MySQL用户名,[密码]替换为你的MySQL密码,[数据库名]替换为你要备份的数据库名,[备份文件路径]...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部