码迷,mamicode.com
首页 > 数据库 > 详细

Mysql主从搭建脚本

时间:2015-08-09 18:59:23      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:mysq   脚本   主从备份   

前言:(1)该脚本可在任意路径运行,只需能够连接外网,会自动下载所需软件包并安装。
            (2)该脚本内mysql版本为mysql-5.6.25。
            (3)为提高脚本自由度,该脚本部署中,需要手动指定IP、同步用户名、同步密码,安装中按照提示输入即可。
        别的就不多说啦,大家自己体验吧,欢迎意见和批评 !

图解如下:
     (1)主菜单
     主菜单选项如下图,共7个选项,可输入该选项内容分别执行选项中的内容。其中可输入help查看帮助,可输入q退出脚本。
      

     技术分享

      (2)然后是install选项,该选项为软件包的下载与安装。输入install回车,脚本会自行下载所需软件包进行安装,由于mysql安装时间比较长,这里并没有隐藏安装过程,更方便查看安装进度。

      技术分享 

      (3)mysql服务调整
  这里输入server,脚本会自行修改mysql一些配置信息,将mysql加入系统服务,并对mysql进行初始化。为实验方便这里暂时关闭了防火墙。

      技术分享

      注:2、3两个步骤需在master端和slave端都执行。
      (4)master部署
        该步骤需在master端执行,进行master的部署,期间需要手动输入slave端IP地址,需要授权的用户名和密码。
        需记下mysql-bin的编号(即后边的数字000001)和POS点(即410)。
    

      技术分享

    
      (5)slave部署
      这一步,输入slave后需要手工指定master端IP,及master端的mysql-bin编号及POS点数据。并输入同步用户名及秘密(需于master设置的用户名及密码一致)。

      技术分享


      (6)查看状态:
        master及slave都建立好后,可以在slave上查看slave状态,来确定是否部署成功及状态是否正常。


      技术分享

      (7)测试:
      我们在master端数据库内创建一个新数据库
      
技术分享
 
      然后查看slave端数据库,新数据库已自动同步到slave上,mysql主从同步建立成功!
      
 
     技术分享

脚本代码如下:



#!/bin/bash

#by LiuPengfang -----2015/08/09

#Auto-mysql_master-slave

#---------------------------------菜单--------------------------------------

echo "----------------------------------------------------"

echo -e "\033[36m----------欢迎使用Mysql主从自动搭建平台-------------\033[0m"

echo "----------------------------------------------------"

echo "请按照选项进行安装及部署:"

echo "----------------------------------------------------"

echo "|【install】| 软件包下载及安装                     |"

echo "----------------------------------------------------"

echo "|【server】 | Mysql服务调整                        |"

echo "----------------------------------------------------"

echo "|【master】 | Master部署                           |"

echo "----------------------------------------------------"

echo "|【slave】  | Slave部署                            |"

echo "----------------------------------------------------"

echo "|【monitor】| 查看监控状态                         |"

echo "----------------------------------------------------"

echo "|【help】   | 帮助                                 |"

echo "----------------------------------------------------"

echo "|【q】      | 退出                                 |"

echo "----------------------------------------------------"

#---------------------------------下载安装------------------------

function HELP (){

echo -e "\033[33m

-------------------------------------------------------------------------

(1)该脚本可在任意路径运行。

(2)可手动按需求选择选项进行安装及状态查看。

(3)该脚本安装的mysql默认无密码,可在脚本安装后自行设定mysql密码。

(4)该脚本安装的mysql版本为-5.6.25,若需要其他版本请更改脚本内的软件源。

(5)该脚本需要手动指定IP、同步用户名、同步密码,按照提示输入即可

-------------------------------------------------------------------------\033[0m"

}

#------------------------------------help--------------------------

function INSTALL (){

mkdir /mysqldir ; cd /mysqldir

echo -e "\033[35m正在下载软件包,请等待……\033[0m"

wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.25.tar.gz &>/dev/null

if [ $? -eq 0 ];then

        echo -e "\033[35m软件包下载成功!\033[0m"

else

        echo -e "\033[35m软件包下载失败,请检查网络或下载源!\033[0m"   

        exit

fi

echo -e "\033[35m正在解压软件包……\033[0m"

tar vxf mysql-5.6.25.tar.gz &>/dev/null

if [ $? -eq 0 ];then

        echo -e "\033[35m解压成功!\033[0m"

else

        echo -e "\033[35m解压失败!\033[0m"

        exit

fi

cd mysql-5.6.25

echo -e "\033[35m正在安装cmake软件包……\033[0m"

yum install cmake -y &>/dev/null

if [ $? -eq 0 ];then

        echo -e "\033[35mcmake安装成功!\033[0m"

else

        echo -e "\033[35mcmake安装失败!\033[0m"

        exit

fi

echo -e "\033[35m正在安装mysql,时间较长请耐心等待……\033[0m"

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.6 &>/dev/null

if [ $? -eq 0 ];then

        echo -e "\033[35mmysql预编译成功!\033[0m"

else

        echo -e "\033[35mmysql预编译失败!\033[0m"

        exit

fi

make && make install

if [ $? -eq 0 ];then

        echo-e  "\033[35mmysql安装成功!\033[0m"

else

        echo-e  "\033[35mmysql安装失败!\033[0m"

        exit

fi

}

#---------------------------------服务调整-----------------------------------

function SERVER (){

echo -e "\033[35m添加mysql用户……\033[0m"

chown -R mysql.mysql /usr/local/mysql5.6

cd /usr/local/mysql5.6/

echo -e "\033[35mmysql初始化mysql……\033[0m"

scripts/mysql_install_db --user=mysql &>/dev/null

if [ $? -eq 0 ];then

        echo -e "\033[35mmysql初始化成功!\033[0m"

else

        echo -e "\033[35mmysql初始化失败!\033[0m"

        exit

fi

echo -e "\033[35m重启mysql服务……\033[0m"

service mysql start &>/dev/null

if [ $? -eq 0 ];then

        echo -e "\033[35mmysql服务启动成功!\033[0m"

else

        echo -e "\033[35mmysql服务启动失败!\033[0m"

        exit

fi

alias mysql=‘/usr/local/mysql5.6/bin/mysql‘

echo -e "\033[35m关闭防火墙……\033[0m"

service iptables stop &>/dev/null

}

#---------------------------------Master部署----------------------------------

function MASTER (){

cat /etc/my.cnf |grep "log-bin=mysql-bin"

if [ $? -eq 0 ];then

        echo -e "\033[35m配置信息导入成功!\033[0m"     

fi

echo -e "\033[35m重启mysql服务……\033[0m"        

service mysql restart &>/dev/null

if [ $? -eq 0 ];then

fi

read -p "请输入slave服务器IP:" i

read -p "请输入同步使用的用户名:" USER_MY

read -p "请输入同步使用的密码:" PASS_MY

/usr/local/mysql5.6/bin/mysql -uroot -e "flush privileges;"

echo -e "\033[36m您的mysql-编号为:$MY_BIN\033[0m"

echo -e "\033[36m您的mysql-POS点为:$MY_POS\033[0m"

}

#---------------------------------Slave部署-----------------------------------

function SLAVE (){

cat /etc/my.cnf |grep "server-id = 2"

if [ $? -eq 0 ];then

        echo -e "\033[35mmysql配置信息已存在。\033[0m"

else

        sed -i ‘s/\[mysqld\]/&\nserver-id = 2/‘ /etc/my.cnf

        echo -e "\033[35mmysql配置信息导入成功!\033[0m"

fi

echo -e "\033[35m重启mysql服务……\033[0m"

service mysql restart &>/dev/null

if [ $? -eq 0 ];then

        echo -e "\033[35mmysql服务启动成功!\033[0m"

else

        echo -e "\033[35mmysql服务启动失败!\033[0m"

        exit

fi

read -p "请输入master服务IP:" i

read -p "请输入master mysql-编号:" MY_BIN

read -p "请输入master mysql-POS:" MY_POS

read -p "请输入同步使用的用户名:" USER_MY

read -p "请输入同步使用的密码:" PASS_MY

/usr/local/mysql5.6/bin/mysql -uroot -e "flush privileges;"

/usr/local/mysql5.6/bin/mysql -uroot -e "start slave;"

}

#---------------------------------监控同步状态-------------------------------

function MONITOR (){

if [[ $SLAVE_IO = Yes ]];then

        echo -e "\033[36mThe Slave_IO is Yes!\033[0m"

elif [[ $SLAVE_IO = Connecting ]];then

        echo -e "\033[36m请检查您的防火墙配置!\033[0m"

else

        echo -e "\033[36mThe Slave_IO is NO!\033[0m"

        exit

fi

if [[ $SLAVE_SQL = Yes ]];then

        echo -e "\033[36mThe Slave_IO is Yes!\033[0m"

elif [[ $SLAVE_SQL = Connecting ]];then

        echo -e "\033[36m请检查您的防火墙配置!\033[0m"

else

        echo -e "\033[36mThe Slave_IO is NO!\033[0m"

        exit

fi

if [[ $SLAVE_IO = Yes && $SLAVE_SQL = Yes ]];then

        echo -e "\033[35mMysql主从同步建立成功!\033[0m"

else

        echo -e "\033[35mMysql主从同步建立失败!\033[0m"

fi

}

#--------------------------------模块调用-------------------------------------

read -p "请输入您要进行的选项:" i

PATH_AUTO=$(pwd)

case $i in

        install)

        INSTALL

        cd $PATH_AUTO ; sh auto_mysql_M-S.sh

        ;;

        server)

        SERVER

        cd $PATH_AUTO ; sh auto_mysql_M-S.sh

        ;;

        master)

        MASTER

        cd $PATH_AUTO ; sh auto_mysql_M-S.sh

        ;;

        slave)

        SLAVE

        cd $PATH_AUTO ; sh auto_mysql_M-S.sh

        ;;

        monitor)

        MONITOR

        cd $PATH_AUTO ; sh auto_mysql_M-S.sh

        ;;

        help)

        HELP

        cd $PATH_AUTO ; sh auto_mysql_M-S.sh

        ;;

        q)

        exit

        ;;

        *)

        echo -e "\033[36m请输入正确选项!\033[0m"

        cd $PATH_AUTO ; sh auto_mysql_M-S.sh

        ;;

esac

                    


本文出自 “IT网络” 博客,请务必保留此出处http://liupengfang1015.blog.51cto.com/6627801/1683103

Mysql主从搭建脚本

标签:mysq   脚本   主从备份   

原文地址:http://liupengfang1015.blog.51cto.com/6627801/1683103

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!