浅谈mysql 针对单张表的备份与还原

 更新时间:2017年03月18日 10:56:17   投稿:jingxian  
下面小编就为大家带来一篇浅谈mysql 针对单张表的备份与还原。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

A、MySQL 备份工具xtrabackup 的安装

1. percona 官方xtrabackup 的二进制版本;二进制版本解压就能用了。

2. 解压xtrabackup & 创建连接

tar -xzvf percona-xtrabackup-2.3.4-Linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/percona-xtrabackup-2.3.4 /usr/local/xtrabackup

3. 设置PATH环境变量
export PATH=/usr/local/xtrabackup/bin/:$PATH    

B、在mysql数据库中创建一个用户备份的用户 & 授权

1. 创建用户

        create user backuper@'localhost' identified by 'backup123';
        create user backuper@'127.0.0.1' identified by 'backup123';

2. 授权

grant reload,lock tables,replication client,process,super on *.* to 'backuper'@'localhost';
        grant create,insert,select on percona_schema.xtrabackup_history to 'backuper'@'localhost';
        grant reload,lock tables,replication client,process,super on *.* to 'backuper'@'127.0.0.1';
        grant create,insert,select on percona_schema.xtrabackup_history to 'backuper'@'127.0.0.1';

C、备份前的检查,这一步的主要目地是在之后做还原操作时,验证还原是不是有效;(生产是没有这一步的,

1. select * from tempdb.dict__major;
   select * from dict__major;

        +--------------+-----------------+
        | column_value | column_mean     |
        +--------------+-----------------+
        |            1 | 汉语言文学      |
        |            2 | 精算            |
        |            3 | 生物制药        |
        |            4 | 材料化学        |
        |            5 | 商务英语        |
        |            6 | 考古            |
        |            7 | 外交            |
        |            8 | 导游            |
        +--------------+-----------------+

D、备份tempdb.dict__major 表

1. 备份命令

innobackupex --host=127.0.0.1 --user=backuper --password=backup123 --port=3306 --include='tempdb.dict__major' /tmp/tempdb   

2. 备份完成后会在备份目录(/tmp/tempdb) 下生成用当前时间命名的目录,里面保存的就是备份文件

        tree /tmp/tempdb/
        /tmp/tempdb/
        └── 2016-09-10_18-25-16
            ├── backup-my.cnf
            ├── ibdata1
            ├── tempdb
            │   ├── dict__major.frm
            │   └── dict__major.ibd
            ├── xtrabackup_binlog_info
            ├── xtrabackup_checkpoints
            ├── xtrabackup_info
            └── xtrabackup_logfile
           

E、备份完成后就可以删除tempdb.dict__major表了(注意这里一定要保存一份表的定义,还原时会用到)

mysql>drop table tempdb.dict__major;

F、为了得到一个一致的备份集 在还原操作前还要进行一次日志的前滚和回滚

1. 前滚&回滚日志

innobackupex --apply-log --export /tmp/tempdb/2016-09-10_18-25-16/ 

2.  与前滚& 回滚前的对比

        tree /tmp/tempdb/
        /tmp/tempdb/
        └── 2016-09-10_18-25-16
            ├── backup-my.cnf
            ├── ibdata1
            ├── ib_logfile0
            ├── ib_logfile1
            ├── tempdb
            │   ├── dict__major.cfg
            │   ├── dict__major.exp
            │   ├── dict__major.frm
            │   └── dict__major.ibd
            ├── xtrabackup_binlog_info
            ├── xtrabackup_binlog_pos_innodb
            ├── xtrabackup_checkpoints
            ├── xtrabackup_info
            └── xtrabackup_logfile
           

G、还原tempdb.dict__major表

1. 创建 tempdb.dict__major表

        create table dict__major(
        column_value tinyint not null,
        column_mean varchar(32) not null,
        constraint pk__dict__major primary key (column_value));

2. 删除 tempdb.dict__major的表空间文件

alter table tempdb.dict__major discard tablespace;

3. 把备份中的表空间文件复制到tempdb.dict__major 表空间应该在的位置

        cp /tmp/tempdb/2016-09-10_18-25-16/tempdb/dict__major.ibd /usr/local/mysql/data/tempdb/
        cp /tmp/tempdb/2016-09-10_18-25-16/tempdb/dict__major.exp /usr/local/mysql/data/tempdb/
        cp /tmp/tempdb/2016-09-10_18-25-16/tempdb/dict__major.cfg /usr/local/mysql/data/tempdb/
        chown -R mysql:mysql /usr/local/mysql/data/tempdb/*
       

4. 导入表空间文件

alter table tempdb.dict__major import tablespace;    

5. 查看dict__major表恢复情况

        select * from dict__major;
        +--------------+-----------------+
        | column_value | column_mean     |
        +--------------+-----------------+
        |            1 | 汉语言文学      |
        |            2 | 精算            |
        |            3 | 生物制药        |
        |            4 | 材料化学        |
        |            5 | 商务英语        |
        |            6 | 考古            |
        |            7 | 外交            |
        |            8 | 导游            |
        +--------------+-----------------+

---------------------------------------------------------------

上一节用的是xtrabackup 对表进行备份,它的应用场景是单表的数据量大且在备份的过程中还要支持对表的写操作;也就是说在目前的场景下mysqldump 这个简单的

备份工具也是可以满足要求的;


现给出mysqldump 备份的一般步骤

A:创建备份用户

1.
        create user dumper@'127.0.0.1' identified by 'dumper123';
        grant select on *.* to dumper@'127.0.0.1';
        grant show view on *.* to dumper@'127.0.0.1';
        grant lock tables on *.* to dumper@'127.0.0.1';
        grant trigger on *.* to dumper@'127.0.0.1';
       

B:备份tempdb.dict__major表

1.
mysqldump --host=127.0.0.1 --port=3306 --user=dumper --password=dumper123 --quick tempdb dict__major >/tmp/tempdb.dict__major.sql
   

C: 删除已经备份的表

1.
mysql>drop table tempdb.dict__major;

D:还原tempdb.dict__major表

1.
mysql -uroot -pxxxxx -h127.0.0.1 -p3306 tempdb </tmp/tempdb.dict__major.sql     

E:检证还原的有效性

1.
select * from dict__major;

        +--------------+-----------------+
        | column_value | column_mean     |
        +--------------+-----------------+
        |            1 | 汉语言文学      |
        |            2 | 精算            |
        |            3 | 生物制药        |
        |            4 | 材料化学        |
        |            5 | 商务英语        |
        |            6 | 考古            |
        |            7 | 外交            |
        |            8 | 导游            |
        +--------------+-----------------+

以上这篇浅谈mysql 针对单张表的备份与还原就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql的存储过程、游标 、事务实例详解

    mysql的存储过程、游标 、事务实例详解

    这篇文章主要介绍了mysql的存储过程、游标 、事务实例详解的相关资料,这里举实例说明MySQL 存储过程与游标和事务,需要的朋友可以参考下
    2017-08-08
  • mysql 8.0.17 安装配置图文教程

    mysql 8.0.17 安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.17 安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • mysql 提示INNODB错误的解决方法

    mysql 提示INNODB错误的解决方法

    解决The‘InnoDB’feature is disabled; you need MySQL built with ‘InnoDB’ to have it
    2011-09-09
  • MyBatis动态SQL、模糊查询与结果映射操作过程

    MyBatis动态SQL、模糊查询与结果映射操作过程

    本篇所讲的动态SQL,是mybatis通过标签元素的形式, 如if, choose, when, otherwise, trim, where, set, foreach等标签完成对sql的拼接功能,使用起来也非常灵活方便,这篇文章主要介绍了MyBatis动态SQL、模糊查询与结果映射,需要的朋友可以参考下
    2023-08-08
  • MySQL入门教程(七)之视图

    MySQL入门教程(七)之视图

    视图是从一个或多个表中导出来的虚拟表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。本文给大家介绍MySQL入门教程(七)之视图,需要的朋友参考下
    2016-04-04
  • MySQL中聚簇索引与非聚簇索引的实现

    MySQL中聚簇索引与非聚簇索引的实现

    MySQL数据库中,聚簇索引和非聚簇索引是提高查询效率的关键,聚簇索引决定数据的物理存储顺序,通常由主键或UNIQUE索引构成,非聚簇索引则通过指针定位数据行,适合访问数据子集,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-09-09
  • 安装的mysql中没有my.ini文件的解决方法

    安装的mysql中没有my.ini文件的解决方法

    本文主要介绍了安装的mysql中没有my.ini文件的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • MySQL中使用or、in与union all在查询命令下的效率对比

    MySQL中使用or、in与union all在查询命令下的效率对比

    这篇文章主要介绍了MySQL中使用or、in与union all在查询命令下的效率对比,论证了在通常情况下union all并不一定比or及in更快,需要的朋友可以参考下
    2015-11-11
  • MySQL InnoDB引擎的缓存特性详解

    MySQL InnoDB引擎的缓存特性详解

    这篇文章主要介绍了MySQL InnoDB引擎的缓存特性详解的相关资料,需要的朋友可以参考下
    2022-09-09
  • Linux下修改MySQL数据库数据文件路径的步骤

    Linux下修改MySQL数据库数据文件路径的步骤

    这篇文章主要介绍了Linux下修改MySQL数据库数据文件路径的步骤,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12

最新评论