MySQL备份

MySQL 分为 热备和冷备 

  (一) 热备  

    物理备份的缺点

      (1)跨平台差

      (2)备份时间长、冗余备份、浪费存储时间

    热备

      备份中不锁表适合生产环境

    1. 安装

      (1)libev-4.15-1.el6.rf.x86_64.rpm (依赖包)

      (2)XtraBackup软件包

    2. 常用的选项

      (1)--host(主机名)

      (2)--user(用户名)

      (3)--port(端口号)

      (4)--password(密码)

      (5)--databases(数据库名)

        例子:

          --databases="库名"  为一个库

          --databases="库名 库名"    多个库空格隔开

             --databases="库名.表名"     表的话"库名.表名"

      (6)--redo-only(日志合并,备份的会有一个日志文件 在备份过程中也会有数据写入那么这些数据也会有一个备份的文件。日志合并就是把这两个文件合成一个)

      (7)--apply-log(准备数据恢复)

      (8)--copy-back(拷贝数据)

      (9)--incremental  目录名 (增量备份)

      (10)--incremental-basedir=目录名 (增量备份时,指定上一次备份数据存储的目录名)

      (11)--incremental-dir=目录名 (准备恢复数据时,指定增量备份数据存储的目录名)

      (12)--export(导出表信息)

      (13)--import(导出表空间)

    3. 命令

      (1)完全备份/恢复     (恢复时要求数据库为空)

        innobackupex  --user  用户名  --password  密码   备份目录     (备份)

        innobackupex   --redo-only  --apply-log  目录名                     (准备数据恢复)

        innobackupex   --copy-back    目录名             (数据恢复)

      (2)增量备份/恢复  (增量备份要求为innodb引擎,引擎查看 show engines)

        innobackupex  --user  用户名  --password  密码   --incremental 增量目录  --incremental-basedir=目录名    --no-timestamp                 (增量备份)

           innobackupex   --redo-only  --apply-log  目录名   --incremental-dir=目录名            (准备恢复数据)

        

        innobackupex   --copy-back   目录名      (数据恢复)

    4. 恢复完之后 查看权限是否为MySQL 不是的话改为MySQL(chwon  -R   mysql:mysql   /var/lib/mysql)

    5.恢复单张表 (完全备份之后在操作恢复单张表,误删除表数据)

      (1)表空间(*.ibd)和表结构(*.frm)

          表空间里边放着一张表的数据

          表结构(desc 查表的结构)

      (2)mysql> alter table 库名.表明 discard  tablespace;         (删除表空间 ibd)

      (3)innobackupex --apply-log --export   数据完全备份目录      (导出表信息 ,导出表信息会出现 *.cfg文件和*.exp文件  存储这表的信息数据)

      (4)把导出的表信息的两个文件和ibd表结构文件 拷贝到数据库目录下,给数据库目录mysql 所有者/所有组 权限 

      (5)mysql> alter table db3.user2 import tablespace;        (导入表空间)

      (6)查看表数据删除数据库目录下的两个表信息文件  *.cfg  *.exp

  (二)冷备 (可以直接 tar cp 备份,直接备份/var/lib/mysql/* 所有文件)

    1. mysqldump (权限要查看)

      (1)mysqldump -u root  -p 密码  库名   >   *.sql                       (完全备份)

          -B 库名1 库名2   (用空格隔开)

          -A 所有库

          库名 表明      (用空格隔开)

      (2)mysql -u root -p 密码  库名   <  *.sql

    2. binlog日志增量备份

      (1)开启日志

         指定server_id

      (2)mysqlbinlog 日志文件  (查看  以commit为界限 at偏移量  回复日志)

      (3)命令

        mysqlbinlog --start-datetime="2017-04-12 12:06:55" --stop-datetime="2017-04-12 12:07:23"  /var/lib/mysql/mysql-bin.000002 | mysql -u root -p     (这是以时间为恢复点 还可以 以偏移量为恢复点   只需要吧 datetime 替换为position)

上一篇:mysql数据库的备份与恢复


下一篇:MySQL Backup--innobackupex操作日志