安装keepalived

1、官网下载源码包,解压

# wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz
# tar xvf keepalived-1.1.20.tar.gz

2、编译安装,这里需要指定一下安装路径

# cd keepalived-1.1.20/
# ./configure --prefix=/usr/local/keepalived
# make && make install

3、拷贝配置文件和启动脚本到相应的目录

# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

4、设置开机启动

# chkconfig keepalived on

配置mysql双主

所谓双主,即两个节点互为主从,各自把对方设为master,两个节点都需要开启binlog和relaylog。

两个节点server_id必须不一样。

由于两个节点都可写,为了保证自增主键ID不冲突,需要设置 auto_increment_offset 和 auto_increment_increment。

主从复制过程:

a、master将改变记录到二进制日志(binlog)中;

b、slave将master的binlog拷贝到它的中继日志(relaylog);

c、slave重做中继日志中的事件,将改变反映到它自己的数据库。

① slave将master的binary log拷贝到它自己的中继日志。

② I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

③ SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。

1、修改节点一的配置文件

# vim /etc/my.cnf
server-id=1
datadir=/nh/mysql3307/data
log-bin=/nh/mysql3307/data
log-bin-index=/nh/mysql3307/data
relay_log=relay-log
auto_increment_offset=1
auto_increment_increment=2
innodb_file_per_table=1 # /etc/init.d/mysqld start

2、修改配置节点二的配置文件

# vim /etc/my.cnf
server-id=2
datadir=/nh/mysql3307/data
log-bin=/nh/mysql3307/data
log-bin-index=/nh/mysql3307/data
relay_log=relay-log
auto_increment_offset=2
auto_increment_increment=2
innodb_file_per_table=1 # /etc/init.d/mysqld start

3、登录节点一的mysql,设置有复制权限的账号

# mysql -uroot -S mysql-3307.sock
mysql> grant replication slave,replication client on *.* to repl@'192.168.%' identified by 'Fl0wer926';
mysql> flush privileges;

查看当前正在使用的binlog文件和所在位置

mysql> show master status;
+-------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------+----------+--------------+------------------+
| data.00005 | 106 | | |
+-------------+----------+--------------+------------------+

登录节点二的mysql,将节点一设置为其master

mysql> change master to master_host='192.168.1.101',MASTER_PORT = 3307,master_user='repl',master_password='Fl0wer926',master_log_file='data.000005',master_log_pos=106;
mysql> start slave;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.101
Master_User: repl
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: data.000010
Read_Master_Log_Pos: 106
Relay_Log_File: relay-log.000021
Relay_Log_Pos: 246
Relay_Master_Log_File: data.000010
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 106
Relay_Log_Space: 535
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
mysql> show processlist;
+-------+-------------+---------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+-------------+---------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+
| 7 | system user | | NULL | Connect | 43454 | Waiting for master to send event | NULL |
| 8 | system user | | NULL | Connect | 36323 | Has read all relay log; waiting for the slave I/O thread to update it | NULL |
| 33612 | repl | 192.168.1.101:57914 | NULL | Binlog Dump | 967 | Has sent all binlog to slave; waiting for binlog to be updated | NULL |
| 34514 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-------+-------------+---------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+

交换两个节点的角色重复一次以上操作,即可实现主主复制。

4、修改节点一的keepalived配置文件

# vim /etc/keepalived/keepalived.conf
global_defs {
router_id MYSQL_MM
} vrrp_script chk_mysqld3307 {
script "nc 192.168.1.101 3307"
interval 1
weight -10
fall 2
rise 1
} vrrp_instance VI_1 {
state MASTER
interface bond0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.6.12
}
track_script {
chk_mysqld3307
}
} # /etc/init.d/keepalived start

5、修改节点二的keepalived配置文件

# vim /etc/keepalived/keepalived.conf
global_defs {
router_id MYSQL_MM
} vrrp_script chk_mysqld3307 {
script "nc 192.168.1.102 3307"
interval 1
weight -10
fall 2
rise 1
} vrrp_instance VI_1 {
state BACKUP
interface bond0
virtual_router_id 51
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.6.12
}
track_script {
chk_mysqld3307
}
} # /etc/init.d/keepalived start

至此,通过keepalived实现mysql双主高可用就完成了,然后可以尝试停止vip所在节点测试vip是否会自动漂移,然后再把节点启动看vip是否会被抢占回来。

编译安装keepalived,实现双主mysql高可用的更多相关文章

  1. 【 Linux 】Keepalived实现双主模型高可用集群

    要求:    1. 两台web服务器安装wordpress,数据库通过nfs共享    2. 使用keepalived实现双主模型 环境:    主机:        系统:CentOS6.7 x64 ...

  2. suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用

    文章目录 编译部署nginx 下载nginx源码包 编译nginx 配置nginx.conf 配置nginx为systemctl管理 分发nginx二进制文件和配置文件 启动kube-nginx服务 ...

  3. keepalived+mysql双主复制高可用方案

    MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...

  4. 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境

    应用背景: MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动 切换到另外一台主机.LVS和Keppalived可以设定一个VIP来实 ...

  5. KeepAlived双主模式高可用集群

    keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测:通过共用的虚拟IP地址对外提 ...

  6. KEEPALIVED+LVS+MYCAT实现MYSQL高可用环境搭建

    一.安装keepalived和ipvsadm 注意:ipvsadm并不是lvs,它只是lvs的配置工具. 为了方便起见,在这里我们使用yum的安装方式 分别在10.18.1.140和10.18.1.1 ...

  7. mysql主从之keepalive+MySQL高可用

    一 keepalive介绍 1.1 keepalived 是什么 keepalived 是集群管理中保证集群高可用的一个服务软件,用来防止单点故障. 1.2 keepalived 工作原理 keepa ...

  8. MySQL高可用基础之keepalived+双主复制【转】

    环境:MySQL-VIP:192.168.1.3MySQL-master1:192.168.1.1MySQL-master2:192.168.1.2 OS版本:CentOS release 6.4 ( ...

  9. Mysql + keepalived 实现双主热备读写分离【转】

    Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论   架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12 ...

随机推荐

  1. SICP读书笔记 2.1

    SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...

  2. Netty源码分析第7章(编码器和写数据)---->第3节: 写buffer队列

    Netty源码分析七章: 编码器和写数据 第三节: 写buffer队列 之前的小节我们介绍过, writeAndFlush方法其实最终会调用write和flush方法 write方法最终会传递到hea ...

  3. 基于Ubuntu+kodexplorer可道云的私有云网盘

    1.可用的服务器:组装PC机一台,操作系统为Ubuntu 14.04 LTS,无桌面环境,放在机房,使用远程终端进行访问.有安装了Apache2,运行着svn服务.内网IP地址为192.168.0.1 ...

  4. 大牛都是这样写测试用例的,你get到了嘛?

    1. 用于语句覆盖的基路径法 基路径法保证设计出的测试用例,使程序的每一个可执行语句至少执行一次,即实现语句覆盖.基路径法是理论与应用脱节的典型,基本上没有应用价值,读者稍作了解即可,不必理解和掌握. ...

  5. 无法连接 Plugins Market 失效的日子

    一.问题背景 不知道是什么原因,我的 Intellij 连接不上 Plugins Market,这时候我需要使用 @Data 注解来自动生成 Getter.Setter 方法.在添加了相应的依赖之后, ...

  6. linux安装nginx并配置负载均衡

    linux上安装nginx比较简单: 前提是需要有gcc或者g++ 1.yum需要的依赖  yum -y install openssl openssl-devel 2.解压pcre库.zlib库   ...

  7. Daily Scrumming* 2015.11.2(Day 14)

    一.今明两天任务表 Member Today’s Task Tomorrow’s Task 江昊 实现前后端整合 继续实现前后端整合 杨墨犁 修改好首页 开始实现社团页 付帅 测试api 继续测试并完 ...

  8. 【Alpha】阶段第六次Scrum Meeting

    [Alpha]阶段第六次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 增加教师接口 增加上课信息接口 赵智源 构建后端测试点测试框架 构建后测试点测试框架 肖 ...

  9. WebGL学习笔记四点二

    前几章对图形图形内部多是 以纯色填充,但是现实中已经有许多好的图片了我们没必要一点点画,这一章第五章就是将图片以纹理的形式加载到片元中,主要过程如下,首先是定义点的坐标的attribute变量用于在j ...

  10. linux的桌面介绍

    一:linux桌面环境 1. X Windows桌面环境 X Windows软件是图形显示的核心部分,是直接和PC上的显卡及显示器打交道的底层程序,它控制着linux程序如何在电脑上显示出漂亮的窗口和 ...