如何用shell实现Mysql延时复制

62次阅读
没有评论

共计 1633 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要介绍“如何用 shell 实现 Mysql 延时复制”,在日常操作中,相信很多人在如何用 shell 实现 Mysql 延时复制问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用 shell 实现 Mysql 延时复制”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

这个脚本初步实现了 mysql 的延时复制,以后还会继续加强

lag_minute=30
sleep_time=5
binlogdir=/usr/local/mysql/data
cd $binlogdir
lag_time=`expr $lag_minute * 60`

while [0 -eq 0]
do

relay_pos_str=$(echo `mysql -e show slave statusG |grep -i Relay_Log_Pos`)
relay_pos_val=`expr substr $relay_pos_str 16 30`
echo $relay_pos_val relay_pos_val.his

relay_file_str=$(echo `mysql -e show slave statusG |grep -i Relay_Log_File`)
relay_file_val=`expr substr $relay_file_str 17 50`
echo $relay_file_val relay_file_val.his

cur_ts_string=`/usr/local/mysql/bin/mysqlbinlog -j $relay_pos_val $relay_file_val |grep SET TIMESTAMP |sed -n 1p `
#echo $cur_ts_string
cur_ts=`expr substr $cur_ts_string 15 10`
echo exec timestamp is $cur_ts

while [`echo ${#cur_ts}` -eq 0 ]
do
echo can not get timestamp,wait and try again
sleep 10
relay_pos_val=`cat relay_pos_val.his`
relay_file_val=`cat relay_file_val.his`
cur_ts_string=`/usr/local/mysql/bin/mysqlbinlog -j $relay_pos_val $relay_file_val |grep SET TIMESTAMP |sed -n 1p `
cur_ts=`expr substr $cur_ts_string 15 10`
echo exec timestamp is $cur_ts
done

local_ts=`mysql -e select unix_timestamp() |sed -n 2p `

target_ts=`expr $lag_time + $cur_ts`

echo local  timestamp is $local_ts
echo target timestamp is $target_ts
slave_flag=`mysqladmin extended-status|grep Slave_running|grep -ic on`
if [$target_ts -gt $local_ts]
then
if [$slave_flag -eq 1]
then
mysql -e stop slave sql_thread
echo slave stopped
fi
else
if [$slave_flag -eq 0]
then
mysql -e start slave sql_thread
echo slave started
fi
fi

sleep $sleep_time
done

到此,关于“如何用 shell 实现 Mysql 延时复制”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1633字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)