MySQL数据库数据备份和恢复详解(2)

来源:asp之家 时间:2009-07-15 10:51:00 


2、 mysqlhotcopy

2.1 备份

mysqlhotcopy 是一个 PERL 程序,最初由Tim Bunce编写。它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。mysqlhotcopy 只能用于备份 MyISAM,并且只能运行在 类Unix 和 NetWare 系统上。

mysqlhotcopy 支持一次性拷贝多个数据库,同时还支持正则表达。以下是几个例子:

root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name /tmp

(把数据库目录 db_name 拷贝到 /tmp 下)

root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name_1 。..

db_name_n /tmproot#/usr/local/mysql/bin/mysqlhotcopy -h

=localhost -u=yejr -p=yejr db_name./regex/ /tmp

更详细的使用方法请查看手册,或者调用下面的命令来查看 mysqlhotcopy 的帮助:

perldoc /usr/local/mysql/bin/mysqlhotcopy

注意,想要使用 mysqlhotcopy,

必须要有 SELECT、RELOAD(要执行 FLUSH TABLES) 权限,并且还必须要能够有读取 datadir/db_name 目录的权限。

2.2 还原

mysqlhotcopy备份出来的是整个数据库目录,使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是 /usr/local/mysql/data/)目录下即可,同时要注意权限的问题,如下例:

root#cp -rf db_name /usr/local/mysql/data/root#chown -R nobody:nobody /usr/local/mysql/data/

(将 db_name 目录的属主改成 mysqld 运行用户)

3、 SQL 语法备份

3.1 备份

BACKUP TABLE 语法其实和 mysqlhotcopy 的工作原理差不多,都是锁表,然后拷贝数据文件。它能实现在线备份,但是效果不理想,因此不推荐使用。它只拷贝表结构文件和数据文件,不同时拷贝索引文件,因此恢复时比较慢。例子:

BACK TABLE tbl_name TO ‘/tmp/db_name/’;

注意,必须要有 FILE 权限才能执行本SQL,并且目录 /tmp/db_name/ 必须能被 mysqld 用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。

SELECT INTO OUTFILE 则是把数据导出来成为普通的文本文件,可以自定义字段间隔的方式,方便处理这些数据。

例子:

SELECT INTO OUTFILE ‘/tmp/db_name/tbl_name.txt’ FROM tbl_name;

注意,必须要有 FILE 权限才能执行本SQL,并且文件 /tmp/db_name/tbl_name.txt 必须能被 mysqld 用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。

3.2 恢复

用 BACKUP TABLE 方法备份出来的文件,可以运行 RESTORE TABLE 语句来恢复数据表。例子: RESTORE TABLE FROM ‘/tmp/db_name/’;权限要求类似上面所述。

用 SELECT INTO OUTFILE 方法备份出来的文件,可以运行 LOAD DATA INFILE 语句来恢复数据表。例子:

LOAD DATA INFILE ‘/tmp/db_name/tbl_name.txt’ INTO TABLE tbl_name;

权限要求类似上面所述。倒入数据之前,数据表要已经存在才行。如果担心数据会发生重复,可以增加 REPLACE 关键字来替换已有记录或者用 IGNORE 关键字来忽略他们。

补充:

shell》 mysqldump --quick db_name   gzip 》 db_name.contents.gz

(该例子中创建的文件是压缩格式)。

恢复/转移到另一台的命令如下:

shell》 gunzip 《 db_name.contents.gz   mysql db_name

以上命令,适用于*nix 操作系统的机器



标签:MySQL,数据库,数据备份,恢复
0
投稿

猜你喜欢

  • Python列表推导式实现代码实例

    2023-02-07 21:35:05
  • IIS出现Active Server Pages错误“ASP 0201”的修复工具

    2009-05-25 18:06:00
  • HTML的基本元素

    2010-03-16 12:39:00
  • 利用nodejs读取图片并将二进制数据转换成base64格式

    2024-05-08 09:37:21
  • 使用BootStrap和Metroui设计的metro风格微网站或手机app界面

    2024-05-02 17:32:09
  • 400多行Python代码实现了一个FTP服务器

    2023-12-10 19:31:31
  • MySQL备份与恢复之保证数据一致性(5)

    2024-01-16 19:16:20
  • Python 基于xml.etree.ElementTree实现XML对比示例详解

    2022-02-24 12:25:53
  • Python3.6通过自带的urllib通过get或post方法请求url的实例

    2023-01-21 09:32:41
  • Linux操作系统中如何安装MySQL数据库

    2007-10-26 15:58:00
  • python使用Matplotlib画条形图

    2023-09-04 06:30:50
  • Python如何获取文件指定行的内容

    2023-08-13 09:45:37
  • pandas按行按列遍历Dataframe的几种方式

    2023-07-04 15:36:05
  • Django 如何实现文件上传下载

    2021-07-16 02:54:15
  • JS关于刷新页面的相关总结

    2024-04-22 12:52:36
  • SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转)

    2012-07-11 15:59:36
  • javascript计算星座属相(十二生肖属相)示例代码

    2024-05-02 17:24:11
  • 解析数据库分页的两种方法对比(row_number()over()和top的对比)

    2024-01-25 08:58:16
  • 在python下读取并展示raw格式的图片实例

    2022-07-02 18:47:56
  • Python企业编码生成系统总体系统设计概述

    2021-03-31 09:12:19
  • asp之家 网络编程 m.aspxhome.com