备份和恢复

为什么要备份?
    灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作
    测试
    要注意的点:
      备份需要多少时间
      能够容忍多少的数据丢失
      恢复数据需要在多长时间完成
      需要恢复哪些数据
       1、做还原测试,用户测试备份的可用性
       2、还原演练
     备份的时长很重要,备份是要消耗磁盘io的。
     还要做数据库配置文件参数的备份。
 
 备份类型
    完全备份,部分备份
       完全备份:整个数据集
       部分备份:只备份数据子集
    完全备份、增量备份、差异备份
       增量备份:只备份最近一次完全备份或者增量备份以来的变化的数据。
       差异备份:仅备份最近一次完全备份以来的变化的数据。
    热备、温备、冷备
       热备:读写操作均能执行
       温备:读操作可以,但是写不行
       冷备:读写操作均不能执行
   
     Myisam:温备、不能热备;
     Innodb:热备;
   
    物理备份、逻辑备份
       物理备份:直接复制数据文件进行备份,与存储引擎无关。
       逻辑备份:从数据库‘导出’数据另存进行备份。
  
       物理备份——直接拷贝,你要确保没有数据写入,所以物理备份最好使用温备,先将表锁住。
       逻辑备份——二进制日志
   
 备份时要考量的因素
      持续多久
      备份过程的时间长
      备份负载:如果负载较高,可能需要停掉。
      恢复时间长短
      备份的时候做好先后手,如果不行怎么办?不行怎么退出?
 备份什么
      数据
      二进制日志,innodb的事务日志
      代码(存储过程、存储函数、触发器、时间调度器)
      服务器的配置文件,各个参数设置
 设计备份方案
      数据集:完全备份+增量备份+二进制日志 | 完全备份+差异备份+二进制日志
      备份手段:物理备份、逻辑备份
      对于较大体量的数据建议使用物理备份,对于较小的数据建议使用逻辑备份。
      物理备份和逻辑备份,两种备份方式的恢复时间有差异。
 备份工具的选择
    mysqldump+复制binlog:
       mysqldump:完全备份
       复制binlog中指定时间范围的event:增量备份
    lvm2快照+复制binlog
       lvm2快照:适用cp或者tar等做物理备份:完全备份
       复制binlog中指定时间范围的event:增量备份
    xtrabackup|mariabackup
       由percona提供的支持对Innodb做热备的工具:物理备份
       既可以做全量也可以做增量
  
    mysqldump——逻辑备份工具
    lvm2和xtrabackup|mariabackup——都是物理备份工具
  
    lvm2——确保数据库没有任何的数据写入,也即要锁表。
  
 备份、恢复方法
    基于二进制文件的恢复:
       方式一、
       算好要恢复的数据的时间段,将其中的binlog记录的sql语句重定向输出到bin.sql文件中
       mysqlbinlog  --start-datetime=“2019-06-08 22:55:13” --stop-datetime="2019-06-08 22:58:11" mysql-bin.000001 > bin.sql
       进入数据库,source一下这个文件
       source bin.sql
       方式二、
       mysqlbinlog /var/lib/mysql/mysql-bin.000005 --stop-position=1389 | msyql -uroot -proot
       #没有start就从头开始,有start就依据start开始
   
    lvm2备份恢复:
       pvcreate /dev/sdb1
       vgcreate testvg /dev/sdb1
       lvcreate -L 1G -n testlv testvg
       mkfs -t ext4 /dev/testvg/testlv
       mount /dev/testvg/testlv /test   #写入/etc/fstab 或者/etc/rc.local来让它开机自动挂载
       #挂载使用,将/test设置为数据库的数据存储目录,然后依照lvm2快照来对其中的数据进行快照备份。
   
       然后使用卷快照来备份数据
       1、lvm2是物理备份,先锁表
        flush tables with read lock;
       2、快照
        lvcreate -L 1G -s -p rw -n snap_testlv /dev/testvg/testlv
         -L —— --size
         -s —— --snap
         -p —— --permission rw|r
         -n —— --name
         /dev/testvg/testlv : 参照复制的目录
       3、unlock tables;
       #锁表之后一定要记得解锁
       4、mount /dev/testvg/snap_testlv /snap_test  #挂载使用,数据验证
       #这里需要注意的是,xfs文件系统不支持卷快照
   
       #这个时候你就可以在/snap_test中cp其中的内容了。
       #note:还原的时候要确保的你的属主和属组都是mysql,如果是root那么数据库会出问题。
   
    mariabackup:物理备份工具
       Xtrabackup——是mysql的备份工具,实际上也可以用于mariadb,但是仅限于10以前。
       10以后要用mariabackup
       Mariabackup:
       物理备份工具,可以实现在线备份。
       它是根据事务日志来备份的,在10.3.x及以上版本使用xtrabackup工具会有问题,原因可能是10.3版本的redo日志格式和以前不一样了。
       #note:事务日志要删除就成对成组删除,删除单个可能会让数据失去一致性,数据库会起不来。
       安装:
       yum install MariaDB-backup  #前提是有MariaDB的源
       全备+恢复:
        1、全量备份
        mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root
        2、准备全备数据
        mariabackup --prepare --target-dir=/root/fullbackup --user=root --password=root
        3、还原数据(确保数据目录为空)
        mariabackup --copy-back --target-dir=/root/fullbackup --user=root --password=root
        4、修改属组属主
        chown -R mysql.mysql /var/lib/mysql
    
       全量+增量+恢复:
        1、全量备份
        mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root
        2、增量备份
        mariabackup --backup --target-dir=/root/inc1 --incremental-basedir=/root/fullbackup --user=root --password=root
        3、准备全备数据
        mariabackup --prepare --target-dir=/root/fullbackup --user=root --password=root
        4、增量和全备的合并
        mariabackup --prepare --target-dir=/root/fullbackup --user=root --password=root --incremental-dir=/root/inc1/ --apply-log-only
         --apply-log-only:在准备增量备份时,必须跳过未提交事务的回滚,使用--apply-log-only选项防止回滚阶段
        5、恢复数据(确保数据目录下是空的)
        mariabackup --copy-back --target-dir=/root/fullbackup --user=root --password=root
        6、修改属组属主
        chown -R mysql.mysql /var/lib/mysql
        如果增量不止一个呢?怎么合并?   一直去合并就可以,做增量的时候一定要加上--apply-log-only。

  mysqldump逻辑备份工具:
       #备份testdb数据库(-l表示备份单个数据库的时候锁定该库的所有表,-x当对所有的数据库备份时锁定所有数据库的所有表)
       mysqldump -uroot -proot -l --databases testdb > testdb.sql
       #备份所有数据库
       mysqldump -uroot -proot -x --all-databases > all_databases.sql
       #备份testdb数据库下的students表
       mysqldump -uroot -proot testdb students > students.sql
       #如果要备份多个表那么使用空格隔开即可。
       mysqldump -uroot -proot testdb students test_table > both.sql
       #还原数据(sql命令)
       source testdb.sql  #注意文件的路径,在当前工作目录之下。
       #涉及锁表,温备;Mysqldump不能实现增量备份。
   
    全备+增量+二进制——>恢复    #还要去筛选一下二进制文件的时间
    当数据上了一定的量级之后,使用mysqldump去备份只能是杯水车薪。
   
  数据库更换目录
     如果是由yum安装的数据库,默认数据目录是在/var/lib/mysql,如果需要更改:
      vim /etc/my.cnf.d/server.cnf
      [mysqld]
      datadir=/test3/
      pid_file=/test3/localhost.pid
      socket=/test3/mysql.sock
      wsrep_data_home_dir=/test3/
      log-bin=mysql-bin
      [client]
      socket=/test3/mysql.sock
     chown -R mysql.mysql /test3
     #重启数据库:service mariadb restart
     然后进入数据库查看dir:
     show variables like ’%datadir%‘;
     #实际上写入配置文件的都是参数

MariaDB——备份与恢复的更多相关文章

  1. MariaDB日志文件、备份与恢复

    1. 数据库的6种日志 数据库有6种日志,分别是:查询日志.慢查询日志.错误日志.二进制日志.中继日志以及事务日志. 1> 查询日志 查询日志记录每一条sql语句,建议不开启,因为如果访问量较大 ...

  2. mariadb数据库备份与恢复

    1.查询日志: 记录每一条sql语句,建议不开启,因为如果访问量较大,会占用相当大的资源,影响性能; vim /etc/my.cnf.d/server.cnf general_log = ON| OF ...

  3. 第18章 使用MariaDB数据库管理系统

    章节概述: MYSQL数据库管理系统被Oracle公司收购后从开源换向到了封闭,导致包括红帽在内的许多Linux发行版选择了MariaDB. 本章节将教会您使用mariaDB数据库管理工具来管理数据库 ...

  4. 1.Mariadb(mysql)基本操作

    1.:安装与初始化 1)安装 yum install -y mariadb\* 2)初始化 systemctl restart mariadb systemctl enable  mariadb my ...

  5. Mysql实现企业级日志管理、备份与恢复实战

    背景 随着业务的发展,公司业务和规模不断扩大,网站积累了大量的用户信息和数据,对于一家互联网公司来说,用户和业务数据是根基.一旦公司的数据错乱或者丢失,对于互联网公司而言就等于说是灭顶之灾,为防止系统 ...

  6. 项目实战6—Mysql实现企业级日志管理、备份与恢复实战

    Mysql实现企业级日志管理.备份与恢复实战 环境背景:随着业务的发展,公司业务和规模不断扩大,网站积累了大量的用户信息和数据,对于一家互联网公司来说,用户和业务数据是根基.一旦公司的数据错乱或者丢失 ...

  7. Linux-基础学习(五)-mariadb主从复制以及redis学习

    开始今日份整理 1.mariadb的主从复制 主从复制大致图示: 1.1 mysql基本命令复习 linux下的操作 .启动mysql systemctl start mariadb .linux客户 ...

  8. MariaDB主从复制,redis发布订阅,持久化,以及主从同步

      一. MariaDB主从复制 mysql基本操作 1 连接数据库 mysql -u root -p -h 127.0.0.1 mysql -u root -p -h 192.168.12.60 2 ...

  9. mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)

    一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...

随机推荐

  1. python下matplotlib的subplot的多图显示位置的问题

    1.说明 1.1 多图: 221,222 212 ------------附最后讲解,这下更清楚了吧,取个名字:颠倒一下--- 1.2 多图 211 223,224 ------------附最后讲解 ...

  2. vPC配置

    1.vPC概述 如下图所示,在传统网络中,出于冗余考虑,汇聚层往往由2台设备构成,一台接入层交换机使用2根上联链路,分别连接汇聚层2台设备. 这种拓扑所带来的问题是:受制于STP,对于同一个VLAN的 ...

  3. ES6简单语法

    ES6 简单语法: 变量声明 ES5 var 声明变量为全局变量 会变量提升 ES6 let 声明的变量为块级变量 且不能重复声明 不存在变量提升 # {}一个大括号为一个作用域 ES6 const ...

  4. 【SSM - druid 】配置与使用

    web.xml 配置 <!-- druid的监控页面配置开始 --> <servlet> <servlet-name>StatViewServlet</ser ...

  5. RDLC 表达式设置精度

    =IIf(RTrim(Parameters!u_currency.Value)="VND","F0","F2")

  6. 「JSOI2010」找零钱的洁癖

    「JSOI2010」找零钱的洁癖 传送门 个人感觉很鬼的一道题... 首先我们观察到不同的数最多 \(50\) 个,于是考虑爆搜. 但是这样显然不太对啊,状态数太多了. 然后便出现了玄学操作: \(\ ...

  7. JavaScript判断两个对象内容是否相等

    ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致 let obj1= { a: 1 } let obj2 = { a: 1 } console.log(Object.is ...

  8. DVWA靶机-sql自动注入

    1. 使用dvwa靶机进行sql注入实战(注:当前靶机安全级别为low) 打开sql漏洞,发现输入不同的数字会返回不同的信息, 先尝试手工判断是否存在sql注入 一般sql注入语句像这样,我们构造的是 ...

  9. tcp连接建立和断开

    TCP协议作为传输层主要协议之一,具有面向连接,端到端,可靠的全双工通信,面向字节流的数据传输协议. 1.TCP报文段 虽然TCP面试字节流,但TCP传输的数据单元却是报文段.TCP报文段分为TCP首 ...

  10. vue重置data数据

    可以通过this.$data获取当前状态下的data,通过this.$options.data()获取该组件初始状态下的data. 然后只要使用Object.assign(this.$data, th ...