shell-远程连接msql数据库并执行存储过程

1.情况描述

       数据库mytestdb里有3个存储过程,存储过程有一个输入日期参数,例如2023-09-11

       想要通过shell脚本调用mysql的存储过程

        mysql客户端远程连接mysql服务器

2.废话不多说,直接上脚本

         脚本有一个输入参数日期,先检查日期是否合法;在写入想要执行的存储过程循环执行,存储过程报错就会停止。

#!/bin/bash

#报错立刻停止
set -e

# MySQL连接信息
MYSQL_USER="testmy"     #
MYSQL_PASSWORD="testmy123"
MYSQL_HOST="192.168.80.80"
MYSQL_DATABASE="testmydb"
MYSQL_PORT="3306"

#检查传入的日期参数 指定为8位日期
if ! [[ $1 =~ ^[0-9]{8}$ ]]; then
	echo '输入参数格式不正确,输入格式示例: 20230101'
	exit 1
fi
if ! date -d "$1" >/dev/null 2>&1 
then
	echo '不合法日期,请输入正确日期'
	exit 1
fi

#传入参数
IN_DATE=$1
IN_FORMAT_DATE=$(date -d "$IN_DATE" +%Y-%m-%d)

#执行存储过程
function execute_proc() {
    echo "Executing stored procedure $1"
    if ! mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST -D $MYSQL_DATABASE -P $MYSQL_PORT -e "CALL $1('$2');"; then
        echo " Error:Failed to execute stored procedure"
		exit 1
    fi
}

#存储过程名 
proc_prefix=(
"proc_test1"
"proc_test2"
"proc_test3"
)

for PROC_START in "${proc_prefix[@]}"
do
	execute_proc $PROC_START $IN_FORMAT_DATE
done

3.演示截图

        可以重定向输出日志

        这里有warning警告提示

        mysql: [Warning] Using a password on the command line interface can be insecure. 

        是脚本里mysql命令行里有密码导致的,可以修改shell脚本,使用 mysql_config_editor安全配置生成一个.mylogin.cnf的文件,通过判断这个文件对应的路径存不存在来指定,这样的话就不会弹出这个警告了。或者通过定义环境变量mysql_pwd来实现消除这个警告。建议是用前者,下一篇文章中有这段代码。

        也可以通过crontab命令自行配置定时任务哦,当然一般批量执行存储过程还是etl调度工具好用。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要备份 MySQL 数据并将备份文件上传到远程服务器,你可以使用 Shell 脚本结合 mysqldump 和 scp 命令来实现。以下是一个示例脚本```bash #!/bin/bash # MySQL置 db_user="your_username" db_password="your_password" db_name="your_database_name" # 备份配置 backup_directory="/path/to/backup/directory" backup_filename="backup_$(date +%Y%m%d%H%M%S).sql" remote_user="remote_user" remote_host="remote_host" remote_directory="/path/to/remote/directory" # 创建备份目录 mkdir -p $backup_directory # 使用 mysqldump 备份 MySQL 数据库 mysqldump -u $db_user -p$db_password $db_name > $backup_directory/$backup_filename # 将备份文件上传到远程服务器 scp $backup_directory/$backup_filename $remote_user@$remote_host:$remote_directory # 清理本地备份文件 rm $backup_directory/$backup_filename ``` 在上面的脚本中,你需要根据实际情况配置以下变量: - `your_username`:MySQL 用户名 - `your_password`:MySQL 密码 - `your_database_name`:要备份的数据库名称 - `/path/to/backup/directory`:本地备份文件存储目录 - `remote_user`:远程服务器用户名 - `remote_host`:远程服务器主机名或IP地址 - `/path/to/remote/directory`:远程服务器存储备份文件的目录 脚本首先创建一个用于存储备份文件的目录,然后使用 `mysqldump` 命令将 MySQL 数据库备份到指定的文件中。接下来,使用 `scp` 命令将备份文件上传到远程服务器。最后,脚本清理本地备份文件。 你可以将以上脚本保存为一个文件(例如 `backup_mysql.sh`),然后使用 `chmod +x backup_mysql.sh` 命令赋予脚本执行权限。运行脚本时,它将备份 MySQL 数据并将备份文件上传到远程服务器上指定的目录。 请确保在使用脚本之前进行测试,并注意脚本执行的权限和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值