数据库的备份与恢复 mysqldump+binlog方式

简介:

实验说明:

(1)mysqldump:逻辑备份工具,适用于所有存储引擎,可用于温备,能实现完全备份,部分备份;对InnoDB存储引擎支持热备;

        binlog:二进制日志

        二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等等。所以说通过二进制日志可以查询mysql数据库中进行了哪些变化。一般大小体积上限为1G


(2)本次实验使用备份方式:完全备份+增量备份。

(3)musqldump命令的语法格式

mysqldump [OPTIONS] database [tables]备份单个库,或库指定的一个或多个表

mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]备份一个或多个库

mysqldump [OPTIONS] --all-databases [OPTIONS]备份所有库

    其他选项

        -x, --lock-all-tables:锁定所有表

        -l, --lock-tables:锁定备份的表

        --single-transaction启动一个大的单一事务实现备份

        -C, --compress压缩传输

        -E, --events备份指定库的事件调度器

        -R, --routines备份存储过程和存储函数

        --triggers备份触发器

        --master-data={0|1|2}

            0不记录

            1记录CHANGE MASTER TO语句;此语句未被注释

            2记录为注释语句

            -F,--flush-logs:锁定表之后执行flush logs命令


1、安装数据库

    centos6:  yum  install mysql

    centos7:  yum  install mariadb

2、开启二进制日志

      在配置文件修改

        vim  /etc/my.cnf

        [mysqld]   

         log-bin=bin-log  添加改行,采用相对路径,真实存储路径为/var/lib/mysql/下

        481da544a250f579ff0bf17d31805e62.png

3、启动服务

        systemctl start mariadb

        ls /var/lib/mysql

        会看到bin-log.000001 文件

        次重启mysql服务或运行mysql> flush logs;都会生成一个新的二进制日志文件,这些日志文件的number会不断地递增。除了生成上述的文件外还会生成一个为filename.index(bin-log.index)的文件。这个文件中存储所有二进制日志文件的清单又称为二进制文件的索引。

4、登入数据库并创建需要备份的数据库

        mysql -uroot -p

   (1)建立数据库

        create database mariadb  

   (2)建立表

        use mariadb

        create table table1(id int ,name char(20));

        show tables;查看是否创建表成功

   (3)插入数据

           insert into table1  values (1,'one');

            insert into table1  values (2,'two');

            insert into table1  values (3,'three');

           insert into table1  values (4,'for'); 

            查看是否插入数据到表中

            select * from table1

            a508425fbd5bd6db709a162fc9076849.png

5、进行完整备份

    (1)创建要备份的目录

            mkdir /backup

      (2)备份

       mysqldump --databases mariadb --lock-all-tables --lock-tables  --flush-log --master-data=2 >/backup/`date +%F-%T`-all.sql    

      (3) 查看是否备份成功

            ls  /backup

            a772f5c235e81b9afc233ee6408673af.png

6、向表中插入数据,进行增量备份

     (1)查看 当前使用的二进制文件及所处位置

            show master status; 

        0b4f387dad873c41328ae04f7278ff24.png

                     

    (2)插入数据

        insert into table1 values (5,five);

        cb96f34964b9e514c6e6dcfd22093ee8.png

7、增量备份

    (1)查看二进制日志

        mysqlbinlog /var/lib/mysql/bin-log.000002

        选择备份的位置

        b11dc54a36c9bf09e8919c5c0ed3c7bf.png

    插入数据前,即完全备份的位置在245

    插入数据后,位置在418

   说明:整个事务一般以BEGIN开头到COMMIT结束,注意一定要看清,很容易出错。

(2)进行增量备份

        mysqlbinlog --start-position=245 --stop-position=418 /var/lib/mysql/bin-log.000002 > /backup/`date +%F-%T`-add.sql

    ls /backup

    894853055f5881c40e350a7f8b198851.png

 8、继续插入数据,在没备份的情况下删除数据库,模拟误操作

     inset into table1 values (6,'six');

     drop  database mariadb;

    1273c7d82492f36108936e4db6891422.png

9、不要慌张

10、备份未备份的操作

    由于最后我们没有备份就删除了数据库,所以我们首先需要保护最后的二进制日志,查看删除操作之前的position值

    mysqlbinlog /var/lib/mysql/bin-log.000002

    9b5a47b7d60248f25761852c41001eef.png

   所以备份位置从结束位置在643

     mysqlbinlog  --start-position=445  --stop-position=643 /var/lib/mysql/bin-log.000002 > /backup/`date +%F-%T`-add.sql

    一定不要备份误删除的位置,不然恢复后,又被删除,就恢复不了。

11、恢复数据库

    mysql < /backup/2017-11-16-14\:24\:31-all.sql 先恢复完全备份

    mysql < /backup/2017-11-16-14\:53\:33-add.sql  恢复第一个增量备份

    mysql < /backup/2017-11-16-15\:13\:23-add.sql  恢复最后备份

12、登录数据库查看

        5abbfad9f688805b36801aa76a584fc1.png


        d1edfed9c9d45d1b802f3d53a91c8058.png

   数据恢复成功。数据位置为完全正确。



本文转自 hawapple 51CTO博客,原文链接:http://blog.51cto.com/guanm/1982422

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
6月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
1109 1
|
10月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课5 在线备份
本文介绍了如何在PolarDB RAC一写多读集群中进行在线备份,特别针对共享存储模式。通过使用`polar_basebackup`工具,可以将实例的本地数据和共享数据备份到本地盘中。实验环境依赖于Docker容器中用loop设备模拟的共享存储。
303 1
|
8月前
|
存储 关系型数据库 MySQL
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
214 15
|
9月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
12月前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
830 2
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
743 3
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
372 3
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
197 0
|
3月前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
138 6
|
4月前
|
存储 SQL 关系型数据库
MySQL中binlog、redolog与undolog的不同之处解析
每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.
240 9