精华内容
下载资源
问答
  • 生产环境备份
    千次阅读
    2022-03-31 17:56:43

    前情提要

    互联网时代,数据库是一个应用服务的心脏,不管应用体量如何都应做好数据库的备份工作,这篇文章主要实现的是利用 Mysql 自带命令 mysqldump 定时备份数据库的功能。

    编写一个备份配置(backup.conf)

    [client]
    host = 127.0.0.1
    port = 3306
    user = root
    password = 123456
    
    [other]
    # the database names to backup, separated by comma
    # 待备份的数据库名称,多个用英文逗号分隔
    db_names = db_test,db_test2
    
    # backup files location
    # 备份文件保存的位置
    backup_dir = /home/mysqlbak/sql/
    
    # backup files reserved days
    # 备份文件保留的天数
    backup_days = 7
    
    # mysqldump command location
    # mysqldump 命令的位置
    mysqldump_cmd = /usr/bin/mysqldump
    

    编写备份 Shell 脚本(mysqlbak.sh)

    #!/bin/bash
    
    CONFIG_FILE_NAME=backup.conf
    SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
    CONFIG_FILE=$SCRIPT_DIR/$CONFIG_FILE_NAME
    
    DB_NAMES=$(grep db_names $CONFIG_FILE | cut -d= -f2)
    DB_NAMES_ARR=(${DB_NAMES//,/ })
    BACKUP_DIR=$(grep backup_dir $CONFIG_FILE | cut -d= -f2)
    BACKUP_DAYS=$(echo $(grep backup_days $CONFIG_FILE | cut -d= -f2))
    MYSQLDUMP_CMD=$(grep mysqldump_cmd $CONFIG_FILE | cut -d= -f2)
    
    DATE=`date +%Y%m%d`
    TIME=`date +%H%M%S`
    
    echo "[$DATE $TIME]"
    echo "Backuping ..."
    for DB_NAME in ${DB_NAMES_ARR[@]}
    do
        TODAY_DIR=$BACKUP_DIR/$DATE
        if [ ! -d $TODAY_DIR ]; then
            mkdir -p $TODAY_DIR
        fi
    
        echo -n "  BACKUP $DB_NAME ... "
        $MYSQLDUMP_CMD --defaults-extra-file=$CONFIG_FILE --triggers --routines --events $DB_NAME | gzip > $TODAY_DIR/$DB_NAME.$TIME.sql.gz
        echo "[OK]"
    done
    echo "Backup End!"
    
    # delete the backup files before n days
    # 删除 n 天前的备份数据
    DELETED_BACKUP_DIRS=$(find $BACKUP_DIR -type d -ctime +$BACKUP_DAYS)
    echo "Deleting old data ..."
    for DELETED_DIR in $DELETED_BACKUP_DIRS
    do
        rm -rf $DELETED_DIR > /dev/null 2>&1
        echo "  $DELETED_DIR ... [DONE]"
    done
    echo "Delete End!"
    

    设置 Crontab

    crontab -e
    
    # 增加以下命令将在每天凌晨1点执行一次
    0 1 * * * /bin/bash /home/mysqlbak/mysqlbak.sh >> /home/mysqlbak/crontab.log
    

    结论

    编写一个数据库备份脚本并不是很难,只需要掌握基础的 shell 语法即可,该脚本备份为可配置,比较灵活。备份的 Sql 文件也是经过了 gzip 压缩,解压缩是使用:gzip -d xxxx 即可获取备份的 Sql 文件。

    该脚本放在了我的 Github,需要的可以随时 clone 使用,点击访问

    更多相关内容
  • 生产环境-数据库备份方案

    千次阅读 2020-06-27 16:10:08
    例如:每小时做一次增量备份,热点数据库每天做一次全量备份,冷数据库每周做一次备份。以下所涉及的操作系统为 centos7 。 二、全量备份 /usr/bin/mysqldump -uroot -proot --lock-all-tables --flush-logs hzero-...

    一、引言

    在产品上线之后,我们的数据是相当重要的,容不得半点闪失,应该做好万全的准备,搞不好哪一天被黑客入侵或者恶意删除,那就崩溃了。所以要对我们的线上数据库定时做全量备份与增量备份。例如:每小时做一次增量备份,热点数据库每天做一次全量备份,冷数据库每周做一次备份。以下所涉及的操作系统为 centos7 。

    二、全量备份

    /usr/bin/mysqldump -uroot -proot  --lock-all-tables --flush-logs hzero-customs > /home/backup.sql
    

    如上一段代码所示,其功能是将hzero-customs数据库全量备份。其中 MySQL 用户名为:root 密码为:root备份的文件路径为:/home (当然这个路径也是可以按照个人意愿修改的。)备份的文件名为:backup.sql 参数 —flush-logs:使用一个新的日志文件来记录接下来的日志参数 —lock-all-tables:锁定所有数据库

    1.备份Shell脚本

    #!/bin/bash
    #获取当前时间
    date_simple=$(date "+%Y%m%d")
    
    date_now=$(date "+%Y%m%d-%H%M%S")
    backUpFolder=/home/db/backup/mysql
    username="root"
    password="root"
    db_name="bjja_mdm"
    #定义备份文件名
    fileName="${db_name}_${date_now}.sql"
    #定义备份文件目录
    backUpFileName="${backUpFolder}/${date_simple}/${fileName}"
    mkdir "${backUpFolder}/${date_simple}"
    echo "starting backup mysql ${db_name} at ${date_now}."
    docker exec -it mysqlmaster /usr/bin/mysqldump -u${username} -p${password}  --lock-all-tables --flush-logs ${db_name} > ${backUpFileName}
    #进入到备份文件目录
    cd ${backUpFolder}/${date_simple}
    #压缩备份文件
    tar zcvf ${fileName}.tar.gz ${fileName}
    rm -rf ${fileName}
    
    # use nodejs to upload backup file other place
    #NODE_ENV=$backUpFolder@$backUpFileName node /home/tasks/upload.js
    date_end=$(date "+%Y%m%d-%H%M%S")
    echo "finish backup mysql database ${db_name} at ${date_end}."
    
    date_now=$(date "+%Y%m%d-%H%M%S")
    backUpFolder=/home/db/backup/mysql
    username="root"
    password="root"
    db_name="hzero_customs"
    #定义备份文件名
    fileName="${db_name}_${date_now}.sql"
    #定义备份文件目录
    backUpFileName="${backUpFolder}/${date_simple}/${fileName}"
    echo "starting backup mysql ${db_name} at ${date_now}."
    docker exec -it mysqlmaster /usr/bin/mysqldump -u${username} -p${password}  --lock-all-tables --flush-logs ${db_name} > ${backUpFileName}
    #进入到备份文件目录
    cd ${backUpFolder}/${date_simple}
    #压缩备份文件
    tar zcvf ${fileName}.tar.gz ${fileName}
    rm -rf ${fileName}
    
    # use nodejs to upload backup file other place
    #NODE_ENV=$backUpFolder@$backUpFileName node /home/tasks/upload.js
    date_end=$(date "+%Y%m%d-%H%M%S")
    echo "finish backup mysql database ${db_name} at ${date_end}."
    
    date_now=$(date "+%Y%m%d-%H%M%S")
    backUpFolder=/home/db/backup/mysql
    username="root"
    password="root"
    db_name="hzero_platform"
    #定义备份文件名
    fileName="${db_name}_${date_now}.sql"
    #定义备份文件目录
    backUpFileName="${backUpFolder}/${date_simple}/${fileName}"
    echo "starting backup mysql ${db_name} at ${date_now}."
    docker exec -it mysqlmaster /usr/bin/mysqldump -u${username} -p${password}  --lock-all-tables --flush-logs ${db_name} > ${backUpFileName}
    #进入到备份文件目录
    cd ${backUpFolder}/${date_simple}
    #压缩备份文件
    tar zcvf ${fileName}.tar.gz ${fileName}
    rm -rf ${fileName}
    
    # use nodejs to upload backup file other place
    #NODE_ENV=$backUpFolder@$backUpFileName node /home/tasks/upload.js
    date_end=$(date "+%Y%m%d-%H%M%S")
    echo "finish backup mysql database ${db_name} at ${date_end}."
    

    2.恢复全量备份

    mysql -h localhost -uroot -proot < bakdup.sql
    

    或者

    mysql> source /path/backup/bakdup.sql
    

    在恢复全量备份之后,要将全量备份之后的增量备份也恢复回数据库中。

    3.定时备份

    输入如下命令,进入 crontab 定时任务编辑界面:

    crontab -e
    

    添加如下命令,其意思为:每分钟执行一次备份脚本:

    * * * * * sh /usr/your/path/mysqlBackup.sh
    

    每五分钟执行 :

    */5 * * * * sh /usr/your/path/mysqlBackup.sh
    

    每小时执行:

    0 * * * * sh /usr/your/path/mysqlBackup.sh
    

    每天执行:

    0 0 * * * sh /usr/your/path/mysqlBackup.sh
    

    每周执行:

    0 0 * * 0 sh /usr/your/path/mysqlBackup.sh
    

    每月执行:

    0 0 1 * * sh /usr/your/path/mysqlBackup.sh
    

    每年执行:

    0 0 1 1 * sh /usr/your/path/mysqlBackup.sh
    

    重启crontab

    service crond restart
    

    三、增量备份

    首先在进行增量备份之前需要查看一下配置文件,查看 log_bin 是否开启,因为要做增量备份首先要开启 log_bin 。首先,进入到 myslq 命令行,输入如下命令:

    show variables like '%log_bin%';
    

    如下命令所示,则为未开启

    mysql> show variables like '%log_bin%';
    +---------------------------------+-------+
    | Variable_name                   | Value |
    +---------------------------------+-------+
    | log_bin                         | OFF   |
    | log_bin_basename                |       |
    | log_bin_index                   |       |
    | log_bin_trust_function_creators | OFF   |
    | log_bin_use_v1_row_events       | OFF   |
    | sql_log_bin                     | ON    |
    +---------------------------------+-------+
    

    1.修改配置文件,开启日志记录

    编辑Mysql配置文件my.ini或者docker.cnf

    [mysqld]
    lower_case_table_names=1
    max_connections=2000
    server-id=1
    log-bin=master-bin  #只是读写,就只要主库配置即可.如果要做主从切换,那么主库和从库都需要开启.
    skip-host-cache
    skip-name-resolve
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    slave_skip_errors=1032
    character-set-server = utf8
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    [mysql]  
    default-character-set=utf8
    [client]  
    default-character-set=utf8
    

    修改之后,重启 mysql 服务,输入:

    show variables like '%log_bin%';
    

    状态如下

    mysql> show variables like '%log_bin%';
    +---------------------------------+--------------------------------+
    | Variable_name                   | Value                          |
    +---------------------------------+--------------------------------+
    | log_bin                         | ON                             |
    | log_bin_basename                | /var/lib/mysql/mysql-bin       |
    | log_bin_index                   | /var/lib/mysql/mysql-bin.index |
    | log_bin_trust_function_creators | OFF                            |
    | log_bin_use_v1_row_events       | OFF                            |
    | sql_log_bin                     | ON                             |
    +---------------------------------+--------------------------------+
    

    2.增量备份脚本文件

    #!/bin/bash
    #在使用之前,请提前创建以下各个目录
    backupDir=/home/db/backup/daily
    #增量备份时复制mysql-bin.00000*的目标目录,提前手动创建这个目录
    mysqlDir=/usr/local/mysql/data
    #mysql的数据目录
    logFile=/home/db/backup/bak.log
    BinFile=/usr/local/mysql/data/master-bin.index
    #mysql的index文件路径,放在数据目录下的
    
    docker exec -it mysqlmaster /usr/bin/mysqladmin -uroot -proot flush-logs
    #这个是用于产生新的mysql-bin.00000*文件
    # wc -l 统计行数
    # awk 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
    Counter=`wc -l $BinFile |awk '{print $1}'`
    NextNum=0
    #这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的
    for file in `cat $BinFile`
    do
        base=`basename $file`
        echo $base
        #basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./
        NextNum=`expr $NextNum + 1`
        if [ $NextNum -eq $Counter ]
        then
            echo $base skip! >> $logFile
        else
            dest=$backupDir/$base
            if(test -e $dest)
            #test -e用于检测目标文件是否存在,存在就写exist!到$logFile去
            then
                echo $base exist! >> $logFile
            else
                cp $mysqlDir/$base $backupDir
                echo $base copying >> $logFile
             fi
         fi
    done
    echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ! >> $logFile
    

    3.查看日志文件

    show binlog events in ‘mysql-bin.000003’;
    

    指定查询,从pos点406开始查询

    在这里插入图片描述

    指定查询,从pos点154开始查询,中间跳过2行,查询4条数据

    在这里插入图片描述

    4.恢复日志文件

    /usr/bin/mysqlbinlog  --start-position=573 --stop-position=718 --database=hello  /var/lib/mysql/mysql-bin.000006 | /usr/bin/mysql -uroot -p密码 -v hello
    

    按时间恢复

    /usr/bin/mysqlbinlog --start-datetime="2018-04-27 20:57:55" --stop-datetime="2018-04-27 20:58:18" --database=hello /var/lib/mysql/mysql-bin.000009 | /usr/bin/mysql -uroot -p8856769abcd -v hello 
    

    四、效果

    1.全量备份

    在这里插入图片描述

    在这里插入图片描述

    2.增量备份

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库 一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,你的工作...
  • 生产环境Mysql数据库备份脚本

    千次阅读 2016-09-04 23:34:44
    通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份。其中热备可以通过mysql replication主从复制进行实时备份,percona的xtrabackup以及mysql自带的...

    在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份。其中热备可以通过mysql replication主从复制进行实时备份,percona的xtrabackup以及mysql自带的mysqldump等,可以根据不同需求使用不同的备份方案。虽然在生产环境已经使用mysql replication主从复制,但是还需要在计划任务中添加运行shell脚本在夜间业务不繁忙时进行数据库的全量备份,以便在发生主从复制失败时,主从数据库大量数据不一致后的主从复制的重做,同时进行完全备份可以更加保证数据库的安全性。以下是我在生产环境中使用的一个全备脚本,它的基本功能:1.自动压缩备份mysql数据库.2.自动删除近10天前的备份文件

    3.删除时显示删除进度(可选).


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    #!/bin/bash
    #Author absolutely.xu@gmail.com
    MAXIMUM_BACKUP_FILES=10               #最大备份文件数
    BACKUP_FOLDERNAME= "database_backup"   #数据库备份文件的主目录
    DB_HOSTNAME= "localhost"               #mysql所在主机的主机名
    DB_USERNAME= "root"                    #mysql登录用户名
    DB_PASSWORD= "123456"                  #mysql登录密码
    DATABASES=(
                 "openfire"
                 "csp"                     #备份的数据库名
    )
    #=========
    echo  "Bash Database Backup Tool"
    #CURRENT_DATE=$(date +%F)
    CURRENT_DATE=$( date  +%F)               #定义当前日期为变量
    BACKUP_FOLDER= "${BACKUP_FOLDERNAME}_${CURRENT_DATE}"  #存放数据库备份文件的目录
    mkdir  $BACKUP_FOLDER  #创建数据库备份文件目录
    #统计需要被备份的数据库
    count=0
    while  "x${DATABASES[count]}"  !=  "x"  ]; do
         count=$(( count + 1 ))
    done
    echo  "[+] ${count} databases will be backuped..."
    #循环这个数据库名称列表然后逐个备份这些数据库
    for  DATABASE  in  ${DATABASES[@]}; do
         echo  "[+] Mysql-Dumping: ${DATABASE}"
         echo  -n  "   Began:  " ; echo  $( date )
         if  $(mysqldump -h ${DB_HOSTNAME} -u${DB_USERNAME} -p${DB_PASSWORD} ${DATABASE} >  "${BACKUP_FOLDER}/${DATABASE}.sql" ); then
             echo  "  Dumped successfully!"
         else
             echo  "  Failed dumping this database!"
         fi
             echo  -n  "   Finished: " ; echo  $( date )
    done
    echo
    echo  "[+] Packaging and compressing the backup folder..."
    tar  -cv ${BACKUP_FOLDER} |  bzip2  > ${BACKUP_FOLDER}. tar .bz2 &&  rm  -rf $BACKUP_FOLDER
    BACKUP_FILES_MADE=$( ls  -l ${BACKUP_FOLDERNAME}*. tar .bz2 |  wc  -l)
    BACKUP_FILES_MADE=$(( $BACKUP_FILES_MADE - 0 )) 
    #把已经完成的备份文件数的结果转换成整数数字
     
    echo
    echo  "[+] There are ${BACKUP_FILES_MADE} backup files actually."
    #判断如果已经完成的备份文件数比最大备份文件数要大,那么用已经备份的文件数减去最大备份文件数,打印要删除旧的备份文件
    if  [ $BACKUP_FILES_MADE -gt $MAXIMUM_BACKUP_FILES ]; then
         REMOVE_FILES=$(( $BACKUP_FILES_MADE - $MAXIMUM_BACKUP_FILES ))
    echo  "[+] Remove ${REMOVE_FILES} old backup files."
    #统计所有备份文件,把最新备份的文件存放在一个临时文件里,然后删除旧的文件,循环出临时文件的备份文件从临时目录里移到当前目录
         ALL_BACKUP_FILES=($( ls  -t ${BACKUP_FOLDERNAME}*. tar .bz2))
         SAFE_BACKUP_FILES=( "${ALL_BACKUP_FILES[@]:0:${MAXIMUM_BACKUP_FILES}}" )
    echo  "[+] Safeting the newest backup files and removing old files..."
         FOLDER_SAFETY= "_safety"
    if  [ ! -d $FOLDER_SAFETY ]
    then  mkdir  $FOLDER_SAFETY
                                                                                                                        
    fi
    for  FILE  in  ${SAFE_BACKUP_FILES[@]}; do
                                                                                                                          
         mv  -i  ${FILE}  ${FOLDER_SAFETY}
    done
         rm  -rf ${BACKUP_FOLDERNAME}*. tar .bz2
         mv   -i ${FOLDER_SAFETY}/* ./
         rm  -rf ${FOLDER_SAFETY}
    #以下显示备份的数据文件删除进度,一般脚本都是放在crontab里,所以我这里只是为了显示效果,可以不选择这个效果。
         
    CHAR= ''
    for  ((i=0;$i<=100;i+=2))
    do   printf  "Removing:[%-50s]%d%%\r"  $CHAR $i
             sleep  0.1
    CHAR= #$CHAR
    done
         echo
    fi

    第1天备份数据库功能测试如下

    wKioL1LgihrDG2aFAAGMEm4f4aY541.jpg


    10天以后,会自动保留最近10天的备份,10天以上会自动删除

    模拟测试脚本功能,创建31天的备份文件如下

    wKiom1Lgi1KD0mgyAAOJ-HIh3ks724.jpg

    每天计划任务定时执行脚本保留最近10天的备份

    wKioL1Lgi4HxUyfDAALxxhhOinA434.jpg

    展开全文
  • EBS oracle生产环境数据库备份脚本 电脑资料 整个下面分别保存成sh脚本就可以了 第一个是压缩备份备份速度超慢1000G基本要10个小时但是备份完会只用原来的1/8空间 [python] rman target / nocatalog log=/u1/data/...
  • 文章目录备份和恢复1. 备份和恢复概念2. 可能发生的故障类型3.传统的导出和导入程序 exp/imp (了解内容)3.1 传统的导出导入程序用于实施数据库的逻辑备份和恢复3.2 优点3.3 使用调用导出和导入实用程序的三种方法3.4...


    备份和恢复

    1. 备份和恢复概念

      备份是数据库的数据副本,可以保护数据在出现意外损失时最大限度的恢复;
      Oracle 数据库的备份包括两种类型:
        物理备份是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份,主要通过RMAN
        逻辑备份是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份

    2. 可能发生的故障类型

      语句故障:在执行 SQL 语句无效可导致语句故障。(不需要处理)
      用户进程故障:当用户程序出错而无法访问数据库时发生用户进程故障。导致用户进程故障的原因是异常断开连接或异常终止进程。(不需要处理,PMON进程自动处理)
      实例故障:当 ORACLE 的数据库实例由于硬件或软件问题而无法断续运行时,就会发生实例故障(重启数据库)
      介质故障:在数据库无法正确读取或写入某个数据库文件时,会发生介质故障


    3.传统的导出和导入程序 exp/imp (了解内容)

    3.1 传统的导出导入程序用于实施数据库的逻辑备份和恢复

      导出程序将数据库中的对象定义和数据备份到一个操作系统二进制文件中;导入程序读取二进制导出文件并将对象和数据载入数据库中;
      传统的导入程序是客户端工具,导出的二进制文件位于客户端;
    在这里插入图片描述

    3.2 优点

      可以按时间保存表结构和数据;允许导出指定的表,并重新导入到新的数据库中;可以把数据库迁移到另外一台异构服务器上;在两个不同版本的 Oracle 数据库之间传输数据;在联机状态下进行备份和恢复;可以重新组织表的存储结构,降低HWM,减少链接及磁盘碎片

    3.3 使用调用导出和导入实用程序的三种方法

    交互提示符:
      以交互的方式提示用户逐个输入参数的值
    在这里插入图片描述

    命令行参数:
      在命令行指定执行程序的参数和参数值

    参数文件:
      允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数

    新建一个参数文件在这里插入图片描述

    exp  parfile=参数文件路径
    

    3.4 导出和导入数据库对象的四种模式(四种模式之间互斥)

      数据库模式:导出和导入整个数据库中的所有对象; full
      表空间模式:导出和导入一个或多个指定的表空间中的所有对象;
      用户模式:导出和导入一个用户模式中的所有对象;
      表模式:导出和导入一个或多个指定的表或表分区;

    3.5 exp

    exp命令

      格式:  EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
      例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
    

    参数说明:

    USERID   用户名/口令
    BUFFER   数据缓冲区大小
    FILE     输出文件 (EXPDAT.DMP)
    COMPRESS  导入到一个区 (Y)   
    GRANTS    导出权限 (Y)
    INDEXES   导出索引 (Y)
    DIRECT    直接路径 (N)
    LOG      屏幕输出的日志文件
    ROWS      导出数据行 (Y)
    CONSISTENT 交叉表的一致性 (N)
    FULL        导出整个文件 (N)
    OWNER        所有者用户名列表
    TABLES     表名列表
    RECORDLENGTH   IO 记录的长度
    INCTYPE     增量导出类型
    RECORD       跟踪增量导出 (Y)
    TRIGGERS     导出触发器 (Y)
    STATISTICS    分析对象 (ESTIMATE)
    PARFILE      参数文件名
    CONSTRAINTS  导出的约束条件 (Y)
    OBJECT_CONSISTENT    只在对象导出期间设置为只读的事务处理 (N)
    FEEDBACK             每 x 行显示进度 (0)
    FILESIZE             每个转储文件的最大大小
    FLASHBACK_SCN        用于将会话快照设置回以前状态的 SCN
    FLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间
    QUERY                用于导出表的子集的 select 子句
    RESUMABLE            遇到与空格相关的错误时挂起 (N)
    RESUMABLE_NAME       用于标识可恢复语句的文本字符串
    RESUMABLE_TIMEOUT    RESUMABLE 的等待时间
    TTS_FULL_CHECK       对 TTS 执行完整或部分相关性检查
    TABLESPACES          要导出的表空间列表
    TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
    TEMPLATE             调用 iAS 模式导出的模板名
    

    如:
    (1) 导出scott的emp、dept表

    exp scott/123456@orcl  tables=(emp,dept) file=D:\c\scott1.dmp log=D:\c\scott1.log
    

    在这里插入图片描述
    在这里插入图片描述
    (2) 导出scott所有对象

    exp scott/123456@orcl owner=scott file=D:\c\scott2.dmp log=D:\c\scott2.log
    

    在这里插入图片描述

    3.6 imp

     格式:  IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     例如: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
    

    参数说明:

    USERID   用户名/口令
    BUFFER   数据缓冲区大小
    FILE     输入文件 (EXPDAT.DMP)
    SHOW     只列出文件内容 (N)
    IGNORE   忽略创建错误 (N)
    GRANTS   导入权限 (Y)
    INDEXES   导入索引 (Y)
    ROWS     导入数据行 (Y)
    LOG     屏幕输出的日志文件
    FULL       导入整个文件 (N)
    FROMUSER    所有者用户名列表
    TOUSER     用户名列表
    TABLES      表名列表
    RECORDLENGTH  IO 记录的长度
    INCTYPE     增量导入类型
    COMMIT       提交数组插入 (N)
    PARFILE      参数文件名
    CONSTRAINTS    导入限制 (Y)
    DESTROY                覆盖表空间数据文件 (N)
    INDEXFILE              将表/索引信息写入指定的文件
    SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)
    FEEDBACK               每 x 行显示进度 (0)
    TOID_NOVALIDATE        跳过指定类型 ID 的验证
    FILESIZE               每个转储文件的最大大小
    STATISTICS             始终导入预计算的统计信息
    RESUMABLE              在遇到有关空间的错误时挂起 (N)
    RESUMABLE_NAME         用来标识可恢复语句的文本字符串
    RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
    COMPILE                编译过程, 程序包和函数 (Y)
    STREAMS_CONFIGURATION  导入流的一般元数据 (Y)
    STREAMS_INSTANTIATION  导入流实例化元数据 (N)
    DATA_ONLY              仅导入数据 (N)
    

    如:
    (1) 导入scott的emp、dept表

    在这里插入图片描述

    imp scott/123456@orcl  file=D:\c\scott1.dmp
    

    在这里插入图片描述
    仅导入部分表:
    在这里插入图片描述

    imp scott/123456@orcl  file=D:\c\scott1.dmp tables=(dept)
    

    在这里插入图片描述

    (2) 导入其他用户的表

    imp cz/123456@orcl file=D:\c\scott2.dmp  fromuser=scott touser=cz
    

    3.7.可传输表空间(迁移的数据量很大)

    步骤:
      检查要传输的表空间是否是自包含的;
      将表空间设置成只读;
      exp 进行可传输表空间模式的导出;
      将导出文件和数据文件复制到目标数据库上;
      目标数据库上,imp 进行可传输表空间模式的导入;
      目标数据库上,把表空间设置成读写状态;


    4. 数据泵(expdp /impdp)

    4.1 简介

      exp/imp缺点在于速度太慢,oracle设计了一个服务器端工具,数据泵为数据库提供高速并行和大数据的迁移;

    4.2 expdp 格式说明、参数说明、使用说明

      在 expdp 进行导出时,先创建了 MT 表,并把对象的信息插入到 MT 表,之后进行导出动作;导出完成后,MT 表也导出到转储文件中;导出任务完成后、或者删除了导出任务后,MT 表自动删除;如果导出任务异常终止,MT 表仍然保留

    expdp 具有四种模式:表、用户、可传输表空间、全库

      格式:  expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
      示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
                   或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
    

    参数说明:

    ATTACH
    连接到现有作业。
    例如, ATTACH=job_name。
    
    COMPRESSION
    减少转储文件大小。
    有效的关键字值为: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。
    
    CONTENT
    指定要卸载的数据。
    有效的关键字值为: [ALL], DATA_ONLY 和 METADATA_ONLY。
    ALL 导出表定义和数据,DATA_ONLY仅导出数据,METADATA_ONLY仅导出定义
    
    DATA_OPTIONS
    数据层选项标记。
    有效的关键字值为: XML_CLOBS。
    
    DIRECTORY
    用于转储文件和日志文件的目录对象。
    
    DUMPFILE
    指定目标转储文件名的列表 [expdat.dmp]。
    例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
    
    ENCRYPTION
    加密某个转储文件的一部分或全部。
    有效的关键字值为: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NONE
    。
    
    ENCRYPTION_ALGORITHM
    指定加密的方式。
    有效的关键字值为: [AES128], AES192 和 AES256。
    
    ENCRYPTION_MODE
    生成加密密钥的方法。
    有效的关键字值为: DUAL, PASSWORD 和 [TRANSPARENT]。
    
    ENCRYPTION_PASSWORD
    用于在转储文件中创建加密数据的口令密钥。
    
    ESTIMATE
    计算作业估计值。
    有效的关键字值为: [BLOCKS] 和 STATISTICS。
    
    ESTIMATE_ONLY
    计算作业估计值而不执行导出。
    
    EXCLUDE
    排除特定对象类型。
    例如, EXCLUDE=SCHEMA:"='HR'"。
    
    FILESIZE
    以字节为单位指定每个转储文件的大小。
    
    FLASHBACK_SCN
    用于重置会话快照的 SCN。
    
    FLASHBACK_TIME
    用于查找最接近的相应 SCN 值的时间。
    
    FULL
    导出整个数据库 [N]。
    
    HELP
    显示帮助消息 [N]。
    
    INCLUDE
    包括特定对象类型。
    例如, INCLUDE=TABLE_DATA。
    
    JOB_NAME
    要创建的导出作业的名称。
    
    LOGFILE
    指定日志文件名 [export.log]。
    
    NETWORK_LINK
    源系统的远程数据库链接的名称。
    
    NOLOGFILE
    不写入日志文件 [N]。
    
    PARALLEL
    更改当前作业的活动 worker 的数量。
    
    PARFILE
    指定参数文件名。
    
    QUERY
    用于导出表的子集的谓词子句。
    例如, QUERY=employees:"WHERE department_id > 10"。
    
    REMAP_DATA
    指定数据转换函数。
    例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
    
    REUSE_DUMPFILES
    覆盖目标转储文件 (如果文件存在) [N]。
    
    SAMPLE
    要导出的数据的百分比。
    
    SCHEMAS
    要导出的方案的列表 [登录方案]。
    
    SOURCE_EDITION
    用于提取元数据的版本。
    
    STATUS
    监视作业状态的频率, 其中
    默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
    
    TABLES
    标识要导出的表的列表。
    例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
    
    TABLESPACES
    标识要导出的表空间的列表。
    
    TRANSPORTABLE
    指定是否可以使用可传输方法。
    有效的关键字值为: ALWAYS 和 [NEVER]。
    
    TRANSPORT_FULL_CHECK
    验证所有表的存储段 [N]。
    
    TRANSPORT_TABLESPACES
    要从中卸载元数据的表空间的列表。
    
    VERSION
    要导出的对象版本。
    有效的关键字值为: [COMPATIBLE], LATEST 或任何有效的数据库版本。
    
    
    ADD_FILE
    将转储文件添加到转储文件集。
    
    CONTINUE_CLIENT
    返回到事件记录模式。如果处于空闲状态, 将重新启动作业。
    
    EXIT_CLIENT
    退出客户机会话并使作业保持运行状态。
    
    FILESIZE
    用于后续 ADD_FILE 命令的默认文件大小 (字节)。
    
    HELP
    汇总交互命令。
    
    KILL_JOB
    分离并删除作业。
    
    PARALLEL
    更改当前作业的活动 worker 的数量。
    
    REUSE_DUMPFILES
    覆盖目标转储文件 (如果文件存在) [N]。
    
    START_JOB
    启动或恢复当前作业。
    有效的关键字值为: SKIP_CURRENT。
    
    STATUS
    监视作业状态的频率, 其中
    默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
    
    STOP_JOB
    按顺序关闭作业执行并退出客户机。
    有效的关键字值为: IMMEDIATE。
    

    如:
    使用sysdba用户创建目录对象

    create directory MY_DIR as 'D:\d';
    grant read,write on directory MY_DIR to scott;
    
    (1)导出scott的 emp、dept表,默认会导出表上的约束和索引

    在命令行输入

    expdp scott/123456@orcl DUMPFILE=scott1.dmp DIRECTORY=MY_DIR TABLES=(emp,dept)
    

    在这里插入图片描述

    (2)导出scott的 emp、dept表,仅导结构,不导出数据,导出文件名若存在则覆盖

    在命令行输入

    expdp scott/123456@orcl DUMPFILE=scott1.dmp DIRECTORY=MY_DIR TABLES=(emp,dept) CONTENT=METADATA_ONLY REUSE_DUMPFILES=y
    
    (3)导出scott和hr用户

    用户必须是管理员用户,在命令行输入

    expdp system/123456@orcl DUMPFILE=system1.dmp DIRECTORY=MY_DIR SCHEMAS=(scott,hr)  JOB_NAME=expdp1
    

    JOB_NAME 若指定则生成的MT表名称为JOB_NAME的属性值
    在这里插入图片描述

    (4)导出scott的 emp、dept表,不导出索引和约束

    在命令行输入

    expdp scott/123456@orcl DUMPFILE=scott2.dmp DIRECTORY=MY_DIR TABLES=(emp,dept) exclude=index,constraint
    

    在这里插入图片描述

    (5)导出scott的所有表,除了 emp、dept表

    在命令行输入

    expdp scott/123456@orcl DUMPFILE=scott3.dmp DIRECTORY=MY_DIR exclude=table:"in('EMP')" exclude=table:"in('DEPT')"
    

    在这里插入图片描述

    (6)导出scott的 emp、dept表,但不导出emp的约束和索引

    在命令行输入

    expdp scott/123456@orcl DUMPFILE=scott4.dmp DIRECTORY=MY_DIR TABLES=(emp,dept) exclude=constraint:"in('PK_DEPT')"  exclude=index:"in('PK_DEPT')" 
    

    在这里插入图片描述

    (7)导出scott的 emp、dept表,带条件expdp,并使用parfile

    创建parfile文件
    在这里插入图片描述
    在创建的文件的目录执行

    expdp scott/123456@orcl  parfile=exp1.txt
    

    在这里插入图片描述

    4.3 impdp 格式说明、参数说明、使用说明

      格式:  impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
      示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
    

    参数说明:

    ATTACH
    连接到现有作业。
    例如, ATTACH=job_name。
    
    CONTENT
    指定要加载的数据。
    有效的关键字为: [ALL], DATA_ONLY 和 METADATA_ONLY。
    
    DATA_OPTIONS
    数据层选项标记。
    有效的关键字为: SKIP_CONSTRAINT_ERRORS。
    
    DIRECTORY
    用于转储文件, 日志文件和 SQL 文件的目录对象。
    
    DUMPFILE
    要从中导入的转储文件的列表 [expdat.dmp]。
    例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
    
    ENCRYPTION_PASSWORD
    用于访问转储文件中的加密数据的口令密钥。
    对于网络导入作业无效。
    
    ESTIMATE
    计算作业估计值。
    有效的关键字为: [BLOCKS] 和 STATISTICS。
    
    EXCLUDE
    排除特定对象类型。
    例如, EXCLUDE=SCHEMA:"='HR'"。
    
    FLASHBACK_SCN
    用于重置会话快照的 SCN。
    
    FLASHBACK_TIME
    用于查找最接近的相应 SCN 值的时间。
    
    FULL
    导入源中的所有对象 [Y]。
    
    HELP
    显示帮助消息 [N]。
    
    INCLUDE
    包括特定对象类型。
    例如, INCLUDE=TABLE_DATA。
    
    JOB_NAME
    要创建的导入作业的名称。
    
    LOGFILE
    日志文件名 [import.log]。
    
    NETWORK_LINK
    源系统的远程数据库链接的名称。
    
    NOLOGFILE
    不写入日志文件 [N]。
    
    PARALLEL
    更改当前作业的活动 worker 的数量。
    
    PARFILE
    指定参数文件。
    
    PARTITION_OPTIONS
    指定应如何转换分区。
    有效的关键字为: DEPARTITION, MERGE 和 [NONE]。
    
    QUERY
    用于导入表的子集的谓词子句。
    例如, QUERY=employees:"WHERE department_id > 10"。
    
    REMAP_DATA
    指定数据转换函数。
    例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
    
    REMAP_DATAFILE
    在所有 DDL 语句中重新定义数据文件引用。
    
    REMAP_SCHEMA
    将一个方案中的对象加载到另一个方案。
    
    REMAP_TABLE
    将表名重新映射到另一个表。
    例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。
    
    REMAP_TABLESPACE
    将表空间对象重新映射到另一个表空间。
    
    REUSE_DATAFILES
    如果表空间已存在, 则将其初始化 [N]。
    
    SCHEMAS
    要导入的方案的列表。
    
    SKIP_UNUSABLE_INDEXES
    跳过设置为“索引不可用”状态的索引。
    
    SOURCE_EDITION
    用于提取元数据的版本。
    
    SQLFILE
    将所有的 SQL DDL 写入指定的文件。
    
    STATUS
    监视作业状态的频率, 其中
    默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
    
    STREAMS_CONFIGURATION
    启用流元数据的加载
    
    TABLE_EXISTS_ACTION
    导入对象已存在时执行的操作。
    有效的关键字为: APPEND, REPLACE, [SKIP] 和 TRUNCATE。
    
    TABLES
    标识要导入的表的列表。
    例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
    
    TABLESPACES
    标识要导入的表空间的列表。
    
    TARGET_EDITION
    用于加载元数据的版本。
    
    TRANSFORM
    要应用于适用对象的元数据转换。
    有效的关键字为: OID, PCTSPACE, SEGMENT_ATTRIBUTES 和 STORAGE。
    
    TRANSPORTABLE
    用于选择可传输数据移动的选项。
    有效的关键字为: ALWAYS 和 [NEVER]。
    仅在 NETWORK_LINK 模式导入操作中有效。
    
    TRANSPORT_DATAFILES
    按可传输模式导入的数据文件的列表。
    
    TRANSPORT_FULL_CHECK
    验证所有表的存储段 [N]。
    
    TRANSPORT_TABLESPACES
    要从中加载元数据的表空间的列表。
    仅在 NETWORK_LINK 模式导入操作中有效。
    
    VERSION
    要导入的对象的版本。
    有效的关键字为: [COMPATIBLE], LATEST 或任何有效的数据库版本。
    仅对 NETWORK_LINK 和 SQLFILE 有效。
    
    CONTINUE_CLIENT
    返回到事件记录模式。如果处于空闲状态, 将重新启动作业。
    
    EXIT_CLIENT
    退出客户机会话并使作业保持运行状态。
    
    HELP
    汇总交互命令。
    
    KILL_JOB
    分离并删除作业。
    
    PARALLEL
    更改当前作业的活动 worker 的数量。
    
    START_JOB
    启动或恢复当前作业。
    有效的关键字为: SKIP_CURRENT。
    
    STATUS
    监视作业状态的频率, 其中
    默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
    
    STOP_JOB
    按顺序关闭作业执行并退出客户机。
    有效的关键字为: IMMEDIATE。
    
    (1)改变所有者,REMAP_SCHEMA的使用
    grant read,write on directory MY_DIR to hr;
    

    在命令行输入

    expdp scott/123456@orcl DUMPFILE=scott7.dmp DIRECTORY=MY_DIR SCHEMAS=(scott)  
    
    impdp hr/123456@orcl DUMPFILE=scott7.dmp DIRECTORY=MY_DIR  remap_schema=scott:hr
    

    在这里插入图片描述

    展开全文
  • 生产环境备份方案

    千次阅读 2008-06-12 23:30:00
    time: 2008/06/12author :skate 生产环境备份方案: 1.设置数据库自动备份控制文件、SPFILE文件 2.每个星期天做RMAN 0级全库备份 3.每日(星期天除外)做RMAN 1级增量备份 4.在主服务器保留一个礼拜内的全库备份、...
  • Mysql 备份的三种方式

    千次阅读 2021-06-16 14:21:03
    备份的本质就是将数据集另存一个副本,但是原数据会不停的发生变化,所以利用备份只能回复到数据变化之前的数据。那变化之后的呢?所以制定一个好的备份策略很重要。 一、备份的目的 做灾难恢复:对损坏的数据...
  • 生产阶段环境中为所有表创建动态备份 该应用程序从给定的“ prod”阶段环境中读取所有dynamodb表,并备份数据。 创建一个备份,以便获得所有表的列表,并仅提取生产目录中的表(以“ -prod”结尾)。 当您获得...
  • 一、备份的目的做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用二、备份需要考虑的问题可以容忍丢失多长时间的数据;恢复数据要在多长时间内完;...
  • 博文:【pytorch】将模型部署至生产环境:借助TensorRT 8完成代码优化及部署(二):C++接口实现 的代码备份
  • 本章内容: ...增量恢复的必要条件生产环境 mysqldump 备份命令恢复喽   一、MySQL主从复制 1、简介 主从复制是生产环境的必须品了,如果你不会,那真是LowB,不过你幸运,看到了此文,直接上手干
  • 实验环境 准备三台服务器,第一台作为dns主服务器,主机ip 20.0.0.11; 第二台作为dns备用服务器,主机ip 20.0.0.12; 第三台是一台客户机用来检验用的 开启虚拟机192.168.10.26安装 DNS 在CentOS系统中,系统光盘...
  • 部署生产环境后,需要对用户的一些数据进行定期备份(如:把C盘下的doc文件夹备份到D盘目录下)。该工具为bat脚本,使用时只需要简单的改几个参数(备份的原始基目录、原始目录名、备份文件存放的目标文件夹、删除...
  • 生产环境的数据库可能比较大,如果直接进行全备而不压缩的话,备份集就会占用了大量磁盘空间。给备份文件的存放管理带来不便。 解决方案: 通过with compression显式启用备份压缩,指定对此备份执行备份压缩,覆盖...
  • 公司的生产环境某些应用的数据库是部署在VMWare平台上的,为了节约成本,领导现考虑将全部数据迁移至居于KVM的CAS平台。之前做的是V2V迁移,但是效率不高,综合了一下时间成本及其他因素,最终选择采用备份与还原的...
  • 一、数据库备份概述; 二、数据库备份的分类; 三、数据库全量备份及其恢复; 方式一:物理文件冷备份 方式二:mysqldump热备份 ...五、生产环境Mysql数据库备份策略; 六、扩展:Xtarbackup工具备份Mysql数据库;
  • Conda环境迁移、备份与恢复

    千次阅读 2021-09-06 11:55:18
    @[TOC]Conda环境迁移、备份与恢复 应用场景 ...【场景2】Conda环境备份 Conda-Pack 简介 conda-pack 是用于创建conda环境压缩包的命令行工具,可以用该压缩包在其它电脑或路径安装conda环境。尤其在python
  • 此文档中的脚本主要是参考的 "东山絮柳仔" 的一篇文章:https://www.cnblogs.com/xuliuzai/p/9832333.html 自己梳理了一遍他的脚本,并查阅了一些官方的文档;然后对脚本进行了一些更改,适用于自己的环境
  • 一、从生产环境的postgre数据库服务器备份数据库 1、开始-运行-cmd 弹出dos控制台 2、在控制台里,进入PostgreSQL安装路径的bin目录下:指令:cd C:\Program Files\PostgreSQL\9.0\bin 3、pg_dump -h (postgre_...
  • 对于LAN环境下有灾备需求的业务系统数据能够通过生产中心备份服务器与容灾中心备份服务器之间的链路进行备份数据传输,以完成数据异地保护之功能; (5)集中备份及数据容灾系统,不应对现有省数据中心系统架构进行...
  • 每天晚上00点整在web服务器上打包备份系统配置文件,网站程序目录及访问日志通过rsync命令推送备份服务器backup上备份保留。(100台的web服务器数据备份哟~备份思路可以是先在本地按日期打包,然后再推到备份服务器...
  • 提到DataGuard环境下的备份恢复,大家都知道可以在备库上备份,然后恢复到主库,但您知道在生产中实施会遇到多少坑吗?实际生产中我们看到了太多在主库上进行备份,而让备库闲着的现象。本次课程将带您深入了解...
  • 本篇博文不会涉及非常详细的操作步骤,仅把备份与恢复的关键步骤记录,等后续有真正的使用场景的时候,再来实操。 hadoop hdfs分布式文件存储系统介绍 简单介绍下Hadoop生态圈中非常常用的几个组件: hdfs...
  • 目前流行几种备份方式:逻辑备份、物理备份、双机热备份备份脚本的编写等,本文分别从这些方面总结了MYSQL自动备份策略的经验和技巧,一起来看看。
  • 生产环境用mysqldump备份时,前端用户反映不能登录,是怎么回事? 只用了--quick参数
  • MySQL备份脚本的写法

    2020-12-14 07:57:17
    数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果。所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库。在 MySQL 中,比较常用的逻辑备份工具是 mysqldump,本篇...
  • ZFS备份 免责声明:尽管我个人在生产环境中使用了此版本,并且仍在测试阶段中进行了测试,但仍针对我自己的用例进行了测试(在考虑“生产准备就绪”之前,请寻求其他人的经验反馈)。概述该备份软件旨在将ZFS快照...
  • 备份多个数据库可以使用如下命令: mysqldump -uroot -p123456 --databases test1 test2 test3 > /home/test/dump.sql; 恢复备份: source dump.sql --在mysql命令行中输入该命令即可恢复 备份整个数据库: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,932
精华内容 42,372
关键字:

生产环境备份

友情链接: JDBCdriver5.6.rar