数据库移行脚本

这是一个关于使用bash脚本进行MySQL数据库迁移的示例,包括使用pt-show-grants导出用户和权限信息,用mysqlpump以多线程方式导出数据库内容,以及导入用户数据的步骤。脚本中还记录了执行时间并保存到日志文件中。
摘要由CSDN通过智能技术生成

迁移数据库用的脚本。

pt-show-grants和mysqlpump需要另外安装。

用于导出用户和权限信息

#!/bin/bash
# 读入env-export.txt文件里1,2,3行的用户名, 密码, db url信息
content="user"
{
read -r db_username
read -r db_pwd
read -r db_url
} < env-export.txt

output_file="execution-log.txt"
action="export"
echo "---------------------------------------------">>$output_file
echo "START "$action" "$content>>$output_file
date1=$(date)
TZ=Asia/Shanghai date "+%Y-%m-%d %H:%M:%S">>$output_file

# 执行的语句导出mysql.user表里的用户信息和权限信息
pt-show-grants --charset=utf8 --ignore 'mysql.infoschema'@'localhost','mysql.sys'@'localhost','rdsadmin'@'localhost','rdsrepladmin'@'%' -u $db_username -p$db_pwd -h $db_url > $content"-dump.sql"

echo "END "$action" "$content>>$output_file
date2=$(date)
TZ=Asia/Shanghai date "+%Y-%m-%d %H:%M:%S">>$output_file

timestamp1=$(date -d "$date1" +%s)
timestamp2=$(date -d "$date2" +%s)
diff=$(($timestamp2 - $timestamp1))
hours=$(($diff/3600))
minutes=$(($diff%3600 / 60))
seconds=$(($diff%60))

echo "执行所花时间:$hours時間$minutes分$seconds秒.">>$output_file

用于导出bi数据库信息。

#!/bin/bash
# 读入env-export.txt文件里1,2,3行的用户名, 密码, db url信息
content="user"
{
read -r db_username
read -r db_pwd
read -r db_url
} < env-export.txt

output_file="execution-log.txt"
action="export"
echo "---------------------------------------------">>$output_file
echo "START "$action" "$content>>$output_file
date1=$(date)
TZ=Asia/Shanghai date "+%Y-%m-%d %H:%M:%S">>$output_file

# 执行的语句 mysqlpump比mysqldump更好用的地方在于可以通过--default-parallelism=10指定多线程执行导出
mysqlpump --databases bi --set-gtid-purged=OFF --default-parallelism=10 -u $db_username -p$db_pwd -h $db_url > $content"-dump.sql"

echo "END "$action" "$content>>$output_file
date2=$(date)
TZ=Asia/Shanghai date "+%Y-%m-%d %H:%M:%S">>$output_file

timestamp1=$(date -d "$date1" +%s)
timestamp2=$(date -d "$date2" +%s)
diff=$(($timestamp2 - $timestamp1))
hours=$(($diff/3600))
minutes=$(($diff%3600 / 60))
seconds=$(($diff%60))

echo "执行所花时间:$hours時間$minutes分$seconds秒.">>$output_file

导入user数据脚本:

#!/bin/bash
# 读入env-export.txt文件里1,2,3行的用户名, 密码, db url信息
content="user"
{
read -r db_username
read -r db_pwd
read -r db_url
} < env-export.txt

output_file="execution-log.txt"
action="export"
echo "---------------------------------------------">>$output_file
echo "START "$action" "$content>>$output_file
date1=$(date)
TZ=Asia/Shanghai date "+%Y-%m-%d %H:%M:%S">>$output_file

# 导入user数据语句
mysql -u $db_username -p$db_pwd -h $db_url --force < $content"-dump.sql"

echo "END "$action" "$content>>$output_file
date2=$(date)
TZ=Asia/Shanghai date "+%Y-%m-%d %H:%M:%S">>$output_file

timestamp1=$(date -d "$date1" +%s)
timestamp2=$(date -d "$date2" +%s)
diff=$(($timestamp2 - $timestamp1))
hours=$(($diff/3600))
minutes=$(($diff%3600 / 60))
seconds=$(($diff%60))

echo "执行所花时间:$hours時間$minutes分$seconds秒.">>$output_file
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值