Heartbeat MySQL双主复制
目录
- 一 基础环境
- 二 实际部署
- 2.1 安装MySQL
- 2.2 初始化MySQL
- 2.3 master01 my.cf配置
- 2.4 创建账号
- 2.5 master02 my.cf配置配置
- 2.6 创建账号
- 三 启动主从
- 3.1 手动同步
- 3.2 启动Master01的slave功能
- 3.3 启动Master02的slave功能
- 四 安装Heartbeat
- 五 配置Heartbeat
- 5.1 配置authkeys
- 5.2 配置Heartbeat
- 5.3 配置haresources
- 六 验证Heartbeat
- 6.1 master1单节点启动验证
- 6.2 master2启动并验证
- 七 其他优化
- 7.1 检测脚本
- 7.2 定时检测任务
一 基础环境
节点
|
系统版本
|
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
1 [root@master1 ~]# yum list installed | grep mysql #查看是否存在其他MySQL组件
2 [root@master1 ~]# yum -y remove mysql* #为避免冲突引,卸载已存在的组件
3 [root@master1 ~]# yum -y install mariadb mariadb-server
4 [root@master1 ~]# systemctl start mariadb.service
2.2 初始化MySQL
1 [root@master1 ~]# mysql_secure_installation #设置root密码
2 [root@master1 ~]# systemctl restart mariadb.service
2.3 master01 my.cf配置
1 [root@master1 ~]# 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 binlog-ignore-db = mysql
2 binlog-ignore-db = test
3 binlog-ignore-db = information_schema
1 binlog-do-db = mysqltest
1 replicate-wild-ignore-table=mysql.% #从库配置不同步表
2 replicate-wild-do-table=test.% #从库配置需要同步的表
2.4 创建账号
1 [root@master1 ~]# mysql -uroot -p
2 Enter password:
3 MariaDB [(none)]> grant replication slave on *.* to 'repl_user'@'192.168.88.101' identified by 'x12345678';
4 MariaDB [(none)]> grant all privileges on *.* to 'root'@'192.168.88.%' identified by 'x120952576' with grant option;
5 MariaDB [(none)]> flush privileges;
6 [root@master1 ~]# systemctl restart mariadb.service
7 [root@master1 ~]# mysql -uroot -p
8 Enter password:
9 MariaDB [(none)]> show master status;
2.5 master02 my.cf配置配置
1 [root@master2 ~]# 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@master2 ~] mysql -uroot -p
2 Enter password:
3 MariaDB [(none)]> grant replication slave on *.* to 'repl_user'@'192.168.88.100' identified by 'x12345678';
4 MariaDB [(none)]> grant all privileges on *.* to 'root'@'192.168.88.%' identified by 'x120952576' with grant option;
5 MariaDB [(none)]> flush privileges;
6 [root@master2 ~]# systemctl restart mariadb.service
7 [root@master2 ~]# mysql -uroot -p
8 Enter password:
9 MariaDB [(none)]> show master status;
三 启动主从
3.1 手动同步
3.2 启动Master01的slave功能
1 [root@master1 ~]# mysql -uroot -p
2 Enter password:
3 MariaDB [(none)]> change master to master_host='192.168.88.101',
4 master_user='repl_user',
5 master_password='x12345678',
6 master_log_file='mysql-bin.000001',
7 master_port=3306,
8 master_log_pos=245;
9 MariaDB [(none)]> start slave;
10 MariaDB [(none)]> show slave status\G #查看slave状态
3.3 启动Master02的slave功能
1 [root@Master02 ~]# mysql -uroot -p
2 Enter password:
3 MariaDB [(none)]> change master to master_host='192.168.88.100',
4 master_user='repl_user',
5 master_password='x12345678',
6 master_log_file='mysql-bin.000001',
7 master_log_pos=245;
8 MariaDB [(none)]> start slave;
9 MariaDB [(none)]> show slave status\G #查看slave状态
四 安装Heartbeat
五 配置Heartbeat
5.1 配置authkeys
1 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/authkeys
2 auth 3
3 3 md5 Yes!
5.2 配置Heartbeat
1 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf
2 logfile /var/log/ha-log #记录Heartbeat其他相关日志信息
3 logfacility local0 #设置heartbeat的日志,这里用的是系统日志
4 keepalive 2 #设定心跳(监测)时间间隔为2秒
5 deadtime 15 #宣告死亡时间
6 warntime 10 #心跳延时时间
7 initdead 60 #初始化时间
8 udpport 694 #用于通信的UDP端口
9 bcast eth1 #接受广播心跳的网卡接口
10 ucast eth1 192.168.77.101 #置对方机器心跳检测的IP
11 auto_failback off #关闭自动切回恢复正常的主节点
12 node master1.yewu.com #集群节点的名称,必须匹配uname -n的结果。
13 node master2.yewu.com
14 ping 192.168.88.1
15 respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
5.3 配置haresources
1 [root@master1 ~]# ll /usr/local/heartbeat/etc/ha.d/resource.d/ #查看现有资源类型
2 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/haresources
3 master1.yewu.com IPaddr::192.168.88.88/24/eth0 mariadb
4 [root@master1 ~]# scp /usr/local/heartbeat/etc/ha.d/{ha.cf,haresources,authkeys} 192.168.88.101:/usr/local/heartbeat/etc/ha.d/ #将所有配置复制至master2节点
5 [root@master2 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf
6 ucast eth1 192.168.77.100 #置对方机器心跳检测的IP
7 [root@master1 ~]# systemctl stop mariadb.service
8 [root@master1 ~]# systemctl disable mariadb.service
9 [root@master2 ~]# systemctl stop mariadb.service
10 [root@master2 ~]# systemctl disable mariadb.service
六 验证Heartbeat
6.1 master1单节点启动验证
1 [root@master1 ~]# systemctl start heartbeat.service
2 [root@master1 ~]# systemctl enable heartbeat.service
3 [root@master1 ~]# tail -f /var/log/ha-log #验证日志
1 [root@master1 ~]# ifconfig #查看活的的vip
6.2 master2启动并验证
1 [root@master2 ~]# systemctl start heartbeat.service
2 [root@master1 ~]# tail -f /var/log/ha-log #观察master2节点启动后的master1日志
1 [root@master1 ~]# shutdownr #模拟master1节点宕机
2 [root@master2 ~]# tail -f /var/log/ha-log #观察master2节点的切换log
1 [root@master2 ~]# ifconfig #master2节点会自动接管vip
七 其他优化
7.1 检测脚本
1 #!/bin/sh
2 #****************************************************************#
3 # ScriptName: mysql_down.sh
4 # Author: xhy
5 # Create Date: 2018-12-20 16:40
6 # Modify Author: xhy
7 # Modify Date: 2018-12-20 16:40
8 # Version:
9 #***************************************************************#
10 Date=$(date +%F" "%T)
11 IP=$(ifconfig eth0 |grep "inet addr" |cut -d":" -f2 |awk '{print $1}')
12 Mail="baojingtongzhi@163.com"
13 pkill keepalived
14 echo "$Date $IP The mysql service failure,kill keepalived." |mail -s "Master-Backup MySQL Monitor" $Mail
1 #!/bin/sh
2 #****************************************************************#
3 # ScriptName: mysql_down.sh
4 # Author: xhy
5 # Create Date: 2018-12-20 16:40
6 # Modify Author: xhy
7 # Modify Date: 2018-12-20 16:40
8 # Version:
9 #***************************************************************#
10 MYSQL=/usr/bin/mysql
11 MYSQL_HOST=localhost
12 MYSQL_USER=root
13 MYSQL_PASSWORD=x120952576
14 date=`date +%y%m%d-%H:%M:`
15 echo $date
16 $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1
17 #$mysqlclient --host=$host --port=$port--user=$user --password=$password -e"show databases;" > /dev/null 2>&1
18 if [ $? == 0 ]
19 then
20 echo " $host mysql login successfully "
21 exit 0
22 else
23 echo " $host mysql login faild"
24 /etc/init.d/heartbeat stop
25 exit 2
26 fi
7.2 定时检测任务
1 [root@master2 ~]# crontab -e
2 */1 * * * * /root/mysql_down.sh >>/root/check_mysql.log
原文转自:https://www.cnblogs.com/itzgr/p/10233932.html
作者:木二
Heartbeat MySQL双主复制的更多相关文章
- 003.Heartbeat MySQL双主复制
一 基础环境 节点 系统版本 MySQL版本 业务IP 心跳IP Master01 CentOS 7.5 MySQL 5.6 192.168.88.100 192.168.77.100 Master0 ...
- 分布式数据存储 - 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 ...
随机推荐
- fatal error: all goroutines are asleep - deadlock!
一.问题截图 fatal error: all goroutines are asleep - deadlock! goroutine 1 [chan receive]: main.main() /U ...
- 7.29考试总结(NOIP模拟27)[牛半仙的妹子图·Tree·序列]
前言 从思路上来讲是比较成功的,从分数上就比较令人失望了. 考场上是想到了前两个题的正解思路,其实最后一个题是半个原题,只可惜是我看不懂题... 这波呀,这波又是 语文素养限制OI水平.. 改题的时候 ...
- spring第三章
第三章 实现AOP AOP:面向方面编程,AOP能够使您将所有模块共有的特性与应用程序的主要业务逻辑隔离开 一.AOP介绍 横切关注点:在Web应用程序中,有一些服务(如登录.安全和事务管理)不是应用 ...
- (python函数03)zip()函数
(python函数03)zip()函数 zip是用来压缩的,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个元组(tuple),然后返回有这些tuples组成的对象,可强制转化为列表和 ...
- SprintBoot简单入门
1.什么是SpringBoot SpringBoot是基于Spring的基础上提供了一套全新的框架,其目的是为了在开发时简化Spring的相关配置及开发过程.在SpringBoot未出来之前,准备搭建 ...
- WordPress如何配置邮件发送?
WordPress配置了邮件发送最直接的用处就是可以通过邮件找回密码,当然还有其他的用处,比如Wordpress有新用户注册,订单状态.评论等发生变化时给管理员发送邮件提醒等. 经过大量用户实践反馈, ...
- Java基础——类型转换注意事项及常见问题
类型转换 由于Java是强类型语言,所以要进行有些运算的时候,需要用类型转换 低------------------------------------------------------------ ...
- C语言复习(六)----typedef 的作用
typedef的作用 重命名变量:typedef unsigned int Uint;//可以使用Uint代替unsigned int 定义新的数据类型 typedef struct Books{ c ...
- 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...
- Java ArrayList【笔记】
Java ArrayList[笔记] ArrayList ArrayList基本结构 ArrayList 整体架构比较简单,就是一个数组结构 源码中的基本概念 index 表示数组的下标,从 0 开始 ...