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

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 重启服务

  

 

   

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

版权声明:本文为sangmu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sangmu/p/6691438.html