下面是程式設計之家 jb51.cc 通過網絡收集整理的代碼片段。
程式設計之家小編現在分享給大家,也給大家做個參考。
# cat doallslave.sh
#!/bin/sh
#code by scpman
#mail:[email protected]
#blog:http://www.scpman.com
#name:"doallslave.sh"
helpinfo()
{
echo -e '\t\thelp 檢視幫助資訊'
echo -e '\t\t自動做allslave從庫腳本使用幫助'
echo -e '\t\tslavename 隻能是xxx_xxx這種指令例如:zq2013_test1'
echo -e '\t\t添加一個新從庫 三個參數addslave slavename ip MysqL.tar-name rootpasswd'
echo -e '\t\t例子: addslave slavename 10.0.88.88 MysqL.xxx.tar passwd '
echo -e '\t\t删除一個從庫 三個參數 delslave slavename '
echo -e '\t\t例子: delslave slavename'
}
#如果使用者沒有輸入參數(或者輸入錯誤的參數),或者輸入的參數為help,則顯示幫助資訊,并退出。
if [ -z "$1" -o "$1" = "help" ]
then
helpinfo
exit
fi
mulu_create()
{
if [ -d $1 ]
then
echo "$1 is have";
else
mkdir -p $1;
echo "create $1 ok!"
fi
}
check_mycnf()
{
temp1=`tail -n 1 /etc/my.cnf |grep "server_id"`;
if [ -z "$temp1" ]
then
sed -i "" '$d' /etc/my.cnf
check_mycnf
else
echo "/etc/my.cnf符合規範";
fi
}
fuc_addslave()
{
if [ -n "$1" -a -n "$2" -a -n "$3" -a -n "$4" ]
then
slavename=$1
masterip=$2
bao_path=$3
passwd=$4
else
echo "1 2 3 4 is null!shell exit now"
helpinfo
exit
fi
#檢查my.cnf是否正确
check_mycnf
echo "開始建立資料包存放目錄!"
sleep 1
mulu_create "/usr/doslave/${slavename}/"
mulu_create "/usr/db_backups/${slavename}_MysqL_backup/"
mulu_create "/usr/MysqL_backup/${slavename}_MysqL_backup/"
mulu_create "/usr/MysqL_backup_temp/${slavename}_MysqL_backup/"
tar -zxvf $bao_path -C /usr/doslave/${slavename}/;
rm -rf /usr/db_backups/${slavename}_MysqL_backup/*;
mv /usr/doslave/${slavename}/usr/dlm_db/MysqL/* /usr/db_backups/${slavename}_MysqL_backup/;
chown -R MysqL:MysqL /usr/db_backups/${slavename}_MysqL_backup/;
echo "資料放置完成!開始生成配置檔案"
mulu_create "/usr/doslave/confbak"
cp /etc/my.cnf /usr/doslave/confbak/my.cnf_`date +%Y%m%d%H%M%S`;
cp /usr/MysqL_backup/dblist /usr/doslave/confbak/dblist_`date +%Y%m%d%H%M%S`;
#######################my.cnf#############
tempconf="/usr/doslave/${slavename}/mycnf.temp"
tail -n 6 /etc/my.cnf > $tempconf;
sleep 2
old_MysqLd="`cat $tempconf |grep "MysqLd" | sed -e "s/\[MysqLd//;s/\]//;"`"
old_port="`cat $tempconf | grep 'port'|awk '{print $3}'`"
old_db_name="`cat $tempconf | grep "pid-file" | awk -F'/' '{print $4 }'|awk -F'_' '{print $1 "_" $2}'`"
old_server_id="`cat $tempconf | grep "server_id"|awk '{print $3}'`"
new_MysqLd="`expr ${old_MysqLd} + 1`"
new_port="`expr ${old_port} + 1`"
new_db_name="$slavename"
new_server_id=`echo $masterip |awk -F. '{print $3$4"9"}'`
old_MysqLd="`echo $old_MysqLd`"
old_port="`echo $old_port`"
old_db_name="`echo $old_db_name`"
old_server_id="`echo $old_server_id`"
sed -i "" "s/$old_MysqLd/$new_MysqLd/g;s/$old_port/$new_port/g;s/$old_db_name/$new_db_name/g;s/$old_server_id/$new_server_id/g;"$tempconf;
#cat $tempconf
#echo '--->'
sleep 2
echo "" >> /etc/my.cnf;
cat $tempconf >> /etc/my.cnf
echo "MysqLd${new_MysqLd}" >> /usr/MysqL_backup/dblist;
###############################################
echo "my.cnf 和dblist已經修改完成!"
/usr/local/bin/MysqLd_multi start $new_MysqLd
sleep 1
BIN=`cat /usr/db_backups/${slavename}_MysqL_backup/pos_MysqL|awk '{print $1}'`;
POS=`cat /usr/db_backups/${slavename}_MysqL_backup/pos_MysqL|awk '{print $2}'`;
#echo $passwd
echo $BIN
echo $POS
echo /usr/local/bin/MysqL -uroot -p$passwd --socket=/tmp/MysqL_${new_db_name}.sock
sleep 2
/usr/local/bin/MysqL -uroot -p$passwd --socket=/tmp/MysqL_${new_db_name}.sock <
stop slave;
reset slave;
CHANGE MASTER TO MASTER_HOST="$masterip",MASTER_USER='slaveuser',MASTER_PASSWORD='slave123213',MASTER_LOG_FILE="$BIN",MASTER_LOG_POS=$POS;
start slave;
FFF
rm -rf /usr/doslave/${slavename}/;
clear
/usr/local/bin/MysqL -uroot -p$passwd --socket=/tmp/MysqL_${new_db_name}.sock -e "show slave status\G"
echo "伺服器: ${masterip} 的從庫完成!請重新整理并檢視PHP從庫監控"
}
fuc_delslave()
{
if [ -n "$1" ]
then
nousedbname=$1
else
echo "slavename is null!shell exit now"
helpinfo
exit
fi
if [ -d /usr/db_backups/${nousedbname}_MysqL_backup ]
then
echo "/usr/db_backups/${nousedbname}_MysqL_backup 存在!"
else
echo "/usr/db_backups/${nousedbname}_MysqL_backup這個目錄不存在,請确認您的輸入是否正确,腳本退出!"
exit;
fi
del_id="`grep -B1 "$nousedbname" /etc/my.cnf|grep MysqLd|sed -e "s/\[//;s/\]//";`"
stop_id="`echo $del_id|sed -e "s/MysqLd//;"`"
echo $del_id
echo $stop_id
/usr/local/bin/MysqLd_multi stop $stop_id
rm -rf /usr/db_backups/${nousedbname}_MysqL_backup;
sed -i '' "/$del_id/d" /usr/MysqL_backup/dblist
sed -i '' "/$del_id/d" /etc/my.cnf
sed -i '' "/$nousedbname/d" /etc/my.cnf
echo "已經删除,請重新整理從庫監控"
}
if [ "$1" = "addslave" ]
then
echo '添加新從庫'
sleep 3
fuc_addslave $2 $3 $4 $5
elif [ "$1" = "delslave" ]
then
echo '删除'
fuc_delslave $2
else
echo $1 此參數是非法的
helpinfo
exit
fi
原文出處http://www.scpman.com/article/show/113/?classid=10
以上是程式設計之家(jb51.cc)為你收集整理的全部代碼内容,希望文章能夠幫你解決所遇到的程式開發問題。
如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。
總結
如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。
本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
如您喜歡交流學習經驗,點選連結加入交流1群:1065694478(已滿)交流2群:163560250