# 备份库的命令
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 statusG"|awk '/Slave_IO_Running/ {print $2}'
mysql -uroot -p123 -e "show slave statusG"|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 statusG"|awk '/Last_IO/')
echo -e "slave 连接异常 $IO_ERR"
fi
# 判断SQL异常
if [ ! $SQL == 'Yes' ];then
SQL_ERR=$(mysql -uroot -p123 -e "show slave statusG"|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 statusG"|awk '/Last_SQL_Errno/ {print $2}'
if [ $code -eq 0 ];then
echo "successfully"
else
mysql -uroot -p123 -e "show slave statusG"|grep "Last_SQL" >/tem/sql_err.log
# 发邮件
mail -s "Mysql master slave sql error $(date +%F)" 1039880@qq.com < /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 root@10.0.0.61:/script/shell06