原版MySQL中如何恢复单个InnoDB数据库表

Percona 中的 xtrabackup 真是个好工具, 简单的介绍的他的功能:

1、创建热备份(主要依靠innodb的 crash recovery 功能)

2、增量备份

3、直接对备份文件压缩打包

4、负载小

在测试最新版本2.0时,发现问题:

importing  and   exporing  individual tables中这个工具对Oracle 原版的MySQL是不起作用的。

本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/

解释如下:在原版MySQL中是不能任意移动数据库的.idb文件,官方给出的解释是:the table definition that is stored in the InnoDB shared tablespace includes the database name, and becauseInnoDB must preserve the consistency of transaction IDs and log sequence numbers. 即:表定义存储在innodb 中的共享表空间中,事务id 和日志序列号是放在单个的表空间文件中。(在percona  server 这个限制已经移除)

经多方咨询:这个工具对于原版MySQL 还是可以用的。具体如下:

备份单个表:

innobackupex --tables-file=/tmp/tables.txt  /path/to/backup

关键是下面这步:

--export 先使用该选项获得一个完全独立的idb文件(官方未提到)

innobackupex  --defaults-file=/usr/local/mysql/my.cnf --export  /tmp

下面是将应用日志而得到一个一致的备份:

innobackupex  --defaults-file=/usr/local/mysql/my.cnf --export --apply-log  /path/to/backup

最后是 import TABLESPACE;

时间: 2025-01-21 13:29:58

原版MySQL中如何恢复单个InnoDB数据库表的相关文章

mysql-netbeans如何与MySQL中已经建好的数据库链接

问题描述 netbeans如何与MySQL中已经建好的数据库链接 netbeans如何与MySQL中已经建好的数据库链接,mysql中德数据库和表信息已经建好,如何与netbeans建立连接,, 解决方案 我把当初写的一个连接类复制进来了,连接只需三步就行了 public static Connection getConnection() { Connection cn=null;//定义连接对象 try{ //装载驱动类 //调用类的静态的方法或属性时,此类会装载到JVM //创建类的对象时

ubuntu-mysqldump出的数据库sql文件在另一机器的mysql中source导入结果不一致,表丢失

问题描述 mysqldump出的数据库sql文件在另一机器的mysql中source导入结果不一致,表丢失 求指导.用mysqldump导出一张有128张表的数据库sql文件,在另一台机器的mysql中source导入,只剩下84张表.重复多次,也是同样的表丢失.请问这是什么原因啊?系统都是linux ubuntu14.04,mysql5.5 解决方案 没碰到过这样的问题,按理应该source以后是一致的.数据库是不是有什么配置问题 解决方案二: 还有一个现象是,我迁移到windows下的mys

在MySQL中如何有效的删除一个大表?

在MySQL中如何有效的删除一个大表? Oracle大表的删除:http://blog.itpub.net/26736162/viewspace-2141248/ 在DROP TABLE 过程中,所有操作都会被HANG住.这是因为INNODB会维护一个全局独占锁(在table cache上面),直到DROP TABLE完成才释放.在我们常用的ext3,ext4,ntfs文件系统,要删除一个大文件(几十G,甚至几百G)还是需要点时间的.下面我们介绍一个快速DROP table 的方法: 不管多大的

MySQL中使用SQL语句查看某个表的编码方法_Mysql

MySQL中,如何使用SQL语句来查看某个表的编码呢?我们使用show create table 这一SQL语句来解决这个问题. show create table可以查看创建这个表的SQL语句脚本,它的基本语法是: show create table <表名>; 我们用它看看test表的create脚本: mysql> show create table test; +-------+--------------------------------------------- -----

MySQL 备份恢复单个innodb表的教程

在实际环境中,时不时需要备份恢复单个或多个表(注意:这里除非明确指定,所说的表一律指InnoDB表),而对于innodb引擎恢复单个表需要整体的恢复,xtrabackup也可以单个表恢复,只不过是用的正则过滤的,不知最新版本是否支持表空间传输特性.本文将要说说怎么移动或复制部分或全部的表到另一台服务器上,而所要用到的技术点就是transportable tablespace特性,这就意味着MySQL5.6.6以及以上版本才支持. 表空间传输特性允许表空间从一个实例移动到另一个实例上.这在以前版本

MySQL中MyISAM引擎与InnoDB引擎性能简单测试

[硬件配置] CPU : AMD2500+ (1.8G) 内存: 1G/现代 硬盘: 80G/IDE [软件配置] OS : Windows XP SP2 SE : PHP5.2.1 DB : MySQL5.0.37 Web: IIS6 [MySQL表结构] CREATE TABLE `myisam` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) default NULL, `content` text, PRIMARY

MySQL中创建、修改和删除表命令(1/2)

其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语句,但是不是任何项目都要用到大框架的,如果不用,那你是不是就不会操作数据库了呢,所以我们最好还是熟悉一点好,对我们以后找工作和工作都有帮助. 在说创建.修改和删除表前,我们还是要进行一个操作的简单说明: 1.登陆数据库系统 在命令行中登陆MySQL数据库管理系统,输入以下内容: mysql -h l

MySQL中的行级锁、表级锁、页级锁_Mysql

在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎).表级锁(MYISAM引擎)和页级锁(BDB引擎 ). 一.行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁.行级锁能大大减少数据库操作的冲突.其加锁粒度最小,但加锁的开销也最大.行级锁分为共享锁 和 排他锁. 特点 开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也

超实用--删除MYSQL中指定的数据的全部表

作过的人都知道,重复测试数据库的苦恼. 用法:# Usage: ./script user password dbnane mysql.nixcraft.in ~~~~~~~~~~~~~ #!/bin/bash # 删除mysql中所有表 # 示例: # Usage: ./script user password dbnane # Usage: ./script user password dbnane server-ip # Usage: ./script user password dbna