003.Heartbeat MySQL双主复制
一 基础环境
节点
|
系统版本
|
MySQL版本
|
业务IP
|
心跳IP
|
Master01
|
CentOS 7.5
|
MySQL 5.6
|
192.168.88.100
|
192.168.77.100
|
Master02
|
CentOS 7.5
|
MySQL 5.6
|
192.168.88.101
|
192.168.77.101
|
VIP
|
192.168.88.88
|
二 实际部署
2.1 安装MySQL
[root@master1 ~]# yum list installed | grep mysql #查看是否存在其他MySQL组件
[root@master1 ~]# yum -y remove mysql* #为避免冲突引,卸载已存在的组件
[root@master1 ~]# yum -y install mariadb mariadb-server
[root@master1 ~]# systemctl start mariadb.service
2.2 初始化MySQL
[root@master1 ~]# mysql_secure_installation #设置root密码
[root@master1 ~]# systemctl restart mariadb.service
2.3 master01 my.cf配置
[root@master1 ~]# vi /etc/my.cnf
[mysqld]
……
server-id=1 #设置主服务器master的id
log-bin=mysql-bin #配置二进制变更日志命名格式
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
binlog-do-db = mysqltest
replicate-wild-ignore-table=mysql.% #从库配置不同步表
replicate-wild-do-table=test.% #从库配置需要同步的表
2.4 创建账号
[root@master1 ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> grant replication slave on *.* to 'repl_user'@'192.168.88.101' identified by 'x12345678';
MariaDB [(none)]> grant all privileges on *.* to 'root'@'192.168.88.%' identified by 'x120952576' with grant option;
MariaDB [(none)]> flush privileges;
[root@master1 ~]# systemctl restart mariadb.service
[root@master1 ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> show master status;

2.5 master02 my.cf配置配置
[root@master2 ~]# vi /etc/my.cnf
[mysqld]
server-id=2 #设置主服务器master的id
log-bin=mysql-bin #配置二进制变更日志命名格式
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
read_only=1
2.6 创建账号
[root@master2 ~] mysql -uroot -p
Enter password:
MariaDB [(none)]> grant replication slave on *.* to 'repl_user'@'192.168.88.100' identified by 'x12345678';
MariaDB [(none)]> grant all privileges on *.* to 'root'@'192.168.88.%' identified by 'x120952576' with grant option;
MariaDB [(none)]> flush privileges;
[root@master2 ~]# systemctl restart mariadb.service
[root@master2 ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> show master status;

三 启动主从
3.1 手动同步
3.2 启动Master01的slave功能
[root@master1 ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> change master to master_host='192.168.88.101',
master_user='repl_user',
master_password='x12345678',
master_log_file='mysql-bin.000001',
master_port=3306,
master_log_pos=245;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G #查看slave状态

3.3 启动Master02的slave功能
[root@Master02 ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> change master to master_host='192.168.88.100',
master_user='repl_user',
master_password='x12345678',
master_log_file='mysql-bin.000001',
master_log_pos=245;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G #查看slave状态

四 安装Heartbeat
五 配置Heartbeat
5.1 配置authkeys
[root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/authkeys
auth 3
3 md5 Yes!
5.2 配置Heartbeat
[root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf
logfile /var/log/ha-log #记录Heartbeat其他相关日志信息
logfacility local0 #设置heartbeat的日志,这里用的是系统日志
keepalive 2 #设定心跳(监测)时间间隔为2秒
deadtime 15 #宣告死亡时间
warntime 10 #心跳延时时间
initdead 60 #初始化时间
udpport 694 #用于通信的UDP端口
bcast eth1 #接受广播心跳的网卡接口
ucast eth1 192.168.77.101 #置对方机器心跳检测的IP
auto_failback off #关闭自动切回恢复正常的主节点
node master1.yewu.com #集群节点的名称,必须匹配uname -n的结果。
node master2.yewu.com
ping 192.168.88.1
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
5.3 配置haresources
[root@master1 ~]# ll /usr/local/heartbeat/etc/ha.d/resource.d/ #查看现有资源类型
[root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/haresources
master1.yewu.com IPaddr::192.168.88.88/24/eth0 mariadb
[root@master1 ~]# scp /usr/local/heartbeat/etc/ha.d/{ha.cf,haresources,authkeys} 192.168.88.101:/usr/local/heartbeat/etc/ha.d/ #将所有配置复制至master2节点
[root@master2 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf
ucast eth1 192.168.77.100 #置对方机器心跳检测的IP
[root@master1 ~]# systemctl stop mariadb.service
[root@master1 ~]# systemctl disable mariadb.service
[root@master2 ~]# systemctl stop mariadb.service
[root@master2 ~]# systemctl disable mariadb.service
六 验证Heartbeat
6.1 master1单节点启动验证
[root@master1 ~]# systemctl start heartbeat.service
[root@master1 ~]# systemctl enable heartbeat.service
[root@master1 ~]# tail -f /var/log/ha-log #验证日志

[root@master1 ~]# ifconfig #查看活的的vip


6.2 master2启动并验证
[root@master2 ~]# systemctl start heartbeat.service
[root@master1 ~]# tail -f /var/log/ha-log #观察master2节点启动后的master1日志


[root@master1 ~]# shutdownr #模拟master1节点宕机
[root@master2 ~]# tail -f /var/log/ha-log #观察master2节点的切换log

[root@master2 ~]# ifconfig #master2节点会自动接管vip


七 其他优化
7.1 检测脚本
#!/bin/sh
#****************************************************************#
# ScriptName: mysql_down.sh
# Author: xhy
# Create Date: 2018-12-20 16:40
# Modify Author: xhy
# Modify Date: 2018-12-20 16:40
# Version:
#***************************************************************#
Date=$(date +%F" "%T)
IP=$(ifconfig eth0 |grep "inet addr" |cut -d":" -f2 |awk '{print $1}')
Mail="baojingtongzhi@163.com"
pkill keepalived
echo "$Date $IP The mysql service failure,kill keepalived." |mail -s "Master-Backup MySQL Monitor" $Mail
#!/bin/sh
#****************************************************************#
# ScriptName: mysql_down.sh
# Author: xhy
# Create Date: 2018-12-20 16:40
# Modify Author: xhy
# Modify Date: 2018-12-20 16:40
# Version:
#***************************************************************#
MYSQL=/usr/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=x120952576
date=`date +%y%m%d-%H:%M:`
echo $date
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1
#$mysqlclient --host=$host --port=$port--user=$user --password=$password -e"show databases;" > /dev/null 2>&1
if [ $? == 0 ]
then
echo " $host mysql login successfully "
exit 0
else
echo " $host mysql login faild"
/etc/init.d/heartbeat stop
exit 2
fi
7.2 定时检测任务
[root@master2 ~]# crontab -e
*/1 * * * * /root/mysql_down.sh >>/root/check_mysql.log
003.Heartbeat MySQL双主复制的更多相关文章
- Heartbeat MySQL双主复制
目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2.3 master01 my.cf配置 2.4 创建账号 2.5 master02 my.cf配置配置 2.6 创 ...
- 分布式数据存储 - MySQL双主复制
上篇文章<分布式数据存储 - MySQL主从复制>,我们说到MySQL主从复制很好的保障了从库,读的高可用性.so,问题来了: 1.针对主库,写的高可用性又是如何做到高可用性? 2.如果需 ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- MySQL双主复制
原文发表于cu:2017-06-12 本文简单介绍MySQL双主复制原理及1个简单是双主复制验证. 一.MySQL双主复制原理 1. 双主复制原理 master-master复制的两台服务器,既是ma ...
- mysql双主复制总结
双主复制: 1).在两台服务器上各自建立一个具有复制权限的用户: 2).修改配置文件: # 主服务器A上 [mysqld] server-id = 10 log-bin = mysql-bin rel ...
- linux环境下配置mysql双主复制
简单来说,双主复制就是让两台mysql服务器中的数据保持同步,可以用来实现灾备和负载均衡 主机1 IP:192.168.200.128 主机2 IP:192.168.200.131 两台主机系统均为c ...
- mysql 双主复制 centos7
mysql 安装请看:http://www.cnblogs.com/leohe/p/6839705.html 双主复制设置 1. 两台虚拟机,都是 centos7 主: 10.1.1.115 从: 1 ...
- 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境
应用背景: MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动 切换到另外一台主机.LVS和Keppalived可以设定一个VIP来实 ...
- keeplived + mysql双主复制部署 --原创
环境: master 1: 192.168.100.10 oracle linux 7.4 mysql 5.7.1 master 2: 192.168.100.11 oracle linux ...
随机推荐
- Confluence 6 连接到 Jira 用户管理的限制
当你在使用 JIRA 目录为用户目录的时候,请考虑下面的一些限制和建议. 不知道跨平台的多应用单点登录 当你使用 JIRA 为你的目录管理器的时候,系统将不能支持跨平台的单点登录.当 JIRA 用作目 ...
- respberry2b + android5.1
链接: http://pan.baidu.com/s/1kUf6UtL 密码: xz4g 安装教程:http://tieba.baidu.com/p/3963061007 如果安装后打开相册崩溃,则下 ...
- nginx之访问控制http_access_module与http_auth_basic_module
http_access_module 作用 基于IP的访问控制 语法 使用 局限性 解决办法 1. http_x_forwarded_for http_auth_basic_module 作用 基于用 ...
- Java的家庭记账本程序(C)
日期:2019.2.4 博客期:029 星期一 今天初步修改了程序,实现了几个基本的功能: 个人信息管理.除查询以外的全部功能!
- Android开发实战一 百度SDK
一 申请百度API key 百度地图API:http://developer.baidu.com/map/ 百度地图开发者平台地址:http://developer.baidu.com/map/ .点 ...
- 前端之css样式(选择器)。。。
一.css概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,对html标签的渲染和布局 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 例如 二.c ...
- LeetCode(1): 两数之和
本内容为LeetCode第一道题目:两数之和 # -*- coding: utf-8 -*- """ Created on Sun Mar 10 19:57:18 201 ...
- C++ Primer 笔记——类
1.定义在类内部的函数是隐式的inline函数. 2.因为this的目的总是指向“这个”对象,所以this是一个常量指针,我们不允许改变this中保存的地址. 3.常量成员函数:允许把const关键字 ...
- Java利用POI读取Excel
官网直接下载POI http://poi.apache.org/ package com.CommonUtil; import java.io.File; import java.io.FileIn ...
- java & python猜数字游戏对比
1.java版 package day03; import java.util.Random;import java.util.Scanner; /** * 猜数字游戏 * 随机生成一个1-100之间 ...