六、备份+实战1

1.关于备份

  备份原因

    丢:可能是莫名其妙丢失,服务器硬件坏了,或者软件坏了,导致文件丢失

    删:不小心删除了

 

  备份目标

    数据的一致性

    服务的可用性

 

  备份技术

    物理备份/冷备份

      直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的mysql服务器中。

      tar ,cp ,scp

      拷贝数据,有点快,缺点需要服务停止

    逻辑备份/热备份

      备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库

      mysqldump ,mydumper

      效率相对较低

  

  备份方式

    完全备份

    增量备份

    差异备份

 

2.实战1

  percona-xtrbackup

   简介:是一款开源免费的支持Mysql数据库热备份的软件,他能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务初见Innodb热备份。  为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql二不增加服务器的负载。

      

  获得软件包

    yum install http://repo.percona.com/yum/percona-release-latest.noarch.rpm  如果无法下载可以上网搜至...com/yum/

 

——————————

  安装

    观察yum仓库

    ls /etc/yum.repos.d/

 

    安装percona需要的mysql包

    yum install -y yum-utils  yum工具

    yum install -y https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm  mysql官方源

    yum makecache  刷新yum仓库缓存

    yum repolist all | grep mysql  查看mysql可用版本

    yum-config-manager --disable mysql80-community  禁用80

    yum-config-manager --enable mysql57-community  启动57

    yum install -y mysql-community-libs-compat  安装mysql

    systemctl start mysqld  启动masql

    

    yum安装percona-xtrabackup

    ls /etc/yum.repos.d/  查看yum仓库

    yum repolist  查看repo表

    yum makecache  刷新yum仓库缓存

    yum list | grep percona-xtrabackup  搜索yum库里关于percona-xtrabackup的包

    yum install -y percona-xtrabackup-24.x86_64  安装percona-xtrabackup

    yum list | grep percona-xtrabackup  检查安装结果,有@说明安装成功

    

——————————

  完全备份流程

    innobackupex --uesr=root --passwork='Qianfeng@123' /xtrabackup/full  inno数据库引擎backup备份ex执行 账号 密码 备份目录

    ls /xtrabackup/full  查看备份目录。数据库,配置文件,日志文件

    ls /xtrabackup/full/2022-01-14_00-00-43  查看备份目录

    ls /xtrabackup/full/2022-01-14_00-00-43/xtrabackup_binlog_info  查看二进制日志位置,如果mysql没有开二进制日志则无

    

——————————

  完全恢复流程

    模拟数据库损坏(在公司不要玩这个)

    systemctl stop mysqld  停止数据库

    rm -rf /var/lib/mysql/*  模拟文件缺失(别把mysql目录都删没了)

    rm -rf /var/log/mysqld.log  模拟文件缺失

    

    生成回滚日志

    innobackupex --apply-log /xtrabackup/full/2022-01-14_00-00-43/  指定备份点(因为不可能只有一个备份文件)

    

    恢复文件

    innobackupex --copy-back /xtrabackup/full/2022-01-14_00-00-43/

    

    验证恢复

    ls /var/lib/mysql

    chown -R mysql.mysql /var/lib/mysql  把mysql目录下的文件属主和属组授权回给员工(不可能每次都用root打开mysql)

    systemctl start mysqld

    mysql -uroot -p'Qianfeng@123'

      如果提示找不到mysql.sock则重启mysqld服务

      systemctl restart mysqld

    show databases;

    use school;

    show tables;

    select * from student1;

 

——————————

  增量备份流程

    简介:既上次完整备份以来增加的数据,是增量数据,对增量数据进行的备份是增量备份。

    

    准备工作

    使用指定的数据库

    create database testdb;

    use testdb;

    create table test(id int);

    insert into table values(1);

    select * from test;

    \q

  

    完整备份:周一

    rm -rf /xtrabackup/*  不让上次示例影响该示例

    date 01100000  把日期调整到周一

    date

    innobackupex --user=root --password='Qianfeng@123' /xtrabackup  数据库引擎备份执行 账号 密码 备份目录

    ll /xrtabackup/  2022-01-10_00-01-33

    当前,该备份中test记录id只有1

 

    增量备份:周二

    date 01110000  把日期调整到周二

    mysql -uroot -p'Qianfeng@123'

    insert into testdb.test values (2);  增加testdb.test的内容

    select * from testdb.test;

    \q

    innobackupex --user=root --password='Qianfeng@123'  --incremental /xtrabackup/  --incremental-basedir=/xtrabackup/2022-01-10_00-01-33  数据库引擎备份执行 账号 密码 --增量备份的目录  --增量备份基于完全备份的目录

    ls /xtrabackup/  查看增量备份是否成功

    

    增量备份:周三

    date 01120000

    mysql -uroot -p'Qianfeng@123' -e 'insert testdb.test values (3)'

    innobackupex --user=root --password='Qianfeng@123' --incremental /xtrabackup/ --incremental /xtrabackup/2022-01-11_01-50-27  基于周二的基础上增量备份

    ls /xtrabackup/  查看是否备份成功

    周三周四周五都一样,公司一般会在周六或者周日选一天再做一次完全备份,如果是周六做完全备份,那么周日依旧是增量备份。

    

——————————

  增量恢复流程

    停止数据库

    systemctl stop mysqld

    清理环境

    rm -rf /var/ilb/mysql/*

    回滚合并

    innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_00-01-33  周一的只回滚合并

    innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_00-01-33 --incremental-dir=/xtrabackup/2022-01-11_01-50-27  周二的增量备份与01-10的回滚  此时01-10回滚增加了01-11的备份

    innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_00-01-33 --incremental-dir=/xtrabackup/2022-01-12_00-08-44  周三的增量备份与01-10完全备份回滚

    恢复

    innobackupex --copy-back /xtrabackup/2022-01-10_00-01-33

    chown -R mysql.mysql /var/lib/mysql/*

    ll /var/lib/mysql/

    检验

    systemctl start mysqld

    mysql -uroot -p'Qianfeng@123' -e 'select * from testdb.test'

    需要恢复到周几的数据就回滚到哪

 

——————————

  差异备份流程

    简介

    增量备份恢复十分麻烦,差异备份的原理是两个备份文件,一个是完全备份,一个是除了完全备份数据外的其他备份数据。是完全备份和增量备份之间的产品。好处是比增量备份方便快捷,缺点是比较占用空间。

    更改日期

    date 01100000

    清空上次示例的备份

    rm -rf /xtrabackup/*

    完全备份

    mysql -uroot -p'Qianfeng@123' -e 'create table testdb.test2'

    mysql -uroot -p'Qianfeng@123' -e 'insert into testdb.test2 values (1)'

    mysql -uroot -p'Qianfeng@123' -e 'select * from testdb.test2'

    innobackupex --user=root --password='Qianfeng@123' /xtrabackup/

    ll /xreabackup/

    周二

    date 01110000

    mysql -uroot -p'Qianfeng@123' -e 'insert into testdb.test2 values (2)'

    mysql -uroot -p'Qianfeng@123' -e 'select * from testdb.test2'

    innobackupex --user=root --password='Qianfeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2022-01-10_00-02-46  基于0110做增量备份

    ll /xreabackup/

    周三

    date 01120000

    mysql -uroot -p'Qianfeng@123' -e 'insert into testdb.test2 values (3)'

    mysql -uroot -p'Qianfeng@123' -e 'select * from testdb.test2'

    innobackupex --user=root --password='Qianfeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2022-01-10_00-02-46  依旧基于0110做增量备份,这样相对于完全备份数据,周二增量数据依旧是差异数据

    周四亦是如此

    

——————————

    差异恢复流程

      停止数据库

      systemctl stop mysqld

      清理环境

      rm -rf /var/lib/mysql/*

      重演回滚redo log (完全备份,某次差异)

      innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_00-02-46

      innobackupex --apply-log --redo-only /xtrabackup/2022-01-10_00-02-46 --incremental-dir=/xtrabackup/2022-01-12_00-04-05

      innobackupex --copy-back /xtrabackup/2022-01-10_00-02-46

      ls /var/lib/mysql/

      chown -R mysql.mysql /var/lib/mysql/*

      ll /var/lib/mysql/

      systemctl start mysqld

      

 

posted @   真渡  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示