zoukankan      html  css  js  c++  java
  • 数据库备份

    数据库备份

    逻辑备份和物理备份
    逻辑备份结果为SQL语句 适合于所有存储引擎 mysqldump
    物理备份对数据库目录的拷贝 对于内存表之备份结构

    全量备份 对整个数据库的完整备份
    增量备份 上次全量或者增量备份基础上 对于更改数据进行备份 XtraBack

    使用mysqldump进行备份

    常用语法
    mysqldump [OPTIONS] database [tables]
    mysqldump [OPTIONS] --database [OPTIONS] DB1 [DB2..]
    mysqldump [OPTIONS] --all-database [OPTIONS]

    mysqldump常用参数
    -u,--user=name
    -p,--password[=name]
    SELECT,RELOAD,LOCK TABLES,REPLICATION CLIENT,SHOW VIEW,PROCESS

    --single-transaction //对innodb有效 数据库一致性
    -l,--lock-tables //依次锁定 某一个db所有表数据一致性
    -x,--lock-all-table //所有数据备份时候只读
    --master-data=[1/2]

    存在触发器 存储过程 调度事件要加参数
    -R,--routines
    --triggers
    -E,--events

    --hex-blob //对数据中blog16进制保存
    -tab=path //存储表结构加数据
    -w,--where='过滤条件'
    Where只支持单表

    mysqldump备份实例

    • create user 'backup'@'localhost' identified by '123456';

    • grant select,reload,lock tables,replication client,show view,event,process on . to 'backup'@'localhost'; //给用户权限

    • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events szyqbbs > szyqbbsdb.sql

    • grep "CREATE TABLE" szyqbbsdb.sql //查看表

    • 备份单个数据表

    • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events szyqbbs bbs_user_info > szyqbbsdb_userinfo.sql

    • 备份所有数据库

    • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events --all-databases > alldata.sql

    • 指定目录 tab 会拆分成.sql .txt

    • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events --tab="/tmp/szyqbbsdb" szyqbbs > szyqbbsdb.sql

    • chown mysql:mysql szyqbbsdb //改变目录用户为mysql用户 这样mysql用户才能写入数据

    • mysqldump -ubackup -p123456 --master-data=2 --single-transaction --routines --triggers --events --where "cid>100 and cid<200" szyqbbs bbs_card> szyqbbsdb_card_100_200.sql

    备份脚本

    #!/bin/bash
    ###############Basic parameters##########################
    DAY=`date +%Y%m%d`
    Environment=$(/sbin/ifconfig | grep "inet addr" | head -1 |grep -v "127.0.0.1" | awk '{print $2;}' | awk -F':' '{print $2;}')
    USER="backup"
    PASSWD="123456"
    HostPort="3306"
    MYSQLBASE="/home/mysql/"
    DATADIR="/home/www/data/db_backup/${DAY}"
    MYSQL=`/usr/bin/which mysql`
    MYSQLDUMP=`/usr/bin/which mysqldump`
    mkdir -p ${DATADIR}
    
    Dump(){
     ${MYSQLDUMP} --master-data=2 --single-transaction  --routines --triggers --events -u${USER} -p${PASSWD} -P${HostPort} ${database}  > ${DATADIR}/${Environment}-${database}.sql
     cd ${DATADIR}
     gzip ${Environment}-${database}.sql
    }
    
    for db in `echo "SELECT schema_name FROM information_schema.schemata where schema_name not in ('information_schema','sys','performance_schema','abgent_web_20')" | ${MYSQL} -u${USER} -p${PASSWD} --skip-column-names`
    do
       database=${db}
       Dump
    done
    

    1.参数意义
    DAY 当前备份日期
    Environment 主机IP
    MYSQLBASE 备份目录
    DATADIR 当前备份子目录
    for db in //排除一些数据库如information_schema

    如何恢复mysqldump备份的数据

    • mysql -u -p dbname < backup.sql
    • mysql> source /tmp/backup.sql
    • mysql -uroot -pweizai -e"create database bak_szyqbbsdb"

    用备份数据还原删除的数据

    INSERT TO mc_orderdb.order_master (///字段////)
    SELECT a.* FROM bak_orderdb.order_master a
    LEFT JOIN mc_orderdb.order_master b on a.order_id=b.order_id
    WHERE b.order_id IS NULL;
    //静态数据可以 动态不可以

    恢复误删除数据

    基于时间点的步骤
    mysqlbin 结合数据库日志 position

    基于时间点的恢复
    1.具有指定时间点前的mysqldump的全备
    2.具有全备到指定时间点的mysql二进制文件

    二进制文件备份

    使用xtrabackup全备

    innobackupex --user=root --password=pwd
    --parallel=2 /home/db_backup

  • 相关阅读:
    第三篇:python函数
    第二篇:数据类型
    第一篇:初识python
    PyTorch教程之Autograd
    PyTorch教程之Tensors
    如何解决Python.h:No such file or directory
    如何解决conda install:command not found问题
    Linux 安装Anaconda 4.4.0
    Linux安装pytorch的具体过程以及其中出现问题的解决办法
    Writing Science 7.10 (The Opening and The Funnel)
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/7865267.html
Copyright © 2011-2022 走看看