zoukankan      html  css  js  c++  java
  • MYSQLDUMP备份

    MYSQLDUMP备份工具

    /* 三种格式 */
    mysqldump [OPTIONS] database [tables]
    mysqldump [OPTIONS] –B DB1 [DB2 DB3...]
    mysqldump [OPTIONS] –A [OPTIONS]
    
    
    -A, --all-databases #备份所有数据库,含create database
    -B, --databases db_name… #指定备份的数据库,包括create database语句
    -E, --events:#备份相关的所有event scheduler
    -R, --routines:#备份所有存储过程和自定义函数
    --triggers:#备份表相关触发器,默认启用,用--skip-triggers,不备份触发器
    --default-character-set=utf8 #指定字符集
    --master-data[=#]: #此选项须启用二进制日志
    #1:所备份的数据之前加一条记录为CHANGE MASTER TO语句,非注释,不指定#,默认为1
    #2:记录为注释的CHANGE MASTER TO语句
    #此选项会自动关闭--lock-tables功能,自动打开-x | --lock-all-tables功能(除非开启--
    single-transaction)
    -F, --flush-logs #备份前滚动日志,锁定表完成后,执行flush logs命令,生成新的二进制日志文
    件,配合-A 或 -B 选项时,会导致刷新多次数据库。建议在同一时刻执行转储和日志刷新,可通过和--
    single-transaction或-x,--master-data 一起使用实现,此时只刷新一次二进制日志
    --compact #去掉注释,适合调试,生产不使用
    -d, --no-data #只备份表结构
    -t, --no-create-info #只备份数据,不备份create table
    -n,--no-create-db #不备份create database,可被-A或-B覆盖
    --flush-privileges #备份mysql或相关时需要使用
    -f, --force #忽略SQL错误,继续执行
    范例:分库备份并压缩
    范例:利用二进制日志,还原数据库最新状态
    --hex-blob #使用十六进制符号转储二进制列,当有包括BINARY, VARBINARY,BLOB,BIT的数
    据类型的列时使用,避免乱码
    -q, --quick #不缓存查询,直接输出,加快备份速度
    
    

    完全备份+还原

    • 默认开启二进制日志,最好不在一台主机上
    ###服务端配置文件
    [mysqld]
    log-bin=/data/log
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock
    ...
    ###客户端配置文件
    vim /etc/my.cnf.d/mysql-clients.cnf 
    [mysql]
    socket=/data/mysql/mysql.sock
    [mysqldump]
    socket=/data/mysql/mysql.sock
    ...
    
    
    • 创建完全备份
    ### 在data/backup下创建备份文件并压缩
    mysqldump -A --master-data=2 | gzip > /data/backups/bakup_`date +%F%T`.sql.gz
    ls
    bakup_2019-11-2810:34:19.sql.gz
    
    • 数据库发生操作
    use ali /* 使用库 */
    insert ali_ymp(stu_name) values('Justin'); /* 添加一个员工Justin */
    
    
    • 出现事故:某云来把库删了
    /* 删除整个库 */
    drop database ali 
    
    
    • 先恢复到完全备份状态
    # 解压备份文件
    cd /data/backups
    gzip -d bakup_2019-11-2810:34:19.sql.gz bakup_2019-11-2810:34:19.sql 
    
    ls
    bakup_2019-11-2810:34:19.sql
    
    # 找到完全备份位置
    grep '-- CHANGE MASTER TO' /data/backups/bakup_2019-11-2810:34:19.sql
    MASTER_LOG_FILE='localhost-bin.000004', MASTER_LOG_POS=508;
    #备份从完全备份后的二进制日志
    mysqlbinlog --start-position=508 /data/log/localhost-bin.000004 > /log/backs.sql
    
    vim backs.sql 
    # 找到删除语句并删除
    drop database stund
    
    
    • 进入数据库还原备份
    
    /*关闭二进制日志的选项*/
    
    set sql_log_bin=0;
    
    /*回到完全备份状态*/
    
    source  /data/backups/bakup_2019-11-2810:34:19.sql;
    /*回到删库之前*/
    source /data/log/backs.sql;
    /*重新开启二进制日志的选项*/
    
    set sql_log_bin=0;
    
    
  • 相关阅读:
    个人工作总结2
    个人工作总结1
    各种颜色代码
    第七周学习进度
    安卓的SlidingMenu配置
    第六周学习进度
    ecshop 首页调用指定分类下的销售排行
    EcShop首页显示特定分类的精品新品热销特价等推荐商品
    ecshop调用指定分类热销-新品-精品
    ecshop transport.js 和 jquery 冲突解决办法
  • 原文地址:https://www.cnblogs.com/Justin0717/p/11953040.html
Copyright © 2011-2022 走看看