MySQL主从 ---bash脚本

mysql主从可以避免主机意外带来的损失,主库出现问题,可以快速切换到从库提供服务。
可以在从库上执行查询操作,从主库中更新。实现读写分离可以在从库中执行备份,以避免备份期间影响主库的服务。

主:

vim master.sh
#!/bin/bash
echo "此脚本用于搭建主从环境 (主)"
#检测是否安装MySQL

rpm -qa | grep mariadb-server &> /dev/null
if [ $? -eq 0 ];then
        echo "mysql 已经安装
else
        echo "未安装MySQL 开始安装MySQL…… "
        echo "请耐心等待"
        
yum -y install mariadb mariadb-server &> /dev/null
echo " mysql 安装成功"
fi

修改配置文件:

echo "正在修改mysql主的配置文件"
sed -i '/server/d' /etc/my.cnf
sed -i '/log-bin/d' /etc/my.cnf
sed -i '1a\log-bin=mysql-bin' /etc/my.cnf
sed -i '2a\server-id=1' /etc/my.conf
echo " 配置文件修改成功 ,正在启动MySQL……"
systemctl start mariadb &> /dev/null

登陆数据库授权用户

a = " grant all on *.* to axiba@'%' identified by '123'"
mysql -u root -e "${a}"
mysql -uroot -e 'show master status' | grep mysql| awk '{print $1}' &> /shell/mysqlzhu.log
mysql -uroot -e 'show master status' | grep mysql| awk '{print $2}' &>> /shell/mysqlzhu.log
echo " 授权成功!!!"
systemctl iptables stop
setenforce 0

从:

#!/bin/bash
file=`cat /shell/mysqlzhu.log |sed -n '1p'`
pid=`cat /shell/mysqlzhu.log|sed -n '2p'`
#mysql主从之从数据库操作
#安装mysql数据库服务
rpm -qa | grep mysql-server &>/dev/null
if [ $? -eq 0 ]
then
        echo "mysql已经成功安装"
else
        echo "mysql没有安装,现在开始安装mysql"
        yum -y install mariadb mariadb-server&>/dev/null
        echo "mysql安装完成"
fi

修改配置文件:

echo "##修改mysql从的配置文件中"
sed -i '/relay/d' /etc/my.cnf
sed -i '/server/d' /etc/my.cnf
sed -i '1a\relay-log=mysqlbin' /etc/my.cnf
sed -i '2a\server-id=2' /etc/my.cnf

启动

systemctl start mairiadb

授权

echo "###mysql从中在操作"
mysql -uroot -e "stop slave"
echo "主从开始同步!"
change="change master to master_user='axiba',master_host='10.30.36.22',master_password='123',master_log_file='"$file"',master_log_pos="$pid"" &>/dev/null
mysql -uroot -e "$axiba" &>/dev/null
echo "同步完成!!!"
mysql -uroot -e "start slave"
echo "开启同步成功!!!"
sleep 20
mysql -uroot -e "show slave status \G" | grep Yes|cut -d ":" -f2 > /shell/mysqlcong.log
echo  "测试是否成功,双yes则成功"
cat /shell/mysqlcong.log
yes=`cat /shell/mysqlcong.log`
b="Yes Yes"
user=" ****@qq.com"
sub="mysql主从"
con="主从失败!!!请及时解决"
conc="主从成功"
if [ "$yes"="$b" ]
then
 echo "mysql主从设置成功!!!"
 /shell/sendemail.sh "$user"  "$sub" "$conc" &>/dev/null 
else
 echo "mysql主从同步失败!!!"
 /shell/sendemail.sh "$user"  "$sub" "$con" &>/dev/null
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的监控MySQL主从同步状态脚本的示例: ``` #!/bin/bash # MySQL主从同步状态监控脚本 # MySQL连接信息 MYSQL_HOST="localhost" MYSQL_PORT="3306" MYSQL_USER="root" MYSQL_PASSWORD="password" # 检查间隔时间(秒) CHECK_INTERVAL=10 # 报警阈值(秒) ALERT_THRESHOLD=60 # 报警通知邮箱 ALERT_EMAIL="alert@example.com" # 检查主从同步状态 function check_slave_status() { # 连接MySQL,执行show slave status命令,获取主从同步状态 slave_status=$(mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD -e "show slave status\G") # 解析主从同步状态 slave_io_running=$(echo "$slave_status" | grep -w "Slave_IO_Running:" | awk '{print $2}') slave_sql_running=$(echo "$slave_status" | grep -w "Slave_SQL_Running:" | awk '{print $2}') seconds_behind_master=$(echo "$slave_status" | grep -w "Seconds_Behind_Master:" | awk '{print $2}') # 判断主从同步状态是否正常 if [[ "$slave_io_running" == "Yes" && "$slave_sql_running" == "Yes" && "$seconds_behind_master" -lt "$ALERT_THRESHOLD" ]]; then echo "MySQL主从同步状态正常,Seconds_Behind_Master: $seconds_behind_master" else echo "MySQL主从同步状态异常,Slave_IO_Running: $slave_io_running, Slave_SQL_Running: $slave_sql_running, Seconds_Behind_Master: $seconds_behind_master" # 发送报警邮件 echo "MySQL主从同步状态异常,请尽快处理!" | mail -s "MySQL主从同步状态异常" $ALERT_EMAIL fi } # 循环检查主从同步状态 while true; do check_slave_status sleep $CHECK_INTERVAL done ``` 该脚本会定期执行show slave status命令,获取主从同步状态,并判断同步状态是否正常。如果发现同步状态异常,则发送报警邮件通知DBA团队处理。可以根据实际情况修改脚本中的MySQL连接信息、报警阈值、报警通知邮箱等配置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值