shell - while 循环

# 备份库的命令
mysqldump -uroot -p123 --single-transaction -B world > world_database.sql
# 备份表的命令
mysqldump -uroot -p123 --single-transaction world city > world_city.sql
# 获取到所有的要备份库
mysql -uroot -p123 -e "show databases;"|sed 1d|grep -v ".*_schema"
# 进入固定的数据库,显示所有的表名
mysql -uroot -p123 "use world;show tables;"|sed 1d

#!/usr/bin/bash
# 备份地址 mysql_dump/octivia/octivia_20190811.sql

db_name=$(mysql -uroot -p123 -e "show databases;"|sed 1d|grep -v ".*_schema")

for db in $db_name
do
        # 准备备份的位置
        path=/mysql_dump/$i
        if [ ! -d $path ];then
                mkdir -p /mysql_dump/$i
        fi
        # 备份数据库
        mysqldum -uroot -p123 --single-transaction -B $i > $path/${i}_database_$(date +%F).sql
        echo "$i 数据库备份完成"
        # 备份数据库中的每张表
        db_tables=$(mysql -uroot -p123 -e "use $i;show tables;"|sed 1d)
        # 批量备份数据库的表
        for tb in $db_tables
        do
                mysqldump -uroot -p123 --single-transaction $db $tb > $path/${db}_${tb}_tables.sql
                echo "备份的 $db 中的表 $tb , 成功"
        done
done

检查主从状态

# 取出IO线程状态
mysql -uroot -p123 -e "show slave status\G"|awk '/Slave_IO_Running/ {print $2}'
mysql -uroot -p123 -e "show slave status\G"|awk '/Slave_SQL_Running/ {print $2}'
if [ $IO == "Yes" ] && [ $SQL == "Yes" ];then
    echo "normal"
else
    # 判断IO异常
    if [ ! $IO == "Yes" ];then 
        IO_ERR=$(mysql -uroot -p123 -e "show slave status\G"|awk '/Last_IO/')
        echo -e "slave 连接异常 $IO_ERR"
    fi
    # 判断SQL异常
    if [ ! $SQL == 'Yes' ];then
        SQL_ERR=$(mysql -uroot -p123 -e "show slave status\G"|awk '/Last_SQL_Errno/ {print $2}')
        case $SQL_ERR in 
            1007)
                # 跳过错误一次
                mysql -uroot -p123 -e "stop slave;set global sql_slave_skip_counter=1;start slave;"
               code=mysql -uroot -p123 -e "show slave status\G"|awk '/Last_SQL_Errno/ {print $2}'
                if [ $code -eq 0 ];then
                    echo "successfully"
                else
                    mysql -uroot -p123 -e "show slave status\G"|grep "Last_SQL" >/tem/sql_err.log
                    # 发邮件
                    mail -s "Mysql master slave sql error $(date +%F)" [email protected] < /tmp/sql_err.log
                fi
            ;;
            1008)
            ;;
            1032)
            ;;
            *)
        esac

while 循环

i=0
while [ $i -lt 10 ]
do 
    let i++
done
# 使用while 循环打印升序和降序,相加
a=1
b=10
while [ $a -lt 11 ]
do
    sum=$(( $a+$b))
    echo $a + $b = $sum
    let a++
    let b--
done

使用while 读入文件,批量创建用户

while read line
do  
    echo $line
done

#!/usr/bin/bash

while read line
do
    id $line &>/dev/line
    if [ $? -eq 0 ];then
        echo"already exists"
    else
        name=$(echo $line|awk -F ":" '{print $1}')
        pwd=$(echo $line|awk -F ":" '{print $2}')
        adduser $name &>/dev/null
        echo $pwd |passwd --stdin $name &>/dev/null
        echo " $name create successfully"
    fi
done<user1.txt

break, continue

# break 结束当前循环,跳出本层循环
# continue 忽略本次循环剩余的代码,直接进入下一次循环
# exit 直接退出脚本

命令总结

# 远程拷贝
scp mysql_slave_check.sh [email protected]:/script/shell06

猜你喜欢

转载自www.cnblogs.com/Afrafre/p/11405727.html