当前位置:  操作系统/服务器>linux

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

    来源: 互联网  发布时间:2014-10-16

    本文导语:  代码如下:# cat doallslave.sh#!/bin/sh#code by scpman#mail:scpman@live.com#blog:http://www.scpman.com#name:"doallslave.sh"helpinfo(){echo -e 'tthelp 查看帮助信息'echo -e 'tt自动做allslave从库脚本使用帮助'echo -e 'ttslavename 只能是xxx_xxx这种命令例如:zq2013_test1'echo...

代码如下:

# cat doallslave.sh
#!/bin/sh
#code by scpman
#mail:scpman@live.com
#blog:http://www.scpman.com
#name:"doallslave.sh"
helpinfo()
{
echo -e 'tthelp 查看帮助信息'
echo -e 'tt自动做allslave从库脚本使用帮助'
echo -e 'ttslavename 只能是xxx_xxx这种命令例如:zq2013_test1'
echo -e 'tt添加一个新从库 三个参数addslave    slavename ip         mysql.tar-name rootpasswd'
echo -e 'tt例子:         addslave  slavename 10.0.88.88  mysql.xxx.tar passwd  '
echo -e 'tt删除一个从库  三个参数 delslave    slavename '
echo -e 'tt例子:         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

    
 
 

您可能感兴趣的文章:

  • shell脚本如何调用另外一个shell脚本的函数?
  • 急救!关于Shell脚本删除过期文件的问题,Shell脚本达人乱入
  • shell 脚本中命令别名在脚本外无法使用
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • 想用shell脚本定时执行另一个脚本
  • 一个shell执行另一个带参数shell脚本????????????
  • 如何给shell脚本加密,脚本中有密码。最好是比较直接的,不要说让用 shc
  • Shell脚本调用Sql脚本并向其中传递变量
  • 请问,Shell中如何执行另外一个Shell脚本?
  • 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  • cd、zip等命令在shell提示符下能执行,在shell脚本中为什么不能执行呢?
  • shell脚本问题 关于父脚本和子脚本的问题
  • 技术文章 iis7站长之家
  • 请教shell脚本启动程序
  • 关于shell脚本的。
  • 关于arm linux下的别名配置脚本如何在进入用户时让shell执行的问题,如bashrc,profile,.bash_profile等脚本,寻求高手解答
  • 高分请教关于Shell脚本执行中断问题?
  • linux shell脚本
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • C++实现简单的希尔排序Shell Sort实例
  • linux bash shell中case语句的实例
  • 如何使用shell脚本替换不确定文本信息?实例!
  • Linux命令编辑器Shell编程实例大全 下载
  • shell监控脚本实例—监控mysql主从复制
  • Shell中的循环语句for、while、until实例讲解
  • 通过实例深入理解linux shell数组
  • linux shell流程控制语句实例讲解(if、for、while、case语句实例)
  • shell中的循环语句、判断语句实例
  • 总结的7个shell字符串操作方法和实例分享
  • shell数组常用实例分享
  • Shell中处理包含空格的文件名实例
  • Shell脚本test命令使用总结和实例
  • Shell多线程操作及线程数控制实例
  • Shell脚本处理浮点数的运算和比较实例
  • shell编程实例研讨:有兴趣者请进!
  • shell常用重定向实例讲解
  • Shell脚本编程中常用的数学运算实例
  • 备份shell脚本实例代码
  • shell脚本连接、读写、操作mysql数据库实例
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 请问“当前shell”和“子shell”的区别?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3