添加自动判断主从
This commit is contained in:
parent
3dd5cf60e3
commit
5e2c6b282f
|
@ -10,12 +10,21 @@ MYSQL_PORT=3306 # MySQL端口
|
||||||
MYSQL_REPL_USER="repl"
|
MYSQL_REPL_USER="repl"
|
||||||
MYSQL_REPL_PASSWD="Unary@2023"
|
MYSQL_REPL_PASSWD="Unary@2023"
|
||||||
|
|
||||||
# TODO(MH:)获取当前主从关系
|
# 获取当前主从关系
|
||||||
get_current_roles() {
|
pre_check() {
|
||||||
if [ -f "$IDENTIFIER_FILE" ]; then
|
MASTER_STATUS=$(mysql -h$MASTER_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT -e "show slave status\\G;"|grep -E "Slave_IO_Running: Yes|Slave_SQL_Running: Yes|Seconds_Behind_Master: 0"|wc -l)
|
||||||
CURRENT_ROLE=$(cat "$IDENTIFIER_FILE")
|
SLAVE_STATUS=$(mysql -h$SLAVE_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT -e "show slave status\\G;"|grep -E "Slave_IO_Running: Yes|Slave_SQL_Running: Yes|Seconds_Behind_Master: 0"|wc -l)
|
||||||
|
if [ "$MASTER_STATUS" -eq 0 ] && [ "$SLAVE_STATUS" -eq 3 ]; then
|
||||||
|
echo "$MASTER_HOST 是主节点,即将切换为 $SLAVE_HOST"
|
||||||
|
elif [ "$MASTER_STATUS" -eq 3 ] && [ "$SLAVE_STATUS" -eq 0 ]; then
|
||||||
|
echo "$SLAVE_HOST 是主节点,即将切换为 $MASTER_HOST"
|
||||||
|
# 交换主从
|
||||||
|
new_master=$MASTER_HOST
|
||||||
|
MASTER_HOST=$SLAVE_HOST
|
||||||
|
SLAVE_HOST=$new_master
|
||||||
else
|
else
|
||||||
CURRENT_ROLE="unknown"
|
echo "当前不是主从集群,请确认后主从状态是否正常"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,17 +78,19 @@ check_replication_status() {
|
||||||
REPLICATION_STATUS=$(mysql -h$MASTER_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT -e "show slave status\\G;"|grep -E "Slave_IO_Running: Yes|Slave_SQL_Running: Yes|Seconds_Behind_Master: 0"|wc -l)
|
REPLICATION_STATUS=$(mysql -h$MASTER_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD -P$MYSQL_PORT -e "show slave status\\G;"|grep -E "Slave_IO_Running: Yes|Slave_SQL_Running: Yes|Seconds_Behind_Master: 0"|wc -l)
|
||||||
|
|
||||||
# 判断是否修改成功了
|
# 判断是否修改成功了
|
||||||
if [ "$off_number" != "3" ]; then
|
if [ "$REPLICATION_STATUS" != "3" ]; then
|
||||||
echo "主从切换异常,请人工确认!!"
|
echo "主从切换异常,请人工确认!!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "主从切换成功!"
|
echo "主从切换成功!当前 $SLAVE_HOST 是主节点"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 主函数
|
# 主函数
|
||||||
main() {
|
main() {
|
||||||
#get_current_roles
|
# 预检测
|
||||||
|
pre_check
|
||||||
# 将主节点设置为只读
|
# 将主节点设置为只读
|
||||||
|
echo $MASTER_HOST
|
||||||
set_master_redonly
|
set_master_redonly
|
||||||
# 停止从节点,并关闭只读
|
# 停止从节点,并关闭只读
|
||||||
set_slaver_status
|
set_slaver_status
|
||||||
|
|
Loading…
Reference in New Issue