Liunx下进行备份数据库shell脚本

在同一个服务器中,一个数据库,我使用shell的循环备份多个库时,出现一个库可以备份一个库不能备份的情况,这种前提下应该该服务器下的所有库都能进行备份的
这是部分shell代码:

img


这是结果:

img

我看该用户权限都是有的:

img


不知道为什么会出现这种情况。

img


把这些参数都打印出来看看,有没有可能是这些参数错误,导致没有识别出库

应该还是权限问题,用mysql连一下确认是否权限问题

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7746584
  • 这篇博客你也可以参考下:shell脚本-数据库分表分库备份+定时任务计划
  • 除此之外, 这篇博客: 【Shell 脚本综合】通过一个脚本学习如何生成序列、截取字符串、判断数组元素包含和定义函数及传参中的 3.6 自定义函数与函数调用和函数传参 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • shell 中函数的定义语法很简单,只需要使用 function 关键字,且在该关键字后指定函数名,并使用一对 {} 将函数体包起来即可。

    函数调用也很简单,只要直接使用函数名即可。

    days2keep=()
    for i in $(seq 0 1 4)
    do
    	day2keep=`date -d "now -${i} days" +%d`
        days2keep[i]=${day2keep}
    done
    
    # echo ${days2keep[*]}
    
    function iterate_truncate(){
        local table_pattern=tbl_chacc_comm_acct_oper_dtl
        local tables=`mysql -h ${host} \
        -P ${port} \
        -D ${db} \
        -u ${user} \
        -p${pwd} \
        -N \
        -s \
        -e "show tables like '${table_pattern}%';"`
        
        for table in ${tables}
        do
            local tbl_day=${table:(-2)}  # See page 121 from ABS for more information.
            if [[ ${days2keep[@]/${tbl_day}/} == ${days2keep[@]} ]];
            then
                echo ${table}
            fi
        done
    }
    
    iterate_truncate
    
    tbl_chacc_comm_acct_oper_dtl01
    tbl_chacc_comm_acct_oper_dtl02
    tbl_chacc_comm_acct_oper_dtl03
    tbl_chacc_comm_acct_oper_dtl04
    tbl_chacc_comm_acct_oper_dtl05
    tbl_chacc_comm_acct_oper_dtl06
    tbl_chacc_comm_acct_oper_dtl07
    tbl_chacc_comm_acct_oper_dtl08
    tbl_chacc_comm_acct_oper_dtl09
    tbl_chacc_comm_acct_oper_dtl10
    tbl_chacc_comm_acct_oper_dtl11
    tbl_chacc_comm_acct_oper_dtl12
    tbl_chacc_comm_acct_oper_dtl18
    tbl_chacc_comm_acct_oper_dtl19
    tbl_chacc_comm_acct_oper_dtl20
    tbl_chacc_comm_acct_oper_dtl21
    tbl_chacc_comm_acct_oper_dtl22
    tbl_chacc_comm_acct_oper_dtl23
    tbl_chacc_comm_acct_oper_dtl24
    tbl_chacc_comm_acct_oper_dtl25
    tbl_chacc_comm_acct_oper_dtl26
    tbl_chacc_comm_acct_oper_dtl27
    tbl_chacc_comm_acct_oper_dtl28
    tbl_chacc_comm_acct_oper_dtl29
    tbl_chacc_comm_acct_oper_dtl30
    tbl_chacc_comm_acct_oper_dtl31
    

    对于上述函数定义与调用的语法,有一点需要注意的是,在函数中定义的变量一般都使用 local 关键字进行限定,否则都默认为全局变量,即在函数中不使用 local 关键字限定的变量在函数外部和其他函数中也可以被引用,由此可能引起意料之外的问题。

    函数传参采用位置变量的形式,如下所示:在调用函数 iterate_truncate 时如果使用 iterate_truncate tbl_chacc_comm_acct_oper_dtl 这样的语法,此时 tbl_chacc_comm_acct_oper_dtl 将会被视为函数参数,该参数在函数内部可以使用变量 $1 来引用。

    days2keep=()
    for i in $(seq 0 1 4)
    do
    	day2keep=`date -d "now -${i} days" +%d`
        days2keep[i]=${day2keep}
    done
    
    # echo ${days2keep[*]}
    
    function iterate_truncate(){
        local table_pattern=$1
        local tables=`mysql -h ${host} \
        -P ${port} \
        -D ${db} \
        -u ${user} \
        -p${pwd} \
        -N \
        -s \
        -e "show tables like '${table_pattern}%';"`
        
        for table in ${tables}
        do
            local tbl_day=${table:(-2)}  # See page 121 from ABS for more information.
            if [[ ${days2keep[@]/${tbl_day}/} == ${days2keep[@]} ]];
            then
                echo ${table}
            fi
        done
    }
    
    iterate_truncate tbl_chacc_comm_acct_oper_dtl
    
    tbl_chacc_comm_acct_oper_dtl01
    tbl_chacc_comm_acct_oper_dtl02
    tbl_chacc_comm_acct_oper_dtl03
    tbl_chacc_comm_acct_oper_dtl04
    tbl_chacc_comm_acct_oper_dtl05
    tbl_chacc_comm_acct_oper_dtl06
    tbl_chacc_comm_acct_oper_dtl07
    tbl_chacc_comm_acct_oper_dtl08
    tbl_chacc_comm_acct_oper_dtl09
    tbl_chacc_comm_acct_oper_dtl10
    tbl_chacc_comm_acct_oper_dtl11
    tbl_chacc_comm_acct_oper_dtl12
    tbl_chacc_comm_acct_oper_dtl18
    tbl_chacc_comm_acct_oper_dtl19
    tbl_chacc_comm_acct_oper_dtl20
    tbl_chacc_comm_acct_oper_dtl21
    tbl_chacc_comm_acct_oper_dtl22
    tbl_chacc_comm_acct_oper_dtl23
    tbl_chacc_comm_acct_oper_dtl24
    tbl_chacc_comm_acct_oper_dtl25
    tbl_chacc_comm_acct_oper_dtl26
    tbl_chacc_comm_acct_oper_dtl27
    tbl_chacc_comm_acct_oper_dtl28
    tbl_chacc_comm_acct_oper_dtl29
    tbl_chacc_comm_acct_oper_dtl30
    tbl_chacc_comm_acct_oper_dtl31
    
  • 您还可以看一下 缪传海老师的大数据视频_Shell视频教程课程中的 Shell_企业真题讲解小节, 巩固相关知识点