登录论坛 | 注册会员 设为首页 | 收藏本站
当前位置 : 首页>软件学院>数据库>MYSQL>正文
 
MySQL数据库数据备份和恢复详解

http://www.dbit.cn 2009/7/16 7:49:57  来源:网络整理  编辑:叶子
 


  --triggers 同时导出触发器。该选项默认启用,用 --skip-triggers 禁用它。

  其他参数详情请参考手册,我通常使用以下 SQL 来备份 MyISAM 表:

  /usr/local/mysql/bin/mysqldump -uyejr -pyejr

  --default-character-set=utf8 --opt --extended

  -insert=false \--triggers -R --hex-blob -x db_name

  > db_name.sql

  使用以下 SQL 来备份 Innodb 表:

  /usr/local/mysql/bin/mysqldump -uyejr -pyejr --default

  -character-set=utf8 --opt --extended-insert=

  false \--triggers -R --hex-blob --single-transaction db_name

  > db_name.sql

  1.2 还原

  用 mysqldump备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。

  直接用 mysql 客户端 例如:

  /usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql

  用 SOURCE 语法 其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如: SOURCE /tmp/db_name.sql;

  这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。

  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页  1  2  3  

收藏】【打印】【进入论坛
  相关文章:

·浅析MySQL数据库授权原则

 
 
 
最新文章

抢先苹果,消息称英特尔芯片采用台积电
三星揭晓业内首款单条 512GB DDR5 内存
vivo 高端新机爆料:120Hz 曲面屏 + 天
vivo Y21 在印度正式上市:Helio P35 芯
微星推出 GeForce RTX 3080 Sea Hawk X
消息称三星 Galaxy Tab S8 系列平板将放
机械革命推出 F6 轻薄本:16 英寸全面屏
英特尔 12 代 Alder Lake CPU 600 系列
雷军:向小米手机 1 首批用户每人赠送价
小米李明谈用户被踢出 MIUI 测试版:大

推荐文章
1
2
3
4
5
6
7
8
9
10
叛逆嫩模性感写真
宫如敏不雅照疯传 看张馨予韩一菲兽兽谁
不惧孔子抢位 阿凡达游戏影音配置推荐
2015第十七届“东北安博会”火爆招商
第十六届东北国际公共安全防范产品博览
2016年第五届中国国际商业信息化博览会
2016年第五届中国国际POS机及相关设备展
互联网电视熟了吗 2013最火电视深解析
桑达获邀出席2015中国(广州)国际POS机
宝获利报名参加“2015年度中国POS机行业
八卦图解 More>>
叛逆嫩模性感写真 宫如敏不雅照疯传 看张馨予韩一菲
周伟童魔鬼身材日本性感写真图  联想V360笔记本模特写真