源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

shell使用mysqld_multi自动做多实例从库脚本

  • 时间:2021-09-30 04:29 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:shell使用mysqld_multi自动做多实例从库脚本
[u]复制代码[/u] 代码如下:
# cat doallslave.sh #!/bin/sh #code by scpman #mail:scpman@live.com #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 <<FFF 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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部