服务端运行
#!/bin/bash
#服务端 192.168.1.15
#主服务器 192.168.1.11,从服务器 192.168.1.12 192.168.1.13
#mha虚拟地址 192.168.1.100
#在/root下准备好此脚本和mhanode.sh脚本,mha4mysql-manager-0.56.tar.gz包以及切换脚本master_ip_failover
#在 192.168.1.15上运行此脚本
#############################################################################
#修改主机名
set_hostname(){
hostnamectl set-hostname mhacon
echo '<=====con主机名配置成功=====>'
}
#配置YUM源
set_yum(){
cat >/etc/yum.repos.d/mysql.repo <<EOF
[mysql]
name=mysql
baseurl=http://192.168.1.254/mysql
enabled=1
gpgcheck=0
EOF
echo '<=====con主机YUM配置成功=====>'
}
#传递sshkey和yum源文件,安装sshpass,修改主机名
set_ssh(){
yum -y install sshpass.x86_64 >/dev/null
ssh-keygen -f ~/.ssh/id_rsa -t rsa -N '' > /dev/null
for i in {11,12,13};
do
sshpass -p'a' ssh-copy-id 192.168.1.$i > /dev/null
done
echo '<=====con主机免密配置成功=====>'
}
#本机安装perl相关依赖包和mha4mysql-node
install_software(){
yum -y install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-ExtUtils-MakeMaker perl-CPAN mha4mysql-node > /dev/null
echo '<=====con主机软件安装成功=====>'
}
#解压缩mha4mysql-manager-0.56.tar.gz包并编译安装
install_mha(){
tar -xf mha4mysql-manager-0.56.tar.gz;cd mha4mysql-manager-0.56
perl Makefile.PL > /dev/null
make;make install > /dev/null
cd
echo '<=====con主机manager配置成功=====>'
}
#创建mha工作目录并把配置文件和脚本复制到目录下
set_failover(){
mkdir /etc/mha
cp master_ip_failover /etc/mha
sed -i '/$vip/s/4.60/1.100/' /etc/mha/master_ip_failover
chmod +x /etc/mha/master_ip_failover
echo '<=====con主机failover配置成功=====>'
}
#创建app1.cnf
create_cnf(){
cat >/etc/mha/app1.cnf <<EOF
[server default]
manager_log=/var/log/manager.log
manager_workdir=/etc/mha
master_ip_failover_script=/etc/mha/master_ip_failover
repl_user=repluser
repl_password=xxx
ssh_port=22
ssh_user=root
user=mhamon
password=xxx
[server1]
candidate_master=1
hostname=192.168.1.11
port=3306
[server2]
candidate_master=1
hostname=192.168.1.12
port=3306
[server3]
candidate_master=1
hostname=192.168.1.13
port=3306
EOF
echo '<=====con主机my.cnf配置成功=====>'
}
#复制mhanode.sh脚本并运行
set_node(){
for i in {11..13}
do
scp -r /root/mhanode.sh root@192.168.1.$i:/root
ssh 192.168.1.$i "bash mhanode.sh;rm -f mhanode.sh"
done
echo '<=====脚本已在node节点运行=====>'
}
#设置从服务配置
set_slave(){
for i in {12,13}
do
scp -r /root/mhaslave.sh root@192.168.1.$i:/root
ssh 192.168.1.$i "bash mhaslave.sh;rm -f mhaslave.sh"
done
echo '<=====slave已在node节点配置=====>'
}
#开启主服务器虚拟IP
set_vip(){
ssh 192.168.1.11 ifconfig eth0:1 192.168.1.100/24 up
echo '<=====VIP已启动=====>'
}
#启动各节点slave
start_slave(){
for i in {12,13}
do
ssh 192.168.1.$i "mysql -uroot -p'NSD2021@tedu.cn' -e'start slave;'"
done
sleep 5
echo '<=====节点slave启动成功=====>'
}
#启动管理服务
start_mha(){
masterha_check_ssh --conf=/etc/mha/app1.cnf
masterha_check_repl --conf=/etc/mha/app1.cnf
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
echo '<=====mha集群配置成功=====>'
}
main(){
set_hostname
set_yum
set_ssh
install_software
install_mha
set_failover
create_cnf
set_node
set_slave
set_vip
start_slave
start_mha
}
main
echo "脚本执行成功!完结撒花!!!"
自动传到节点运行
#!/bin/bash
#配置主机名
set_hostname(){
local num=$(cat /etc/sysconfig/network-scripts/ifcfg-eth0 |awk -F . '/IPADDR/{print $4}')
hostnamectl set-hostname mha$num
echo "<=====完成node主机名的配置=====>"
}
#配置yum源
set_yum(){
cat > /etc/yum.repos.d/mysql.repo<<EOF
[mysql]
name=mysql
baseurl=http://192.168.1.254/mysql
enabled=1
gpgcheck=0
EOF
echo "<=====完成node的YUM源配置=====>"
}
#安装所需软件
install_software(){
yum clean all
yum -y install sshpass.x86_64 gcc pcre-devel pkgconfig autoconf automake perl-ExtUtils-MakeMaker perl-CPAN perl-DBI perl-DBD-MySQL mysql-com* mha4mysql-node-0.56-0.el6 > /dev/null
echo "<=====完成node的软件安装=====>"
}
#免密
ssh_pass(){
ssh-keygen -f ~/.ssh/id_rsa -t rsa -N '' > /dev/null
for i in {11,12,13};
do
sshpass -p'a' ssh-copy-id 192.168.1.$i > /dev/null
done
echo "<=====完成node的SSH免密配置=====>"
}
#启动服务
start_mysqld(){
systemctl start mysqld
}
#修改mysql密码
set_password(){
local pass=$(awk '/root@localhost/{print $11}' /var/log/mysqld.log)
mysqladmin -uroot -p$pass password xxx
echo "<=====完成node的mysql初始化密码=====>"
}
#配置my.cnf文件
set_mycnf(){
local num=$(cat /etc/sysconfig/network-scripts/ifcfg-eth0 |awk -F . '/IPADDR/{print $4}')
sed -i '4a server_id = '$num'\nlog-bin = master'$num'\nplugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"\nrpl_semi_sync_master_enabled=1\nrpl_semi_sync_slave_enabled=1\nrelay_log_purge=0' /etc/my.cnf
echo "<=====完成node的my.cnf配置=====>"
}
#重启服务
restart_mysqld(){
systemctl restart mysqld
}
#添加监控、主从同步用户
create_user(){
mysql -uroot -pxxx -e'grant replication slave on *.* to repluser@"%" identified by "xxx";'
mysql -uroot -pxxx -e'grant all on *.* to mhamon@"%" identified by "xxx";'
echo "<=====node监控、主从同步用户创建成功=====>"
}
#打开binlog,设置主从
set_binlog(){
if [ $HOSTNAME == mha11 ];then
ifconfig eth0:1 192.168.1.100/24 up
else
a=$(ssh 192.168.1.11 'mysql -uroot -pxxx -e"show master status;"' | awk 'NR==2{print $1}')
b=$(ssh 192.168.1.11 'mysql -uroot -pxxx -e"show master status;"' | awk 'NR==2{print $2}')
mysql -uroot -p'xxx' -e'change master to master_host="192.168.1.11",master_user="repluser",master_password="xxx",master_log_file="'"$a"'",master_log_pos='"$b"';'
fi
echo "<=====完成node的主从配置=====>"
}
#运行脚本
main(){
set_hostname
set_yum
install_software
ssh_pass
start_mysqld
set_password
set_mycnf
restart_mysqld
create_user
}
main
发到各节点运行
#!/bin/bash
#发到各个节点运行
########################################################################
a=$(ssh 192.168.1.11 'mysql -uroot -pxxx -e"show master status;"' | awk 'NR==2{print $1}')
b=$(ssh 192.168.1.11 'mysql -uroot -pxxx -e"show master status;"' | awk 'NR==2{print $2}')
mysql -uroot -p'xxx' -e'change master to master_host="192.168.1.11",master_user="repluser",master_password="xxx",master_log_file="'"$a"'",master_log_pos='"$b"';'