mha+mysql+keepalived+atlas实现mysql高可用、读写分离

###mysql主从复制###

这里需要一主两从三台服务器192.168.10.177(主),192.168.10.178(主备),192.168.10.179(从)

更改master my.cnf

log_bin = mysql-bin

server_id = 1

更改主备slave my.cnf

log_bin = mysql-bin

server_id = 2

更改slave my.cnf

log_bin = mysql-bin

server_id = 3

这三台服务器依次授权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin@157' WITH GRANT OPTION;

配置主从复制

在主服务器上查看日志状态

show master status;

 在主备和从服务器配置复制

change master to master_host='192.168.10.177',

master_user='root',

master_pass word='admin@157',

master_port=3306,

master_log_file='mysqlbin.000001',

master_log_pos=120;

 在主备和从服务器启动slave,并查看状态

start slave;

show slave status\G 

IO和SQL进程显示为yes则正常

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

 

###服务器配置###

主机名修改,以控制节点示范

修改/etc/sysconfig/network

HOSTNAME=mha176

/etc/hosts

127.0.0.1 mha176

192.168.10.176 mha76

192.168.10.177 master177

192.168.10.178 slave178
192.168.10.179 slave179

ssh免密登录,以控制节点示范

ssh-keygen   -t rsa  

...一路回车 ...   

ssh-copy-id slave的IP或主机名

ssh-copy-id 192.168.10.177

ssh-copy-id 192.168.10.178

ssh-copy-id 192.168.10.179

 

###mha安装###

用root用户在四个节点执行下面的操作192.168.10.176(控制节点),192.168.10.177(主),192.168.10.178(主备),192.168.10.179(从)

安装一个epel源

centos6
wget -O /etc/yum.repos.d/epel-6.repo http://mirrors.aliyun.com/repo/epel-6.repo
centos7
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo

主从都安装好依赖包
yum install -y  perl perl-DBI  perl-IO-Socket-SSL 

yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes 

 下载mha安装包

下载地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads
在主、主备、从上用root用户执行下面的操作。

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

用root用户在控制节点安装

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

 

###mha配置###

 

创建配置文件/etc/masterha/app1.cnf,内容如下
[server default]
manager_log=/data/masterha/app1/manager.log
manager_workdir=/data/masterha/app1
master_binlog_dir=/usr/local/mysql/data
password=admin@157
ping_interval=1
remote_workdir=/data/masterha/app1
repl_password=admin@157
repl_user=root
ssh_user=root
user=root

[server1]
hostname=192.168.10.177
port=3306

[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.10.178
port=3306

[server3]
hostname=192.168.10.179
port=3306

检查主机之间ssh通讯状态,状态必须为All SSH connection tests passed successfully.才能进行后面操作;

masterha_check_ssh --conf=/etc/masterha/app1.cnf

检查整个复制环境,状态必须为MySQL Replication Health is OK.才能进行后面操作

masterha_check_repl --conf=/etc/masterha/app1.cnf

检查mha manager的状态

masterha_check_status --conf=/etc/masterha/app1.cnf

启动

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

 

###主库、主备绑定VIP###

安装keepalived

yum  -y install keepalived

更改配置文件keepalived.conf,以主库为例

! Configuration File for keepalived

global_defs {
router_id LVS_DEVEL
}

vrrp_script Monitor_mysql {
script "/usr/local/monitor_mysql.sh"
interval 2
weight 2
}

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
mcast_src_ip 192.168.10.177
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
Monitor_mysql
}
virtual_ipaddress {
192.168.10.173
}
}

创建mysql监控脚本,并更改权限

touch  /usr/local/monitor_mysql.sh

#!/bin/bash
pid=`ps -ef |grep mysql |grep -v grep | grep -v monitor_mysql.sh | awk '{printf $2}'`
if [ ! -n "$pid" ];then
service mysql start
sleep 5
pid=`ps -ef |grep mysql |grep -v grep | grep -v monitor_mysql.sh | awk '{printf $2}'`
if [ ! -n "$pid" ];then
service keepalived stop
service network restart
fi
fi

更改权限

chmod u+x  /usr/local/monitor_mysql.sh

 

未完待续...

posted @ 2019-05-09 15:27  等待与盼望  阅读(322)  评论(0编辑  收藏  举报