zoukankan      html  css  js  c++  java
  • 备份

    备份分为:冷备、热备、异地灾备

    1.冷备的分类:

      物理备份、逻辑备份

      完全备份、增量备份

      在线(热)备份、温备份、离线(冷)备份

    1.1 物理备份

      常用工具:cp tar lvm

      (1)tar备份步骤

        ①停止服务 systemctl stop mariadb

        ②备份数据 tar -cf /tmp/mysql.all.tar /var/lib/mysql

        ③启动服务 systemctl start mariadb

         tar还原步骤

        ①停止服务 systemctl stop mariadb

        ②清环境 rm -rf/var/lib/mysql/*

        ③导入数据 tar -xf /tmp/mysql.all.tar -C

        ④启动服务 systemctl start mariadb

        ⑤测试

      (2)lvm 快照方式

        1.首先创建需要系统支持lvm方式

        ① 停止服务,全备份tar,挂载硬盘到数据目录下

        ② 导入数据,注意数据权限,启动服务。

        2.备份数据

        # 与数据库服务相关的操作

        ① 添加全局的读锁(只能读不能写‐‐‐》数据不会变)> flush tables with read lock;

        ② 创建快照 #lvcreate ‐s ‐L 1G ‐n snap1 /dev/vgmysql/lv1 ‐‐‐>/dev/vgmysql/snap1

        ③ 解锁 > unlock tables;

        # 与数据库服务无关的操作

        ① 挂载快照 mount /dev/vgmysql/snap1 /mnt (如果是xfs,mount ‐o nouuid/dev/vgmysql/snap1 /mnt )

        ② tar打包 cd /mnt;tar ‐cf /tmp/mysql.2.tar ./*

        ③ 删除挂载 umount umount /mnt

        ④ 删除快照 lvremove /dev/vgmysql/snap1

        3.lvm快照还原数据

        ① 停止服务 systemctl stop mariadb

        ② 清环境 rm ‐rf /var/lib/mysql/*

        ③ 导入数据 tar ‐xf /tmp/mysql.2.tar ‐C /var/lib/mysql

        ④ 启动服务 systemctl start mariadb

    2.逻辑备份

      常用工具 mysqldump  备份数据‐‐‐逻辑备份sql语句

    存储引擎 数据一致 服务可用 实现方式
    MYISAM OK NO 锁表
    INNODB OK YES MVCC

      备份方法

        mysqldump 

              -u 用户名

              -p 密码

              -A 所有的库

              --single‐transaction INNODB存储引擎的表备份时能够做到数据一致,服务可用

              ‐‐lock‐all‐tables MYISAM存储引擎的表备份时能够做到数据一致,服务不可用

      备份步骤

        INNODB mysqldump ‐uroot ‐puplooking ‐A ‐‐single‐transaction > /tmp/mysql.201608301600.sql

        MYISAM mysqldump ‐uroot ‐puplooking ‐A ‐‐lock‐all‐tables > /tmp/mysql.xxx.sql

      还原步骤

        停服务、清环境、启服务、

        导入数据 mysql < /tmp/mysql.all.1.sql

        刷新授权 flush privileges

    3.Percona Xtrabackup 

       常用参数

          -user=name   用户名

          -password=name   密码

          -apply-log  重演回滚

          -copy-back  还原数据

          -redo-only   只重演不回滚,与apply-log同时使用

      (1)全备份

          innobackupex user=root password=uplooking /tmp/backup 

         还原全备份

          停服务、清环境

          导数据 

             apply‐log   innobackupex apply-log /tmp/backup/2016 

             copy-back  innobackupex copy-back /tmp/backup/2016 

          改权限、启服务、测试

      (2)增量备份

            全备份 innobackupex ‐‐user=root ‐‐password=uplooking /tmp/backup

            增量备份1 innobackupex ‐‐user=root ‐‐password=uplooking ‐‐incrementalbasedir=/tmp/backup/2016‐09‐01_11‐32‐43 ‐‐incremental /tmp/backup

            增量备份2 innobackupex ‐‐user=root ‐‐password=uplooking ‐‐incremental‐basedir= ‐‐incremental

            增量备份3 innobackupex ‐‐user=root ‐‐password=uplooking ‐‐incremental‐basedir= ‐‐incremental

            全备份还原 innobackupex ‐‐apply‐log ‐‐redo‐only /tmp/backup/全备份innobackupex ‐‐apply‐log ‐‐redo‐only /tmp/backup/全备份 ‐‐incrementaldir=

            增量1 innobackupex ‐‐apply‐log ‐‐redo‐only /tmp/backup/全备份 ‐‐incrementaldir=

            增量2 innobackupex ‐‐apply‐log ‐‐redo‐only /tmp/backup/全备份 ‐‐incrementaldir=

            增量3 innobackupex ‐‐apply‐log /tmp/backup/全备份

               innobackupex ‐‐copy‐back /tmp/backup/全备份

    4.二进制日志

      (1)打开二进制日志。

        ①configure   修改配置文件 vi /etc/my.cnf

        ②log-bin=/bar/lib/mysql-log/master1

        ③mkdir 创建目录 并且修改GUO

        ④重启服务

        注:在mysql5.7以及更高版本中,必须同时加上server-id=1 这个配置

      (2)二进制日志的备份恢复使用

        ①二进制日志的备份

          mysqldump -uroot -puplooking -A --single-transaction --master-data=2 --flush-logs > /tmp/mysqlbak.1

            -A  备份所有的库,有其它选项备份,可以备份单独的库

            --master-data  将当前本备份时二进制文件名和pos位置记录到备份文件中去

            --flush-logs  备份完,启用一份新的二进制日志文件

        ②查看二进制文件

            mysqlbinlog 二进制文件名

              -start-datetime=name 起始时间点

               -stop-datetime=name 结束时间点

               -start-position=pos 位置编号,唯一,增大 at

                -stop-position=pos 

            过滤出有用的信息:mysqlbinlog mastera.000001 | sed -n '/^create/p;/^drop/p;/^alter/p;/^grant/p;

                      /^revoke/p;/^insert/p;/^delete/p;/^update/p;/^COMMIT/p;/^BEGIN/p;'

          ③二进制日志的还原方法

            1)停服务 清环境 启服务  导入全备份  刷新授权

            2)查看分析二进制日志,查看错误操作时间位置,还原正确操作

               mysqlbinlog ‐‐start‐datetime='2016‐08‐31 13:45:10' ‐‐stopdatetime='2016‐08‐31 13:45:42' /va

                r/lib/mysql‐log/mastera.000006|mysql ‐uroot ‐puplooking

            注:这里如果只进行stop,则一直从该日志开始位置,重演到stop位置,所以要有start 有stop进行还原

           

          

    1)configure 修改配置文件/etc/my.cnf
    2)log‐bin= 添加二进制日志存放的路径,以及二进制日志的名字log‐bin=/var/lib/mysqllog/
    mastera
    3)mkdir 创建目录
    4)UGO,selinux 修改权限mysql:mysql;selinux 允许
    5)restart mariadb 重启服务

      



       

    离线(冷)备份:备份过程中,服务中断
    温备份:备份过程中,只能读不能写
    在线(热)备份:备份过程中,服务正常使用

  • 相关阅读:
    在纪念中国人民抗日战争暨世界反法西斯战争胜利70周年大会上的讲话
    ConcurrentHashMap 的实现原理
    聊聊并发(四)——深入分析ConcurrentHashMap
    Mybatis 动态 SQL
    Mybatis Mapper XML 文件
    MySQL的语句执行顺序
    Java 集合细节(二):asList 的缺陷
    java中 列表,集合,数组之间的转换
    将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
    把Java数组转换为List时的注意事项
  • 原文地址:https://www.cnblogs.com/sangmu/p/6691438.html
Copyright © 2011-2022 走看看