mysql高可用双主+keepalived

mysql高可用双主+keepalived

#关闭防火墙和selinux

环境介绍:两台mysql数据库 centos7.9 数据库版本5.7.20

master01 192.168.52.10

master02 192.168.52.20

1)安装mysql,保持两台数据库的数据一致性

我这里使用脚本安装。

cat mysql.sh

#!/bin/bash

rpm -qa | grep mariadb &> /dev/null

rpm -e mariadb --nodeps &> /dev/null

tar -zxf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src

cd /usr/local/src

mv mysql-5.7.38-linux-glibc2.12-x86_64/ /usr/local/mysql

cd /usr/local/mysql

groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql

mkdir /usr/local/mysql/data

chown -R mysql:mysql /usr/local/mysql

sed -i '$a export PATH=$PATH:/usr/local/mysql/bin' /etc/profile

source /etc/profile

echo "" > /etc/my.cnf

sed -i '1s/^/[mysqld]/' /etc/my.cnf

sed -i '1a basedir=/usr/local/mysql' /etc/my.cnf

sed -i '2a datadir=/usr/local/mysql/data' /etc/my.cnf

sed -i '3a pid-file=/usr/local/mysql/data/mysqld.pid' /etc/my.cnf

sed -i '4a log-error=/usr/local/mysql/data/mysql.err' /etc/my.cnf

sed -i '5a socket=/tmp/mysql.sock' /etc/my.cnf

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

cd support-files/

cp mysql.server /etc/init.d/

service mysql.server start

ss -anplt | grep 3306

mysqlpasswd=`awk -F 'root@localhost: ' '/temporary password/{print $2}' /usr/local/mysql/data/mysql.err`

alias mysql=/usr/local/mysql/bin/mysql

mysqladmin -uroot -p$mysqlpasswd password 123

source /etc/profile

mysql -uroot -p123

2)创建用户,先做一个主从复制在做另一个。

master01上操作:

mysql -uroot -p123-u:指定用户 -p:密码

grant Replication client, Replication slave on *.* to rep@’192.168.52.%’identified by ‘123’;

3)修改mysql主配置文件/etc/my.cnf

vim /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

pid-file=/usr/local/mysql/data/mysqld.pid

log-error=/usr/local/mysql/data/mysql.err

socket=/tmp/mysql.sock

log_bin=mysql-bin#开启二进制日志

server_id=1#设置sever_id,两台不能一致

relay-log=relay-bin #开启中继日志

relay_log_index=slave-relay-bin.index #设置中继日志的位置

auto_increment_increment=2#自增长字段每次递增的量,有几台服务器就设为几。

auto_increment_offset=1#用来设定数据库中自动增长的起点。

binlog_format=mixed#二进制日志的类型

#重启mysql服务

/etc/init.d/mysql.server restart

4)查看二进制日志的位置

show master status;

master2上操作:让master2从master1配置主从复制

5)配置change master to参数

Change master to

Master_host=‘192.168.52.20’,

Master_user=‘rep’,

Master_password=’123’,

Master_log_file=‘mysql-bin.000001',

master_log_pos=154;

6)启动slave,并查看状态。

Start slave;

show slave status\G

#查看到SQL线程和IO线程都为yes,主从复制就配置成功了。

#配置第二个主从复制

1)创建用户

master02上操作:

mysql -uroot -p123-u:指定用户 -p:密码

grant Replication client, Replication slave on *.* to rep@’192.168.52.%’identified by ‘123’;

3)修改mysql主配置文件/etc/my.cnf

修改主配置文件中的server_id=2,auto-increment-offset=2 其他配置同上。

#重启mysql服务

/etc/init.d/mysql.server restart

4)查看二进制日志的位置

show master status;

master1上操作:让master1从master2配置主从复制

5)配置change master to参数

Change master to

Master_host=‘192.168.52.20’,

Master_user=‘rep’,

Master_password=’123’,

Master_log_file=‘mysql-bin.000001',

master_log_pos=472;

6)启动slave,并查看状态。

Start slave;

show slave status\G

#查看到SQL线程和IO线程都为yes,主从复制就配置成功了。

#安装keepalived实现高可用,注意两台都要安装配置一样!!!

1)下载keepalived tar包

wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz

2)安装依赖

yum install kernel-devel openssl-devel popt-devel

3)解包编译安装

tar zxf keepalived-2.0.20.tar.gz

cd keepalived-2.0.20/

./configure --prefix=/ && make && make install

4)修改主配文件/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id master-1

vrrp_skip_check_adv_addr

vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_instance VI_1 {

state BACKUP

interface ens33

virtual_router_id 51

priority 100

nopreempt

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.52.100

}

}

virtual_server 192.168.52.100 3306 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 50

protocol TCP

real_server 192.168.52.20 3306 {

weight 1

notify_down /etc/keepalived/bin/mysql.sh

TCP_CHECK {

connect_timeout 3

retry 3

delay_before_retry 3

}

}

}

参数解释:

global_defs:全局配置

router_id master-1 //表示keepalived的标识不能重复

vrrp_instance VI_1:vrrp实例配置

state BACKUP //两台都是backup根据优先级选择主从。

interface ens33 //指定HA监测网络的接口

priority 100 //优先级高的为master

nopreempt //不抢占,即允许一个priority比较低的节点作为master,即使有priority更高的节点启动

virtual_ipaddress //VIP区域,指定vip地址

192.168.52.100

virtual_server 192.168.52.100 3306 //设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开

lb_kind DR //设置LVS实现负载均衡的机制,有NAT、TUN、DR

real_server 192.168.52.10 3306 //配置服务节点1,需要指定real server的真实IP地址和端口

notify_down /etc/keepalived/bin/mysql.sh //检测到realserver的mysql服务down后执行的脚本

#创建一个bin目录,编写keepalived脚本

mkdir /etc/keepalived/bin -p

vim mysql.sh

#!/bin/bash

pkill keepalived

#赋予权限

chmod +x mysql.sh

5)master02:

修改主配文件/etc/keepalived/keepalived.conf

修改router_id为 master-2

修改优先级为50

修改真实ip地址:192.168.52.20 3306

其他配置同上

6)启动keepalived服务

systemctl start keepalived.service

#查看VIP地址为:192.168.52.100

模拟故障:

把mysql服务停掉,查看VIP地址会不会漂移到另一台,即可!

/etc/init.d/mysql.server stop

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值