zoukankan      html  css  js  c++  java
  • mysql备份和恢复 增量备份

    备份:

    语法:msyqldump -u 用户名 -p 密码  数据库 表名 > 备份的文件名

    --all-databases , -A

    导出全部数据库。

    备份多个表:

    语法:msyqldump -u 用户名 -p 密码  数据库 表名1 表名2 > 备份的文件名

    mysqldump -uroot -p123456 oldboy course1 course2 > /opt/two_tables.sql

     

    -B参数:

    导出多个数据库。参数后面所有名字参量都被看作数据库名。

    备份msyql所有库和表 –A  -B

    Mysqldump –uroot –p’oldboy123’ –A  –B –events|gzip > /opt/a.sql.gz

    备份所有库
    mysqldump -uroot -poldboy -S /data/3306/mysql.sock -F -B -A|gzip > /server/backup/mysqlbak_$(date+%F).sql.gz
    备份一个库
    mysqldump -uroot -poldboy -S /data/3306/mysql.sock -F -B oldboy|gzip > /server/backup/mysqlbak_$(date+%F).sql.gz

     其他参数说明:

         

      

    生产场景:增加binlog日志文件和对应位置点,锁表

     恢复:

    2,

    gzip -d mysql-bak.sql.gz 
    mysql -uroot -p'oldboy123'  库名(备份的时候没有指定-B 需要创建库加库名)oldboy  < /opt/mysql_bak.sql
    

      

    增量备份:

    优点:恢复时间短,维护成本低

    缺点:占用空间多,占用系统资源多,经常锁表影响用户体验

    #全备 并刷新binlog 记录binlog位置 --master-data=2
    mysqldump -uroot -p123456 -S /data/3306/mysql.sock -F -B --master-data=2 oldboy|gzip > /opt/mysqlbak.sql.gz

    #此时binlog日志
    -rw-rw----. 1 mysql mysql 1087 6月 17 2018 mysql-bin.000013
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000014
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000015
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000016
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000017
    -rw-rw----. 1 mysql mysql 150 6月 17 11:54 mysql-bin.000018
    -rw-rw----. 1 mysql mysql 150 6月 17 12:03 mysql-bin.000019


    #刷新binlog 重新生成一个新的binlog (这样新增的或者修改的数据就到了新的binlog中 ,方便后面查找binlog)
    mysqladmin -uroot -p123456 -S /data/3306/mysql.sock flush-logs

    #此时binlog日志
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000014
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000015
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000016
    -rw-rw----. 1 mysql mysql 150 6月 17 2018 mysql-bin.000017
    -rw-rw----. 1 mysql mysql 150 6月 17 11:54 mysql-bin.000018
    -rw-rw----. 1 mysql mysql 150 6月 17 12:03 mysql-bin.000019
    -rw-rw----. 1 mysql mysql 107 6月 17 12:03 mysql-bin.000020


    状况一:oldboy库此时不小心被删除了怎么恢复

    停止数据库的写入 flush tables with read lock;
    然后查看备份文件的binlog位置
    [root@localhost opt]# gzip -d /opt/mysqlbak.sql.gz
    [root@localhost opt]# grep -i 'CHANGE' ./mysqlbak.sql
    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000019', MASTER_LOG_POS=107;

    然后把数据库mysql-bin.000019后面的binlon拷贝到其它地方
    cp /data/3306/mysql-bin.000024 /opt/

    [root@localhost opt]# ll
    总用量 8
    -rw-r--r--. 1 root root 2219 6月 17 15:33 mysqlbak.sql
    -rw-r-----. 1 root root 910 6月 17 15:39 mysql-bin.000024

    解析sql,把binlog日志写入到文件中 查找并删除sql文件的【DROP DATABASE `oldboy`】 保存文件
    mysqlbinlog -d oldboy /opt/mysql-bin.000024 > /opt/mysql-bin.000024.sql


    恢复全被到数据备份到数据库中
    mysql -uroot -p123456 -S /data/3306/mysql.sock < /opt/mysqlbak.sql
    恢复增量备份到数据
    mysql -uroot -p123456 -S /data/3306/mysql.sock oldboy < /opt/mysql-bin.000024.sql

  • 相关阅读:
    在tableViewCell上添加button导致按钮没有点击效果和不能滑动
    jquery添加自定义校验
    json转化对特殊字段的处理
    模仿spring authentication-provider 自己写登录人管理
    hibernate自动建表
    java 上传文件
    java实现赋值excel模板,并在新文件中写入数据,并且下载
    实现图片预览
    ajax+jquery实现父页面弹出子页面,选择提交后给父页面传值
    上传附件,压缩并加密
  • 原文地址:https://www.cnblogs.com/sunlong88/p/9129994.html
Copyright © 2011-2022 走看看