脚本说明:
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;