mysqldump的备份与恢复

MySQL(05)

备份策略:
    完全+差异+binlog(时间点还原)
    完全+增量+binlog

    备份,多久一次?
        数据变化量;
        可用的备份存储空间;


    mysqldump:
        逻辑备份、完全备份、部分备份;
        二次封装工具:
            mydumper
            phpMyAdmin

                    Usage: 
            mysqldump [OPTIONS] database [tables]
            OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
            OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

        MyISAM存储引擎:支持温备,备份时要锁定表;
            -x, --lock-all-tables:锁定所有库的所有表,读锁;
            -l, --lock-tables:锁定指定库所有表;

        InnoDB存储引擎:支持温备和热备;
            --single-transaction:创建一个事务,基于此快照执行备份;

        其它选项:
            -R, --routines:存储过程和存储函数;
            --triggers 
            -E, --events      

             --master-data[=#]
                1:记录为CHANGE MASTER TO语句,此语句不被注释;
                2:记录为CHANGE MASTER TO语句,此语句被注释;

            --flush-logs:锁定表完成后,即进行日志刷新操作;

    作业:备份脚本

mysqldump备份恢复示例

从lftp上mget一个数据库脚本hellodb.sql,导入到数据库中,删除导入数据库的脚本,如何自己备份。

mysqldump的备份与恢复

目前没有create databases语句,因为我们备份时直接指明了hellodb,这表式的意思是备份hellodb的所有表,而不是备份hellodb数据库的。

如果要备份数据库,要使用下面这条语句

mysqldump的备份与恢复

less hellodb.sql.2 查看一下

mysqldump的备份与恢复

这里就有create databases语句,说明整个数据库被备份下来了 –databses可以备份多个库,这里只指明了hellodb一个库

如果想备份所有库,则使用下面这条语句

mysqldump的备份与恢复

注意:数据太大的不适用mysqldump来备份 如果我们只备份一个库,这个库里面的所有表都是InnoDB存储引擎的话,可以使用热备,–single-transaction。MyISAM存储引擎的话,只能支持温备了。

备份时,备份策略:完全+增量+binlog,假如现在做一次完全备份,下次还没增量数据库就挂了,所有只能用完全+binlog来恢复,完全备份那一个,数据恢复回来了,binlog从哪一刻开始放,binlog是各种写语句,应该从备份那一刻之后的内容,把备份开始之后所发生的所有修改语句从放一遍。 如何知道什么时候开始备份:自动备份那一刻必须要记录下来,binlog正在处在哪个文件哪个privi,

例如

mysqldump的备份与恢复

这时候会报错,因为服务器上没启用bin-log,这时需要修改my.cnf配置文件,启动二进制方式

mysqldump的备份与恢复

mysqldump的备份与恢复

这时候就能成功备份了。

注意:将来备份不要去覆盖上一次备份,备份文件例如helldb。sql-20140101

这时候备份文件就多了一条语句

mysqldump的备份与恢复

意思是二进制文件处在master-log.0000001,位置是245,所以下次重放时就基于这个位置进行重放。

如何记录备份那一刻,二进制文件记录位置

备份文件要异地另存,可以写脚本进行自动化进行。备份文件要保留时间戳。

先连入mysql服务器,做一些修改操作

mysqldump的备份与恢复

mysqldump的备份与恢复

这种修改结果通过刚才的备份恢复不行,假如数据库删除,通过备份恢复不过来。这时候需要借助二进制文件进行。

mysqldump的备份与恢复

现在恢复

第一准备好备份,第二准备好二进制日志。

二进制文件都在/var/log/mysql下

mysqldump的备份与恢复

这里上次备份就只有一个二进制文件,从第一个位置开始的

使用mysqlbinlog命令

mysqldump的备份与恢复

这里会有一个问题,最后一个drop database hellodb,刚放上来,又删除掉了,不要读这个语句。

mysqldump的备份与恢复

从这里开始定义

mysqldump的备份与恢复

这时,drop database hellodb这台语句就不会出现了。

把截取后的二进制文件内容保存在一个脚本中

[root@ zhoushuang2  ~]# mysqlbinlog –stop-position=785  /var/lib/mysql/master-log.000001 > /tmp/mylog.sql

注意:这些都是脚本,通过读进行装载

第二个:hellodb.sql.2这个文件,先放到tmp下

[root@ zhoushuang2  ~]# cp hellodb.sql.2 /tmp/hellodb.sql

基于lvm2的备份:

    前提:数据目录位于逻辑卷,包含了数据文件和事务日志;

    (1) 请求锁定所有表;
        mysql> FLUSH TABLES WITH READ LOCK;

    (2) 记录二进制文件事件位置;
        mysql> FLUSH LOGS;
        mysql> SHOW MASTER STATUS;

        mysql  -e  'SHOW MASTER STATUS;' >> /PATH/TO/SOME_POS_FILE

    (3) 创建快照卷
        lvcreate  -L # -s -p r - SNAM-NAME /dev/VG-NAME/LV-NAME 

    (4) 释放锁
        mysql> UNLOCK TABLES

    (5) 挂载快照卷,并执行备份,备份完成后删除快照卷;

    (6) 周期性备份二进制日志;

接下来连接到mysql上开始恢复

1、先把二进制功能给关掉

mysqldump的备份与恢复

2、进行恢复

mysqldump的备份与恢复

这时恢复的是初始数据,后面改的没有

mysqldump的备份与恢复

再次执行操作

mysqldump的备份与恢复

再次执行发现数据都恢复了

mysqldump的备份与恢复

再把二进制功能开启

mysqldump的备份与恢复

这就是完整的备份和恢复过程

每次备份完,给自己发一封邮件

原创文章,作者:15152188070,如若转载,请注明出处:http://www.178linux.com/60155

(0)
1515218807015152188070
上一篇 2016-11-20
下一篇 2016-11-20

相关推荐

  • Find命令的使用

    Find命令的基本用法 在Linux系统中find命令是一个强大文件查找类工具,它支持根据文件名,权限,文件大小,访问以及修改时间查找,使用方法如下: find [option] [查找起始路径] [查找条件] [处理动作] 起始路径:指定查找文件或目录的路径,默认为当前目录 查找条件:可根据文件名,权限,文件大小以及从属关系查找文件 处理动作:动查找到的文…

    Linux干货 2017-08-28
  • 编译内核

    先把下载的内核解压展开归档 tar -xvf linux-4.12.tar.xz   把linux系统中的/boot/config-3.10.0-514.el7.x86_64 copy到归档文件中并命名为.config   cp config-3.10.0-514.el7.x86_64 /app/linux-4.12/.conf…

    2017-07-12
  • Python基础篇之过程型程序设计

    一、Python过程型程序设计 面向过程 以指令为中心,由指令处理数据 如何组织代码解码问题 面向对象 以数据为中心,所有的处理代码都围绕数据展开 如何设计数据结构组织数据,并提供对此类数据所允许处理操作 简单方法: 1)、编译安装新版本至某特定路径 # yum install readline-devel # tar xf Python-2.7.6.tar…

    2018-01-11
  • 磁盘管理(SWAP、dd、quota、RAID、LVM)

    2016-08-26: 授课内容: 1、SWAP交换分区的创建 2、dd命令的使用 3、设定文件系统配额 4、设定和管理软RAID设备 5、配置逻辑卷、逻辑卷快照 1、swap (1)SWAP分区:模拟内存,当物理内存不足时,进程需要内存资源是,内存会把一部分没有在用的进程分页挪到硬盘的模拟内存中,腾出空间被现在需要使用内存资源的进程 即其作用是可以允许内存…

    Linux干货 2016-09-01
  • 第十周作业

    第十周作业   1、CentOS系统启动流程: 1.加电自检:由bios去检测各硬件是否存在且是否正常运行,然后进行硬件初始化 2.选择启动顺序,加载mbr:根据bios设置的设备启动顺序,找到第一个安装有bootloader的设备进行启动,bootloader去识别加载操作系统中的核心文件,并提交到内存中运行,进而来启动相对应的操作系统 由于bootloa…

    Linux干货 2017-11-13
  • linux基础学习-第九天(shell基础)

    2016-08-10 授课内容: shell脚本基础: 变量 运算 bash测试(数字测试、字符测试、文件测试、组合测试) read命令 变量作用: 1、数据存储格式 2、参与的运算 3、表示的数据范围 变量类型: 1、本地变量 2、环境(全局)变量 3、特殊变量     驼峰命名变量:每个单词一个字母大写 本地变量:…

    Linux干货 2016-08-11