mysql配置主主脚本

时间:2021-12-07 01:18:50

脚本说明:

1.可用于建立mysql数据库主主(主从)

2.可以用于快速恢复mysql数据库主主(主从)

3.可用于查看mysql数据库同步状态

4.可用于mysql数据库用户查看

 

先决条件:

1.mysql数据库已经安装好,root账号开启远程登陆权限或有其它有远程管理权限的账号

2.两台mysql已经开启日志(log-bin=mysql-bin),且server-id不一致(分别为server-id=1,server-id=2)

3.脚本可以在任意一台安装有mysql客户端的电脑执行(可以连接到主备mysql数据库)

4.两台mysql数据库完全一致,包括版本和存储的数据

 

脚本:

#!/bin/bash
#mysql管理用户名及密码
user=root
passwd=123456

#mysql用于同步的用户名及密码
slaveUser=slave
slavePasswd=123456

#创建slave用户用于同步
slave_create()
{
mysql -u$user -p$passwd -h$1 <<EOF
grant replication slave on *.* to "$slaveUser"@‘%‘ identified by "$passwd";
flush privileges;
EOF
}

#查看mysql中的用户
user_status()
{
mysql -u$user -p$passwd -h$1 -e "select host,user from mysql.user"
}

#开启主从
#参数说明:$1为主服务器ip,$2为从服务器ip
slave_start()
{
#获取主服务器master信息
file=`mysql -u$user -p$passwd -h$1 -e "show master status"|grep mysql|awk ‘{print $1}‘`
position=`mysql -u$user -p$passwd -h$1 -e "show master status"|grep mysql|awk ‘{print $2}‘`
#开启主从
mysql -u$user -p$passwd -h$2 <<EOF
stop slave;
reset slave all;
change master to
master_host="$1",
master_user="$slaveUser",
master_password="$slavePasswd",
master_port=3306,
master_log_file="$file",
master_log_pos=$position,
master_connect_retry=30;
start slave;
EOF
}

#输出对应mysql服务器slave同步状态
slave_status()
{
echo "$1 slave status:"
mysql -u$user -p$passwd -h$1 -e "show slave statusG"|grep Running:
}

#停止slave,并输出状态
slave_stop()
{
echo "$1 slave is stopping..."
mysql -u$user -p$passwd -h$1 -e "stop slave"
}

 

使用相关功能直接调用函数,如两台新的mysql服务器建立主主,调用过程:

ip1=192.168.100.190
ip2=192.168.100.191

#create slave user
slave_create $ip1
slave_create $ip2

#check all mysql user
#user_status $ip1
#user_status $ip2

#start slave
slave_start $ip1 $ip2
slave_start $ip2 $ip1

#check slave status
slave_status $ip1;
slave_status $ip2;

#stop slave

#slave_stop $ip1;
#slave_stop $ip2;