一 热拷贝

在上一篇文章中我们提到热拷贝,热拷贝也就是在MySQL或者其他数据库服务在运行的情况下进行备份。本文分享另外一种备份的方法,也就是热拷贝。热拷贝跟热备很类似,只不过热备使用mysqldump命令,热拷贝使用mysqlhotcopy命令。热拷贝的优势在于支持服务运行中进行备份,速度快,性能好;劣势在于只能备份MyIsam的表,无法备份InnoDB的表。所以在生产环境中应该酌情使用。

二 示意图

三 热备模拟

第一步,热拷贝

[[email protected] databackup]# mysqlhotcopy -uroot -p123456 --database larrydb > larrydb_hostcopy.sql

Can't locate DBI.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/mysql/bin/mysqlhotcopy line 25.

BEGIN failed--compilation aborted at /usr/local/mysql/bin/mysqlhotcopy line 25.

第二步,报错。因为这个命令是用perl写的或者此命令需要perl支持,所以需要安装perl

[[email protected] databackup]# yum install perl* -y

第三步,对数据库larrydb热拷贝

[[email protected] databackup]# mysqlhotcopy --help

#第一种写法

[[email protected] databackup]# mysqlhotcopy --user=root --password=123456 larrydb /databackup/

#第二种写法

[[email protected] databackup]# mysqlhotcopy -u root -p 123456 larrydb /databackup/

Flushed 2 tables with read lock (`larrydb`.`class`, `larrydb`.`stu`) in 0 seconds.

Locked 0 views () in 0 seconds.

Copying 5 files...

Copying indices for 0 files...

Unlocked tables.

mysqlhotcopy copied 2 tables (5 files) in 0 seconds (0 seconds overall).

第四步,模拟数据丢失

[[email protected] databackup]# ll larrydb

total 36

-rw-rw----. 1 mysql mysql 8590 Sep 10 19:07 class.frm

-rw-rw----. 1 mysql mysql 65 Sep 10 19:07 db.opt

-rw-rw----. 1 mysql mysql 8618 Sep 10 19:07 stu.frm

-rw-rw----. 1 mysql mysql 48 Sep 10 19:07 stu.MYD

-rw-rw----. 1 mysql mysql 1024 Sep 10 19:07 stu.MYI

mysql> use larrydb;

Database changed

mysql> show tables;

+-------------------+

| Tables_in_larrydb |

+-------------------+

| class |

| stu |

+-------------------+

2 rows in set (0.00 sec)

mysql> show create table class \G;

*************************** 1. row ***************************

Table: class

Create Table: CREATE TABLE `class` (

`cid` int(11) DEFAULT NULL,

`cname` varchar(30) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

mysql> show create table stu \G;

*************************** 1. row ***************************

Table: stu

Create Table: CREATE TABLE `stu` (

`sid` int(11) DEFAULT NULL,

`sname` varchar(30) DEFAULT NULL,

`cid` int(11) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

mysql> drop table class,stu;

Query OK, 0 rows affected (0.01 sec)

mysql> show tables;

Empty set (0.00 sec)

#这样删除会出错,不要这样删除

[[email protected] databackup]# rm -rf /usr/local/mysql/data/larrydb/*

[[email protected] databackup]# rm -rf /usr/local/mysql/data/larrydb/

第五步,恢复数据

[[email protected] databackup]# cp larrydb /usr/local/mysql/data/ -arvf

`larrydb' -> `/usr/local/mysql/data/larrydb'

`larrydb/stu.MYI' -> `/usr/local/mysql/data/larrydb/stu.MYI'

`larrydb/stu.MYD' -> `/usr/local/mysql/data/larrydb/stu.MYD'

`larrydb/stu.frm' -> `/usr/local/mysql/data/larrydb/stu.frm'

`larrydb/db.opt' -> `/usr/local/mysql/data/larrydb/db.opt'

`larrydb/class.frm' -> `/usr/local/mysql/data/larrydb/class.frm'

mysql> use larrydb;

Database changed

mysql> show tables;

+-------------------+

| Tables_in_larrydb |

+-------------------+

| class |

| stu |

+-------------------+

2 rows in set (0.00 sec)

mysql> select * from class;

ERROR 1146 (42S02): Table 'larrydb.class' doesn't exist

mysql> select * from stu;

+------+---------+------+

| sid | sname | cid |

+------+---------+------+

| 1 | larry01 | 1 |

| 2 | larry02 | 2 |

+------+---------+------+

2 rows in set (0.00 sec)

mysql> drop database larrydb;

Query OK, 2 rows affected (0.00 sec)

#再次导入

[[email protected] databackup]# mysql -uroot -p123456 < larrydb.sql

mysql> use larrydb;

Database changed

mysql> show tables;

+-------------------+

| Tables_in_larrydb |

+-------------------+

| class |

| stu |

+-------------------+

2 rows in set (0.00 sec)

mysql> select * from stu;

+------+---------+------+

| sid | sname | cid |

+------+---------+------+

| 1 | larry01 | 1 |

| 2 | larry02 | 2 |

+------+---------+------+

2 rows in set (0.00 sec)

mysql> select * from class;

+------+--------+

| cid | cname |

+------+--------+

| 1 | linux |

| 2 | oracle |

+------+--------+

2 rows in set (0.00 sec)

四 相关阅读

我的邮箱: [email protected] 新浪微博: @jutdb

微信公众平台:JustOracle(微信号:justoracle)

数据库技术交流群:336882565(加群时验证 From CSDN XXX)

All is well

2013年11月10日

By Larry Wen

 

@Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]

作者:Wentasy 发表于2013-11-10 11:33:03 原文链接

阅读:106 评论:0 查看评论

mysql热拷贝_MySQL备份与恢复之热拷贝相关推荐

  1. mysql 热块_mysql 优化

    数据库层面:应用系统层面优化SQL优化 SQL优化一般通过分析慢查询日志来抓取长事务高消耗的sql,通过结合具体业务,对sql逻辑进行分析and精简,or重写sql.通过配置slow_query_lo ...

  2. mysql 备份到别的机器_物理拷贝备份mysql到其他机器上恢复

    经常会遇到mysql数据要迁徙的情况 ,逻辑导出是可以的 但是就是太慢 第三方工具也同样可以用 也是操作麻烦,最简单粗暴的方式就是直接拷贝物理文件来的最快 也很简单 当然 前提是远程服务器和目标服务器 ...

  3. mysql复制库目录结构_利用拷贝data目录的方式进行迁移mysql5.7数据库

    利用拷贝data目录文件的方式迁移mysql数据库 其实迁移数据库,一般用sql文件就行,把A服务器数据库的表结构和数据等等导出,然后导入到B服务器数据库, 但是这次数据文件过大,大约有57个G,使用 ...

  4. mha数据备份_MySQL备份与恢复之保证数据一致性(5)

    在上一篇文章中我们提到热拷贝(MySQL备份与恢复之热拷贝),热拷贝也就是在MySQL或者其他数据库服务在运行的情况下使用mysqlhotcopy命令进行备份.这篇文章我们讲解怎样保证数据一致性.现在 ...

  5. mysql 热备份 数据一致性_MySQL 使用 XtraBackup 进行数据热备份指导 [全量+增量]

    背景 最近一直涉猎 MySQL 数据库的操作.集群部署 注意到,为保证数据安全,掌握数据备份是极为重要的 相比小型服务的冷备份而言 在此推荐并整理更受推崇的 XtraBackup 下的热备份技巧 ☞ ...

  6. mysql备份技术_MySQL备份与还原

    大学时候写的文章,再用一下 MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup mysqldump 本例为方便演示,数据库里面数据 ...

  7. Android 热补丁技术——资源的热修复

    前言 今年真是热补丁框架的洪荒之力爆发的一年,短短几个月内,已经出现了好几个热修复的框架了,基本上都是大同小异,这里我就不过多的去评论这些框架.只有自己真正的去经历过,你才会发现其中的 大写的坑 事实 ...

  8. 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D

    热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...

  9. mysql数据库导出_MySQL数据库导入导出详解[转发]

    1. 概述 MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入: 2) 直接拷贝数据库目录和文件. 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况 ...

  10. mysql 同步更新_MySQL slave 不能同步更新

    MySQL slave 不能同步更新 mysql slave server 上进程停止   重启后 不接收 master上的更新 mysql>show slave status\G; ***** ...

最新文章

  1. 为什么你写的代码糟透了?
  2. 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】
  3. Learning Attention-based Embeddings for Relation Prediction in Knowledge Graphs Deepak
  4. 利用 Chrome 开发者工具自带的 Memory 工具分析 Node.js 应用的内存分配情况
  5. 在 SAP CRM Fiori 应用上给 Opportunity 订单添加 note 的后台执行明细
  6. 设置断点检测控件何时创建和析构
  7. 最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题
  8. matlab怎么写集合,matlab集合操作
  9. 《编写可测试的JavaScript代码》——1.3 卓越的应用程序代码
  10. 有没有更好的方法在JavaScript中执行可选的函数参数? [重复]
  11. 如何清除vsphere主机提示“此主机当前没有管理网络冗余”
  12. overridden/inherited关键字的读书笔记
  13. 计算机等级考试c语言 真题,计算机等级考试二级C语言真题
  14. 未来IT行业前景如何?
  15. MySql每晚12点都会弹出这个?
  16. 【题解】L1-6 福到了 (15分)
  17. flash特效原理:图片切换滚动
  18. #ex8 C语言标准实验报告
  19. oracle快速了解法,快速掌握Oracle基本语法,让你来去自如
  20. 手机变速齿轮_变速齿轮神途手机版下载

热门文章

  1. 迪斯尼:我们根本没被黑 整件事实际上是一场骗局
  2. 用面向对象思想设计奥赛罗游戏
  3. Hibernate 主键策略
  4. vi显示行数命令和跳转到指定行
  5. OJ 上常见错误提示
  6. '__pendingCallbacks[...].async' is null or not an object
  7. 性能测试之工具对比-ngrinder jmeter loadunner及ngrinder安装使用方法
  8. Android自定义ProgressBar样式:渐变圆角水平进度条
  9. NYOJ-915 +-字符串(贪心)
  10. UVa10491 Cows and Cars