Mysql主从搭建脚本

前言:(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

时间: 2024-10-12 07:47:17

Mysql主从搭建脚本的相关文章

Mysql 主从搭建

Mysql  主从搭建 操作系统: [[email protected] ~]# cat /etc/redhat-release CentOS release 6.8 (Final) Master(主):192.168.137.32 Slave (从) :192.168.137.33 第一步:在CentOS6.x下安装MySQL数据库 这里我直接用脚本安装mysql5.7的 vim auto_install_mysql.sh #!/bin/bash yum install  -y  wget w

简单的mysql主从搭建及恢复

mysql主从搭建: 怎么安装mysql数据库,这里不讲,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修改主服务器master:   #vi /etc/my.cnf       [mysqld]       log-bin=mysql-bin   //[必须]启用二进制日志       server-id=1       //[必须]服务器唯一ID 3.修改从服务器slave:  

docker部署django项目、mysql主从搭建、django实现读写分离

目录 docker部署django项目 1.1 基于python基础镜像 将本地django项目打包并发到远程服务器上 将服务器上的.zip django项目解压 部署的具体流程 1.2 基于dockerfile 2 mysql主从搭建 3 django实现读写分离 我们使用python镜像源构建的出的容器,是一个纯净的debian系统下的python环境,在容器内部要想安装vim.nginx等,就不能使用yum install ...了,需要使用apt-get源.首先更新apt-get源,使用

MySQL主从搭建与配置

MySQL主从(MySQL replication),主要用于MySQL的实时备份或者读写分离.在配置之前先做一下准备工作,配置两台MySQL服务器,如果你的机器不能同时跑两台Linux虚拟机,那么可以考虑在同一个机器上跑两个MySQL服务. MySQL主从的原理非常简单,总结一下: (1)每个主从仅可以设置一个主. (2)主在执行SQL之后,记录二进制log文件(bin-log) (3)从连接主,并获取主的bin-log,存于本地relay-log,并从上次执行的位置起执行SQL,一旦遇到错误

mysql主从监控脚本:

在大型网站中对数据库往往都是做主从设计的,要是根据设计模式读写都只是进行再主库上面,那么从服务器往往是智能起了备份的作用,有时候备份端口了适当时候手工添加就好,但是要是网站做了读写分离,不及时发现那就是灾难性的了:(一般出现从库跟不上可以暂时先把读也切换到主上去.等从恢复好了再切回来):下面根据这个给出一条主从监控脚本: #!/bin/bash#check MySQL_Slave Status #crontab time 00:10 MYSQLPORT=`netstat -na|grep "LI

shell监控MySQL主从状态脚本两则

内容为自己的一点总结,如有不对欢迎狠劲儿拍砖 本文来自http://yijiu.blog.51cto.com/转载请经博主同意,翻版可耻 监控主从复制正常与否 相比各位都应该知道,监控主从是否工作正常,涉及命令如下: show slave status\G; 那么,我们需要关注的参数如下: 1. 首先查看SQL和IO线程是否为YES状态(想必各位都明白了) 2. 是否有延迟 是否大于0   #一般生成环境延迟是否大于500秒,如果大于500则报警,如大于1000则严重报警 #比如传递一个sql到

mysql主从搭建详细步骤

一 .系统环境:Centos 6.5 MySQL版本:mysql-5.5.25a Master:192.168.4.9 Slave :192.168.4.10 二.主从配置需要注意的点 主从服务器操作系统版本尽量保持一致 Master和Slave版本要一致 Slave导入的Master备份数据要完整 Master开启了二进制日志 Slave开启了中继日志 Master和Slave  server_id值,唯一 三.主从配置步骤 Master配置 查看server-id是否唯一 建立主从授权用户

Shell开发MySQL主从监控脚本

监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员. 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误. 阶段3:3)如果IO和SQL线程出现异常,则通知邮件给管理员 使用数组技术实现上述脚本(获取主从判断及错误号部分) 主从监控脚本如下: #!/bin/bash CODE=( 1158 1159 1008 1007 1062 2003 ) fun_Base(){ #1.定义变量 #1.1

mysql主从搭建-yum篇

前提:在两台机子先确认selinux,iptables关闭,做好yum源 一.搭建 在143上做如下操作: yum install  -y  mysql mysql-server 然后修改/etc/my.cnf在mysqld模块里添加两行 log-bin=mysql-bin server-id = 1 然后启动msyql       /etc/init.d/mysql  start 在144上做如下操作: yum install –y  mysql mysql-server 然后修改/etc/m