MySQL双主+Keepalived高可用
原文转自:https://www.cnblogs.com/itzgr/p/10233932.html
作者:木二
目录
- 一 基础环境
- 二 实际部署
- 2.1 安装MySQL
- 2.2 初始化MySQL
- 2.3 master01 my.cf配置
- 2.4 创建账号
- 2.5 smaster02 my.cf配置配置
- 2.6 创建账号
- 三 启动主从
- 3.1 手动同步
- 3.2 启动Master01的slave功能
- 3.3 启动Master02的slave功能
- 四 安装Keepalived
- 4.1 下载
- 4.2 Master01配置Keepalived
- 4.3 创建检测脚本
- 4.4 Master02配置Keepalived
- 4.5 创建检测脚本
- 五 功能测试
- 5.1 测试vip
- 5.2 同步测试
- 5.3 测试Keepalived切换
一 基础环境
|
主机名
|
系统版本
|
MySQL版本
|
主机IP
|
|
Master01
|
CentOS 6.8
|
MySQL 5.6
|
172.24.8.10
|
|
Master02
|
CentOS 6.8
|
MySQL 5.6
|
172.24.8.11
|
|
VIP
|
172.24.8.12
|
||
二 实际部署
2.1 安装MySQL
1 [root@Master01 ~]# yum list installed | grep mysql #查看是否存在其他MySQL组件
2 [root@Master01 ~]# yum -y remove mysql-libs.x86_64 #为避免冲突引发报错,卸载已存在的组件

1 [root@Master01 study]# yum localinstall mysql-commu* -y
2 [root@Master01 ~]# chkconfig --list | grep mysqld #查看MySQL是否加入启动项
3 [root@Master01 ~]# chkconfig mysqld on
2.2 初始化MySQL

1 [root@Master01 ~]# service mysqld start
2 [root@Master01 ~]# mysql_secure_installation
3 [root@Master01 ~]# service iptables stop
4 [root@Master01 ~]# chkconfig iptables off
5 [root@Master01 ~]# vi /etc/sysconfig/selinux
6 SELINUX=disabled

2.3 master01 my.cf配置

1 [root@Master01 ~]# vi /etc/my.cnf
2 [mysqld]
3 ……
4 server-id=1 #设置主服务器master的id
5 log-bin=mysql-bin #配置二进制变更日志命名格式
6 replicate-wild-ignore-table=mysql.%
7 replicate-wild-ignore-table=test.%
8 replicate-wild-ignore-table=information_schema.%


1 # 不同步哪些数据库
2 binlog-ignore-db = mysql
3 binlog-ignore-db = test
4 binlog-ignore-db = information_schema
5 # 只同步哪些数据库,除此之外,其他不同步
6 binlog-do-db = mysqltest

1 replicate-wild-ignore-table=mysql.% #从库配置不同步表
2 replicate-wild-do-table=test.% #从库配置需要同步的表
提示:不要在主库使用binlog-ignore-db和binlog-do-db,也不要在从库使用replicate-wild-ignore和replicate-wild-do-table。
2.4 创建账号

1 [root@Master01 ~]# mysql -uroot -p
2 Enter password:
3 mysql> grant replication slave on *.* to 'repl_user'@'172.24.8.11' identified by 'x12345678';
4 mysql> grant all privileges on *.* to 'root'@'172.24.8.%' identified by 'x120952576' with grant option;
5 mysql> flush privileges;
6 [root@Master01 ~]# service mysqld restart
7 [root@Master01 ~]# mysql -uroot -p
8 Enter password:
9 mysql> show master status;


2.5 smaster02 my.cf配置配置

1 [root@Master02 ~]# vi /etc/my.cnf
2 [mysqld]
3 server-id=2 #设置主服务器master的id
4 log-bin=mysql-bin #配置二进制变更日志命名格式
5 replicate-wild-ignore-table=mysql.%
6 replicate-wild-ignore-table=test.%
7 replicate-wild-ignore-table=information_schema.%
8 read_only=1

2.6 创建账号

1 [root@Master02 ~]# mysql -uroot -p
2 Enter password:
3 mysql> grant replication slave on *.* to 'repl_user'@'172.24.8.10' identified by 'x12345678';
4 mysql> grant all privileges on *.* to 'root'@'172.24.8.%' identified by 'x120952576' with grant option;
5 mysql> flush privileges;
6 [root@Master02 ~]# service mysqld restart
7 [root@Master02 ~]# mysql -uroot -p
8 Enter password:
9 mysql> show master status;


master02:
三 启动主从
3.1 手动同步
3.2 启动Master01的slave功能

1 [root@Master01 ~]# service mysqld restart
2 [root@Master01 ~]# mysql -uroot -p
3 Enter password:
4 mysql> change master to master_host='172.24.8.11',
5 master_user='repl_user',
6 master_password='x12345678',
7 master_log_file='mysql-bin.000001',
8 master_port=3306,
9 master_log_pos=120;
10 mysql> start slave;
11 mysql> show slave status\G #查看slave状态


3.3 启动Master02的slave功能

1 [root@Master02 ~]# service mysqld restart
2 [root@Master02 ~]# mysql -uroot -p
3 Enter password:
4 mysql> change master to master_host='172.24.8.10',
5 master_user='repl_user',
6 master_password='x12345678',
7 master_log_file='mysql-bin.000001',
8 master_log_pos=120;
9 mysql> start slave;
10 mysql> show slave status\G #查看slave状态


四 安装Keepalived
4.1 下载

1 [root@Master01 ~]# wget http://www.keepalived.org/software/keepalived-1.3.6.tar.gz
2 [root@Master01 ~]# tar -zvxf keepalived-1.3.6.tar.gz -C /tmp/
3 [root@Master01 ~]# cd /tmp/keepalived-1.3.6
4 [root@Master01 keepalived-1.3.6]# ./configure --prefix=/usr/local/keepalived/ --sysconf=/etc --with-init=SYSV
5 #注:(upstart|systemd|SYSV|SUSE|openrc) #根据你的系统选择对应的启动方式
6 [root@Master01 keepalived-1.3.6]# make && make install
7 [root@Master01 ~]# ln -s /usr/local/keepalived/sbin/keepalived /sbin
8 [root@Master01 ~]# chmod u+x /etc/init.d/keepalived
9 [root@Master01 ~]# chkconfig --add keepalived
10 [root@Master01 ~]# chkconfig --level 35 keepalived on


4.2 Master01配置Keepalived

1 [root@Master01 ~]# vim /etc/keepalived/keepalived.conf
2 ! Configuration File for keepalived
3 global_defs {
4 notification_email {
5 x120952576@126.com
6 #表示keepalived在发生诸如切换操作时发送Email给哪些地址,邮件地址可以多个,每行一个。
7 }
8 notification_email_from Alexandre.Cassen@firewall.loc
9 smtp_server 172.24.8.10
10 smtp_connect_timeout 30
11 router_id LVS_DEVEL
12 }
13 vrrp_instance VI_1 {
14 state BACKUP
15 interface eth0
16 virtual_router_id 51
17 #这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址
18 priority 100
19 advert_int 1
20 nopreempt
21 #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
22 authentication {
23 auth_type PASS
24 auth_pass 1111
25 }
26 track_script {
27 check_mysqld #执行定义的监控脚本
28 }
29 virtual_ipaddress {
30 172.24.8.12
31 }
32 }
33 vrrp_script check_mysqld {
34 script"/etc/keepalived/mysqlcheck/keepalived_check_mysql.sh "
35 interval 2
36 }

4.3 创建检测脚本

1 [root@Master01 ~]# mkdir -p /etc/keepalived/mysqlcheck/
2 [root@Master01 ~]# vi /etc/keepalived/mysqlcheck/keepalived_check_mysql.sh
3 #!/bin/bash
4 MYSQL=/usr/bin/mysql
5 MYSQL_HOST=localhost
6 MYSQL_USER=root
7 MYSQL_PASSWORD=x120952576
8 CHECK_TIME=3
9 #mysql is workingMYSQL_OK is 1 , mysql down MYSQL_OK is 0
10 MYSQL_OK=1
11 function check_mysql_helth (){
12 $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" >/dev/null 2>&1
13 if [ $? = 0 ] ;then
14 MYSQL_OK=1
15 else
16 MYSQL_OK=0
17 fi
18 return $MYSQL_OK
19 }
20 while [ $CHECK_TIME -ne 0 ]
21 do
22 let "CHECK_TIME -= 1"
23 check_mysql_helth
24 if [ $MYSQL_OK = 1 ] ; then
25 CHECK_TIME=0
26 exit 0
27 fi
28 if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
29 then
30 /etc/init.d/keepalived stop
31 exit 1
32 fi
33 sleep 1
34 done
35 [root@Master01 ~]# chmod u+x /etc/keepalived/mysqlcheck/keepalived_check_mysql.sh
36 [root@Master01 ~]# service keepalived start

4.4 Master02配置Keepalived
1 [root@Master01 ~]# scp /etc/keepalived/keepalived.conf root@127.24.8.11:/etc/keepalived/
4.5 创建检测脚本

1 [root@Master02 ~]# mkdir -p /etc/keepalived/mysqlcheck/
2 [root@Master01 ~]# scp /etc/keepalived/mysqlcheck/keepalived_check_mysql.sh root@172.24.8.11:/etc/keepalived/mysqlcheck/
3 [root@Master02 ~]# chmod u+x /etc/keepalived/mysqlcheck/keepalived_check_mysql.sh
4 [root@Master02 ~]# service keepalived start

五 功能测试
5.1 测试vip
1 [root@test ~]# mysql -uroot -h172.24.8.12 -p

1 mysql> show variables like "%hostname%";
2 mysql> show variables like "%server_id%";

5.2 同步测试

1 [root@test ~]# mysql -uroot -p
2 Enter password:
3 mysql> create database mysqltest;
4 mysql> use mysqltest;
5 mysql> create table user(id int(5),name char(10));
6 mysql> insert into user values (00001,'zhangsan');
7 在Slave从服务器上进行验证:
8 [root@Master02 ~]# mysql -uroot -p
9 Enter password:
10 mysql> show databases;
11 mysql> select * from mysqltest.user;


5.3 测试Keepalived切换
1 [root@Master01 ~]# service mysqld stop #停止Master01的MySQL
2 [root@Master01 ~]# tail -f /var/log/messages #观察Master01的日志

1 [root@Master02 ~]# tail -f /var/log/messages #观察Master02的日志

1 [root@Client ~]# mysql -uroot -h172.24.8.12 -px120952576 #客户端连接VIP

MySQL双主+Keepalived高可用的更多相关文章
- 004.MySQL双主+Keepalived高可用
一 基础环境 主机名 系统版本 MySQL版本 主机IP Master01 CentOS 6.8 MySQL 5.6 172.24.8.10 Master02 CentOS 6.8 MySQL 5.6 ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- MySQL集群搭建(6)-双主+keepalived高可用
双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用. 1 概述 1.1 keepa ...
- 基于Mysql 5.7 GTID 搭建双主Keepalived 高可用
实验环境 CentOS 6.9 MySQL 5.7.18 Keepalived v1.2.13 拓扑图 10.180.2.161 M1 10.180.2.162 M2 10.180.2.200 VIP ...
- 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境
应用背景: MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动 切换到另外一台主机.LVS和Keppalived可以设定一个VIP来实 ...
- mysql双主+keepalived【转】
简单原理 1.在两台服务器上分别部署双主keepalived,主keepalived会在当前服务器配置虚拟IP用于mysql对外提供服务 2.在两台服务器上分别部署主主mysql,用于故障切换 3.当 ...
- mysql双主+keepalived
环境 OS: centos7Mysql 版本: mysql 5.7Keepalived: keepalived-1.2.20Mysql-vip:192.168.41.100Mysql-master1: ...
- centos7下mysql双主+keepalived
一.keepalived简介 keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测 ...
- MySQL 双主+keepalived 详细文档 M-M+keepalived
1. 操作系统,系统环境,目结结构,用户,权限,日志路径,脚本2. 配置规范化 1.1 操作系统准备 操作系统 Kylin Linux release 3.3.1707 (Core)数据库版本 mys ...
随机推荐
- Mac终端美化(iterm2+zsh+oh-my-zsh+powerlevel10k)
iterm2+zsh+oh-my-zsh+powerlevel10k 一.下载iterm2 方式一:官网下载 https://iterm2.com/ 方式二:百度云下载 链接: https://pan ...
- Xmanager7 xshell7 xftp7安装破解教程
NetSarang Xmanager7 Power Suite是可以浏览远端X窗口系统的软件,远程把Unix/Linux的桌面无缝地带到Windows桌面上.旗下的Xshell Xftp插件是一款常用 ...
- jvm源码解读--16 锁_开头
现在不太清楚, public static void main(String[] args) { Object object=new Object(); System.out.println(&quo ...
- vant vue 屏幕自适应
手机端 pc端 屏幕自适应 一.新建 vue.config.js项目目录中没有 vue.config.js 文件,需要手动创建,在根目录中创建 vue.config.js const pxtorem ...
- Maven-内部多个项目依赖自动升级版本的部署
需要自动升级版本的AAA项目发布 (有内部依赖时) 步骤比较复杂, 有一些需要根据实际情况调整. 考虑了以下几种可能性: 依赖模块的版本有更新 依赖模块版本没更新 依赖模块的版本号: 直接定义, 用属 ...
- window.location.href下载文件,文件名中文乱码处理
下载文件方法: window.location.href='http://www.baidu.com/down/downFile.txt?name=资源文件'; 这种情况下载时:文件名资源文件会中文乱 ...
- NCB | 定量蛋白质组学揭示细胞外泌体通用标志物Syntenin-1
外泌体 (exosomes) 是由哺乳动物细胞通过"内吞-融合-外排"等机制,主动向胞外释放的纳米级 (直径40~60 nm) 双层囊泡小体,携带蛋白质.核酸.脂质等多种生物活性分 ...
- Android面试中多说这么一句话,薪水直接涨5k
小鱼同学最近很难受,明明获得了人人羡慕的大厂Offer,走在路上都能被熟人祝贺,学弟学妹争着抢着求他进行经验分享. 但有件事一直让他很介意.其实这件事起因很简单,是关于这份Offer的薪资问题,面试的 ...
- Alibaba-技术专区-Dubbo3总体技术体系介绍及技术指南(目录)
Dubbo3开题简介 如开篇所述,Dubbo 提供了构建云原生微服务业务的一站式解决方案,可以使用 Dubbo 快速定义并发布微服务组 件,同时基于 Dubbo 开箱即用的丰富特性及超强的扩展能力,构 ...
- 我的第一个开源项目 Kiwis2 Mockserver
我的第一个开源作品Kiwis2 Mock Server,目前公测中,欢迎大家提供宝贵意见. 代码:https://github.com/kiwis2/mockserver 主页:https://kiw ...