shell脚本:数据库的分库分表

该bash脚本用于创建MySQL数据库的备份,排除特定的系统库,将备份存储到指定目录,并对每个数据库的表进行单独备份。它使用mysqldump进行数据导出,gzip进行压缩,并处理备份成功或失败的情况。
#!/bin/bash
#########################
#File name:db_fen.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2023-07-29 09:18:52
#Description:
#########################

# MySQL连接信息
db_user="root"
db_password="RedHat@123"
db_cmd="-u${db_user} -p${db_password}"
exclude_db="information_schema|mysql|performance_schema|sys|Database"
bak_dir=/backup/db/mysqldump_test/
# 判断备份路径是否存在
[ -d ${bak_dir} ] || mkdir ${bak_dir}

# 查找出需要备份的数据库
 mysql ${db_cmd} -e"show databases" -N 2>/dev/null | egrep -v "$exclude_db" > dbtmp
# 循环遍历数据库列表
while read db
do
        #对数据库进行备份
    mysqldump ${db_cmd} --set-gtid-purged=off $db 2>/dev/null | gzip > ${bak_dir}/`date +%F`-$db.sql.gz
        #判断是否备份成功
    if [ $? -eq 0 ]
    then
        echo "database $db is being backed up ... success!"
    else
        echo "database $db is being backed up ... failure!"
    fi
        #根据数据库进行分表备份 
    [ -d ${bak_dir}/$db ] || mkdir -p ${bak_dir}/$db
               # 获取数据库中的表名列表
    mysql ${db_cmd}  $db -e "SHOW TABLES;" | grep -v "Tables_in" > tbtmp

    # 循环遍历表名列表
    while read tb
    do
        # 对表进行备份
        mysqldump ${db_cmd} --set-gtid-purged=off $db $tb 2>/dev/null | gzip > ${bak_dir}/$db/`date +%F`-$db-$tb.sql.gz

 # 判断是否备份成功
        if [ "$?" -eq 0 ]; then
            echo "Backup of $db.$tb successful!"
        else
            echo "Backup of $db.$tb failed!"
        fi
    done < tbtmp
done < dbtmp
#删除临时文件
rm -rf tbtmp
rm -rf dbtmp





 

要使用shell脚本查询数据库表,你可以通过以下步骤来实现: 1. 使用mysql命令连接到数据库。你可以使用以下命令来连接到数据库: ``` mysql -h 主机名 -u 用户名 -p 密码 数据库名 ``` 其中,主机名是数据库所在的主机地址,用户名和密码是用于登录数据库的凭据,数据库名是你要查询的数据库的名称。 2. 编写SQL查询语句。在连接到数据库后,你可以编写SQL查询语句来查询表中的数据。例如,要查询名为"表名"的表中的所有数据,你可以使用以下语句: ``` SELECT * FROM 表名; ``` 通过修改"表名"为你要查询的表的名称,你可以查询该表中的所有数据。 3. 将查询结果保存到变量中。使用shell脚本的变量来保存查询结果。你可以使用以下命令将查询结果保存到变量中: ``` result=$(mysql -h 主机名 -u 用户名 -p 密码 -D 数据库名 -s -N -e "SELECT * FROM 表名;") ``` 在这个命令中,通过将查询语句放在双引号中,你可以将查询结果保存到名为"result"的变量中。 4. 处理查询结果。你可以使用shell脚本的字符串处理函数来处理查询结果。例如,你可以使用"cut"命令来提取特定列的数据,使用"grep"命令来过滤特定条件的数据等等。根据你的需求,使用适当的命令来处理查询结果。 通过以上步骤,你可以使用shell脚本查询数据库表并对查询结果进行处理。请根据你的具体需求和情况进行相应的调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [shell脚本进行数据库查询(分库分表)](https://blog.youkuaiyun.com/jiange_zh/article/details/78154119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【shell脚本批量查询数据库数据】](https://blog.youkuaiyun.com/qq_42065917/article/details/125488510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值