精华内容
下载资源
问答
  • 数据库自动备份脚本
    2022-06-24 17:49:07

    mysql数据库自动备份脚本

    1. 创建脚本文件vim mysql-backup.sh
    #!/bin/bash
    #全备方式,一般在从机上执行,适用于小中型mysql数据库
    #删除15天以前备份
    #作者:chenshunli	2022.6.25
    #时间:
    
    source /etc/profile        #加载系统环境变量
    source ~/.bash_profile    #加载用户环境变量
    set -o nounset             #引用未初始化变量时退出
    #set -o errexit            #执行shell命令遇到错误时退出
    
    user="root"
    password="123"
    host="localhost"
    port="3306"
    #需备份的数据库,数组
    db=("mysql" )
    #备份时加锁方式,
    #MyISAM为锁表--lock-all-tables,
    #InnoDB为锁行--single-transaction
    lock="--single-transaction"
    mysql_path="/usr/local/mysql"
    backup_path="${mysql_path}/backup"
    date=$(date +%Y-%m-%d_%H-%M-%S)
    day=15
    backup_log="${mysql_path}/backup.log"
    
    #建立备份目录
    if [ ! -e $backup_path ];then
        mkdir -p $backup_path
    fi
    
    #删除以前备份
    find $backup_path -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1
    
    echo "开始备份数据库:${db[*]}"
    
    #备份并压缩
    backup_sql(){
        dbname=$1
        backup_name="${dbname}_${date}.sql"
        #-R备份存储过程,函数,触发器
        mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name    
        if [[ $? == 0 ]];then
            cd $backup_path
            tar zcpvf $backup_name.tar.gz $backup_name
            size=$(du $backup_name.tar.gz -sh | awk '{print $1}')
            rm -rf $backup_name
            echo "$date 备份 $dbname($size) 成功 "
        else
            cd $backup_path
            rm -rf $backup_name
            echo "$date 备份 $dbname 失败 "
        fi
    }
    
    #循环备份
    length=${#db[@]}
    for (( i = 0; i < $length; i++ )); do
            backup_sql ${db[$i]} >> $backup_log 2>&1
    done
    
    echo "备份结束,结果查看 $backup_log"
    du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}'
    
    1. 增加执行权限
    chmod +x mysql-backup.sh
    
    1. 执行脚本测试
    ./mysql-backup.sh 
    开始备份数据库:mysql
    备份结束,结果查看 /usr/local/mysql/backup.log
    文件:/usr/local/mysql/backup/mysql_2022-06-24_17-40-54.sql.tar.gz,大小:232K
    
    1. 配置计划任务
    创建计划任务
    crontab -e
    30 23 */1 * * /usr/local/mysql/backup/mysql-backup.sh #每天23:30备份数据库
    
    crontab -l 查看计划任务
    
    更多相关内容
  • 一、备份脚本 1、初始化变量,记录开始日志 #变量 sysname=填写自己的系统名称 syspath=/home/oracle/databak/$sysname v_date=$(date '+%Y%m%d%H%M%S') #日志目录 logfile=${syspath}/backup.${v
  • docker环境下的mysql数据库自动备份脚本,配置到系统定时任务中,能够每天自动全库或者指定实例备份数据库,删除七天前的旧备份。
  • racle数据库自动备份脚本
  • 功能说明:备份SQLServer数据库,并压缩打包,传至远程FTP服务器,做到本地异地同时备份,可自动清理本地备份自动保留N个最新备份(针对此种备份,不针对文件夹),老的备份自动删除;将此脚本加入系统任务计划,则...
  • 数据库自动备份脚本

    2013-07-05 20:25:17
    数据库自动备份脚本
  • 自动备份脚本 #备份文件后缀时间 time="$(date +"%Y%m%d$H")" #备份路径和备份的数据库

    1、自动备份脚本
    #备份文件后缀时间
    time=“ ( d a t e + " (date +"%Y%m%d (date+"H”)"
    #备份路径和备份的数据库
    #把 root替换为实际的用户名;
    #把 dreamsoft替换为实际的密码;
    #把 dsfa_zjstxnew替换为实际的数据库名;
    #备份目录:/data/database-sjk-bf
    #备份文件名称:dsfa_zjstxnew_KaTeX parse error: Expected group after '_' at position 100: …f/dsfa_zjstxnew_̲time.sql.gz
    #mysqldump -uroot -pdreamsoft dsfa_zjstxnew | gzip > /data/database-sjk-bf/dsfa_zjstxnew_$(date +%Y%m%d_%H%M%S).sql.gz
    #删除七天之前的备份文件
    #备份文件存储目录:/data/database-sjk-bf
    #备份文件名:dsfa_zjstxnew_.sql.gz
    find /data/database-sjk-bf -name "dsfa_zjstxnew_
    .sql.gz" -type f -mtime +7 -exec rm -rf {} ; > /dev/null 2>&1

    (注:#删除五分钟之前的备份文件
    #find /data/database-sjk-bf -name “zjstxnew_*.sql.gz” -type f -mmin +5 -exec rm -rf {} ; > /dev/null 2>&1 )

    脚本弄好后执行看是否有问题,没问题后再设置每天自动备份

    2、设置每天自动执行脚本
    编辑crontab 添加定时任务
    修改crontab默认编辑器:select-editor。选择/usr/bin/vim.basic在这里插入图片描述

    #vi /etc/crontab (系统级别的配置)
    在最后一行中加入:
    00 16 * * * /usr/local/mysqlbackup/backmysql.sh
    表示每天16点00分执行备份

    注:crontab配置文件格式如下:
    分 时 日 月 周

    重启crontab:
    /etc/rc.d/init.d/crond restart 或者service crond restart
    注:可能因为centos版本问题上述命令不能执行 可尝试/bin/systemctl status crond.service命令

    展开全文
  • 数据库自动备份脚本使用

    千次阅读 2022-04-08 16:21:44
    数据库自动备份脚本

    数据库自动备份脚本使用

    备份

    Linux

    请先在测试环境进行测试

    • 编写备份脚本

    根据情况调整以下内容中的参数,并保存为backup.sh并放置在数据库所在服务器上(位置无限制)

    echo '##########################################'
    echo '###### The database is automatically backed up at 03:00 am every day ######'
    echo '##########################################'
    # Setting environment variables
    db_user="username"
    db_password="password"
    # 数据库名称
    db_name="test"
    # docker容器名 未使用docker则删除此变量
    db_container_name="mysql"
    # 备份文件的存放位置
    backup_dir="/usr/local/db/backup"
    time="$(date +"%Y%m%d")"
    echo 'Get system date: ' $time
    if [ ! -e "$backup_dir" ]; then
    mkdir $backup_dir
    fi
    cd $backup_dir
    echo ${backup_dir}
    echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S")
    # docker安装mysql使用下列命令
    docker exec ${db_container_name} mysqldump -u${db_user} -p${db_password} ${db_name} --quick --single-transaction > ${db_name}_${time}.sql
    # 直接安装mysql使用下列命令
    # mysqldump所在位置 -u${db_user} -p${db_password} ${db_name} --quick --single-transaction > ${db_name}_${time}.sql
    find ${backup_dir} -name ${db_name}"*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
    echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")
    

    P.S. 执行失败时请检查Windows与Linux符号差异问题,并且避免以文本文档(.txt)来新建脚本

    • 授予脚本可执行权限

    进入脚本所在目录并执行以下命令:

    chmod u+x backup.sh
    
    • 测试脚本

    执行命令:

    ./backup.sh
    

    观察控制台输出,并检查生成的SQL文件。

    • 创建定时任务

    执行以下命令:

    crontab -e
    

    在文本中插入以下内容:

    0 3 * * * /usr/local/db/backup.sh >> /usr/local/db/log/backup.log 2>&1
    

    每天凌晨三点执行备份

    > /usr/local/db/log/backup.log 2>&1是将任务执行的日志输出到指定文件。如果不需要日志则可以去除这一段。

    保存并退出,任务会自动运行。


    导入备份数据

    按普通SQL文件导入方式使用即可

    注意:

    • 调整SQL文件

    有时,备份的SQL文件在开头会附带这一行:mysqldump: [Warning] Using a password on the command line interface can be insecure. 。如果有,则需要删除该行再执行导入操作。

    • 出现 Got a packet bigger than 'max_allowed_packet' bytes 错误

    打开数据库,执行以下查询:

    SELECT @@max_allowed_packet / 1024 / 1024;
    

    得到当前最大允许读取包大小,如果小于你要导入的SQL文件大小,则执行以下命令来提高该限制大小:

    SET GLOBAL max_allowed_packet=1000000000;
    

    P.S. 该设置在数据库重启后失效

    导入的SQL文件大小,则执行以下命令来提高该限制大小:

    SET GLOBAL max_allowed_packet=1000000000;
    

    P.S. 该设置在数据库重启后失效

    展开全文
  • 通过定时任务实现数据库文件自动备份压缩,对备份文件做定期删除。 使用教程:http://blog.csdn.net/chen_gp_x/article/details/79298983
  • 最现实 最好用的 自动备份数据库 万无一失
  • mysql数据库自动备份脚本(详解)

    千次阅读 2020-06-01 17:59:50
    #功能说明:本功能用于备份mysql数据库 #编写日期:2018/05/17 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin export PATH #数据库用户名 dbuser='dbuser' #数据库密码 ...

    脚本内容:

    #!/bin/bash
    #功能说明:本功能用于备份mysql数据库
    #编写日期:2018/05/17
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin
    export PATH
    #数据库用户名
    dbuser='dbuser'
    #数据库密码
    dbpasswd='dbpasswd'
    #数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2
    dbname='dbname'
    #备份时间
    backtime=`date +%Y%m%d%H%M%S`
    #日志备份路径
    logpath='/opt/mysqlbackup/log'
    #数据备份路径
    datapath='/opt/mysqlbackup'
    #日志记录头部
    echo ‘”备份时间为${backtime},备份数据库表 ${dbname} 开始” >> ${logpath}/mysqllog.log
    #正式备份数据库
    for table in $dbname; do
    source=`mysqldump  -u${dbuser} -p${dbpasswd} --single-transaction ${table}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;
    #备份成功以下操作
    if [ "$?" == 0 ];then
    cd $datapath
    #为节约硬盘空间,将数据库压缩
    tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
    #删除原始文件,只留压缩后文件
    rm -f ${datapath}/${backtime}.sql
    echo “数据库表 ${dbname} 备份成功!!” >> ${logpath}/mysqllog.log
    else
    #备份失败则进行以下操作
    echo “数据库表 ${dbname} 备份失败!!” >> ${logpath}/mysqllog.log
    fi
    done

     


    易错问题:

    1、命令错误

    一般我们备份数据库时,直接使用命令 :mysqldump -h127.0.0.1 -p3306 -uroot -p123456 db t1 t2 > /data/backup/db_t1_t2.sql

    有的数据库版本会提示错误-bash:mysqldump: command not found,解决这个问题的可以设置软连接,也可以将mysqldump所做目录补全执行备份。

    /mysql/bin/mysqldump -h127.0.0.1 -p3306 -uroot -p123456 db t1 t2 > /data/backup/db_t1_t2.sql
    ————————————————

    2、报错问题

    错误:-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory

    当我在shell中运行how_paras.sh时,出现了这个错误

    [root@localhost sbin]# ./how_paras.sh
    -bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory 翻译即:

    -bash:./how_paras.sh:/ bin / bash ^ M:糟糕的解释器:没有这样的文件或目录

    好,那我们来分析一下,为什么会出现这种情况,这个问题说明什么,以及如何来解决它!

    情景
    之前,我都是直接在shell中创建,编写,执行脚本,都没有问题。因为感觉在shell中编写脚本不方便。于是使用WinSCP软件,将在shell中创建的空脚本,下载到windos系统中,用我的文本编辑器Notepad++来编写脚本,将编写好的脚本保存,并上传到linux系统中去。最后利用远程工具shell链接linux系统,运行这个脚本。

    why     

    为什么会出现这个问题
    问题就出在,我把shell中的脚本下载到windos系统中来进行编辑。

    windos中Notepadd++编辑脚本,使得脚本文件格式为DOS格式,即每一行的行位是\r\n来标识。

    好,那我打开vim编辑器确认一下。

    [root@localhost sbin]# vim how_paras.sh
    //  ... ...此处省略how_paras.sh脚本内容
    //在命令行模式输入下面这个命令
    :set ff?
    //显示结果为
      fileformat=dos                                             1,1           All

    总结

    1、打开脚本确认脚本文件格式:vim xxx.sh,:set ff?。xxx.sh代表脚本文件

    what    

    这个问题说明什么
    出现这个问题说明在windos系统和linux系统中的文件格式不一致。

    how

    方法一: 如何解决?
    直接解决方法:

    用vim编辑这个脚本,在命令行模式下,设置文件的格式,并保存。

    即vim xxx.sh,:set ff=unix

     

    方法二:如何解决?

    在Windos系统中Notepad++软件中更改,打开这个文件:编辑–>转换为UNIX格式

    彻底解决方法:更改Windos系统中Notepad++软件的文件方式。改为:NIX格式。

    步骤:

    打开Notepad++: 
    设置–>首选项–>新建:选择格式为UNIX;
    设置–>首选项–>默认目录:选择使用新样式对话框(无文件扩展名和UNIX支持此功能)

    ————————————————

     

    展开全文
  • PostgreSQL数据库备份脚本,结合系统计划任务可以实现数据库自动化备份。密码直接设置于脚本当中。
  • 2、备份MYSQL数据库自动排除系统库。文件名格式:{dir}\{dbname}-yyyyMMddHHmmss.bak 3、设置备份文件保留天数,例-15表示保留15天的备份,即清理15天以前的备份文件。 4、扫描备份目录下的文件,文件修改时间超过...
  • mysql数据库自动备份脚本,可添加到系统的计划任务里面,每天定时执行将会自动备份,修改bat文件中的数据库连接地址即可,自动备份30天内的数据库。时间可以修改bat文件,自行定义。
  • 1、可以自动备份; 2、显示备份数据库大小; 3、记录备份日志; 4、自动管理数据文件。
  • backup.bat 为备份脚本请勿删除,需放在备份所在的文件夹 文件名的为备份的日期+时间 7天前的备份数据会被删除 恢复前删除用户及所有表 再新建用户导入数据即可
  • 实现mysql数据库自动备份,windows下脚本为mysql_backup.bat,linux下脚本为mysql_backup.sh,在定时任务中调用即可。
  • 包含备份自动压缩,仅保留30天内的备份文件,30天以上自动删除等,下载直接可用,有注释。加入window任务计划轻松实现自动备份
  • 软件介绍: windows环境下Oracle数据库自动备份脚本 1、备份导出文件时自动使用当前日期进行命名2、自动压缩备份文件3、自动删除7天前的备份
  • 由于工作需要,在项目稳定运行后需要对数据进行保护,这就需要配置数据库自动备份。MySQL为我们提供了mysqldump工具,所以备份比较简单,我这里写了两份脚本,都是可以运行的: 一: rem auther:www.waylau.com ...
  • NULL 博文链接:https://todaytome.iteye.com/blog/2413061
  • 实现oracle 数据库自动备份+保留最新的7天数据+另一机器拷贝备份的脚本
  • clickhouse万能自动备份脚本。 脚本执行命令如下: sh backup-ch.sh ip port user password db chdir(clickhouse安装目录) bak_dir(备份目录) 参数灵活配置。拥有7个参数。可满足多种场景。 支持crontab定时调度...
  • AutoOracleback_Oracle数据库自动备份脚本,可以设置删除历史备份时间。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,260
精华内容 43,704
关键字:

数据库自动备份脚本