mysql-preoxy-MHA集群部署

主机名ip地址
Mysql-poxy192.168.2.218
Mysql-master192.168.2.219
Mysql-salve01192.168.2.220
Mysql-slave02192.168.2.221

Mysql-MHA 192.168.2.222

MYSQL-主从
步骤
mysql-master

安装mysql
配置server-id 开启二进制日志
创建从连接账号
Show master status 查看二进制日志文件名和pos进行同步

Slave

安装mysql
配置server-id 开启二进制日志
关闭日志
连接主提供账号
启动日志查询连接是否成功

开始操作

Mysql-master

service iptables stop
yum -y install mysql mysql-server  
vim /etc/my.cnf
log-bin=mysql-bin
server-id=1
/etc/init.d/mysqld start
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
flush privileges;
flush tables with read lock;
 ;

Slave01

service iptables stop
yum -y install mysql mysql-server     
vim /etc/my.cnf
log-bin=mysql-bin
server-id=2
/etc/init.d/mysqld start
stop slave;
CHANGE MASTER TO MASTER_HOST="192.168.2.219",MASTER_USER="slave",MASTER_PASSWORD="123456",MASTER_LOG_FILE="mysql-bin.000003",MASTER_LOG_POS=406;
start slave;

show slave status\G; 显示两个yes成功

链接之后到主上DB1 进行解锁表 unlock tables

Slave02

service iptables stop
yum -y install mysql mysql-server     
vim /etc/my.cnf
log-bin=mysql-bin
server-id=2
/etc/init.d/mysqld start
stop slave;
CHANGE MASTER TO MASTER_HOST="192.168.2.219",MASTER_USER="slave",MASTER_PASSWORD="123456",MASTER_LOG_FILE="mysql-bin.000003",MASTER_LOG_POS=406;
start slave;

show slave status\G; 显示两个yes成功

链接之后到主上DB1 进行解锁表 unlock tables

Mysql-proxy
安装步骤
得到安装包,解压,改名 创建用户mysql-proxy
配置环境变量
启动脚本编写

开始操作

wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz
useradd mysql-proxy
tar xvf mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz
mv mysql-proxy-0.8.4-linux-el6-x86-64bit /usr/local/mysql-proxy
export PATH=$PATH:/usr/local/mysql-proxy/bin/
chown -R mysql-proxy.mysql-proxy /usr/local/mysql-proxy/

启动命令

/usr/local/mysql-proxy/bin/mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file="/var/log/mysql-proxy.log" --plugins="proxy" --proxy-backend-addresses="192.168.2.219:3306" --proxy-read-only-backend-addresses="192.168.2.220:3306" --proxy-read-only-backend-addresses="192.168.2.221:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins="admin" --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"

在主master-mysql创建一个用户

mysql> CREATE USER 'test'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'test'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

通过4040端口进行远程连接然后执行命令创建数据库
登录4041查询有up 证明有写 如果不写则会显示unknown 读也是一个道理

已经读写分离成功
MYSQL-MHA
安装步骤
SSH 免密钥通信
配置主机名
创建mysql账号用于连接
配置主配置文件
执行自带脚本检测SSH是否通信成功
执行自带脚本检测主从复制正常
模拟宕机测试

开始操作

#!/bin/bash
rm -rf  ~/.ssh/id_rsa*

/usr/bin/expect << EOF
set timeout 10  

spawn ssh-keygen -t rsa

expect "Enter file in which to save the key (/root/.ssh/id_rsa):" { send "\r" }
expect "Enter passphrase (empty for no passphrase):" { send "\r" }
expect "Enter same passphrase again:" { send "\r" }

expect eof
EOF
./auto_key.sh

#!/usr/bin/expect  
set timeout 10  
set ip [lindex $argv 0]  

spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$ip

expect {
           "Are you sure you want to continue connecting (yes/no)?" {
           send "yes\r"
           expect "password:"
               send "doingadmin\r"
           }
           "password:" {
               send "doingadmin\r"
           }
           "Now try logging into the machine" {
           }
       }
expect eof
./auto_ssh.sh


#!/bin/bash
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
chkconfig mysqld on
chkconfig iptables off

local_ip=$(ifconfig |grep "Bcast"|awk '{print $2}'|awk -F ':' '{print $2}')
for i in $(cat /etc/hosts|grep "192.168.2.*")
do
       ./auto_ssh.sh $(echo $i|awk '{print $1}')

       if [ $local_ip == $(echo $i|awk '{print $1}') ]

       then
       name=$(echo $i|awk '{print $2}')

       sed -i "s/HOSTNAME=.*/HOSTNAME=$name/g" /etc/sysconfig/network

       fi

done
reboot
./ auto_name.sh





cat >> /etc/hosts << EOF
192.168.2.218   mysql-poxy
192.168.2.219   mysql-master
192.168.2.220   mysql-slave01
192.168.2.221   mysql-slave02
192.168.2.222 MHA
EOF




for i in {218..221};do ./auto_ssh.sh   192.168.2.$i ;done
for i in {218..221};do /usr/bin/scp -r {auto_ssh.sh,auto_key.sh,auto_name.sh} 192.168.2.$i:/root/ ;done
for i in {218..221};do /usr/bin/scp -r /etc/hosts root@192.168.2.$i:/etc/hosts ;done



grant all privileges on *.* to 'mha_rep'@'%' identified by '123456';

环境配置完成开始安装

yum install perl-DBD-MySQL –y
rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm


1
2
3
4
5	wget http://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/perl-Log-Dispatch-2.26-1.el6.rf.noarch.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/perl-Parallel-ForkManager-0.7.5-2.2.el6.rf.noarch.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/perl-Mail-Sender-0.8.16-1.el6.rf.noarch.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/perl-Mail-Sendmail-0.79-1.2.el6.rf.noarch.rpm

yum localinstall *.rpm -y


wget https://downloads.mariadb.com/files/MHA/mha4mysql-manager-0.56.tar.gz

tar xvf mha4mysql-manager-0.56.tar.gz



[root@manager ~]# tar xf mha4mysql-manager-0.56.tar.gz 
[root@manager ~]# mkdir -p /usr/local/mha/scripts
[root@manager ~]# cp mha4mysql-manager-0.56/samples/scripts/* /usr/local/mha/scripts/
[root@manager ~]# cp mha4mysql-manager-0.56/samples/conf/app1.cnf /usr/local/mha/mha.cnf
[root@manager ~]# tree /usr/local/mha/



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

masterha_check_ssh --conf=/usr/local/mha/mha.cnf
[root@manager ~]# nohup masterha_manager --conf=/usr/local/mha/mha.cnf > /tmp/mha_manager.log 2>&1 &
[root@manager ~]# ps -ef |grep masterha |grep -v 'grep'
root      1595  1140  1 23:55 pts/0    00:00:00 perl /usr/bin/masterha_mana


 


 


[root@manager ~]# vim /usr/local/mha/mha.conf #根据自己的mysql配置改动
[server default]
user=mha_manager                              #mha管理的用户名
password=123456
manager_workdir=/usr/local/mha
manager_log=/usr/local/mha/manager.log
remote_workdir=/usr/local/mha
ssh_user=root                                #上面双机互信的用户
repl_user=mharep                             #mysql复制(同步)的用户名
repl_password=passwd
ping_interval=1
  
#下面是mysql检测设置
secondary_check_script= masterha_secondary_check -s 192.168.1.2 -s 192.168.1.3 -s 192.168.1.4
#master_ip_failover_script=/usr/local/mha/scripts/master_ip_failover
#shutdown_script= /usr/local/mha/scripts/power_manager
report_script= /usr/local/mha/scripts/send_report
master_ip_online_change_script= /usr/local/mha/scripts/master_ip_online_change
  
[server1]
hostname=192.168.1.2     #写ip或者主机名都可以
ssh_port=22
master_binlog_dir=/var/mysql/log
candidate_master=1
[server2]
hostname=192.168.1.3
ssh_port=22
master_binlog_dir=/var/mysql/log
candidate_master=1
[server3]
hostname=192.168.1.4
ssh_port=22
master_binlog_dir=/var/mysql/log
no_master=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值