keepalived+mysql主从实现数据库冗余

 keepalived+mysql主从实现数据库冗余

一、安装mysql,并设置主备服务器


1、将下面的代码复制到一个后缀为.sh的shell脚本文件中(脚本很容易看懂)

# vi /etc/scripts/mysql.sh


##/bin/bash

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum -y install mysql mysql-server mysql-devel

#定义一个数值Level(设置数据库主从)

echo "Enter the "Master"(1) or "slave"=(2)"

read Level

#定义一个数值mysql(需要同步的具体某个数据库,需要同步所有数据库,就将这段以及后面有关代码删掉即可)

echo "Enter the Sync database"

read mysql

cat > /etc/my.cnf <<Eof

#做一些数据库优化

[mysql]

# CLIENT #

port                           = 3306

socket                         = /var/lib/mysql/mysql.sock

[mysqld]

# GENERAL #

user                           = mysql

default-storage-engine         = InnoDB

socket                         = /var/lib/mysql/mysql.sock

pid-file                       = /var/lib/mysql/mysql.pid

# MyISAM #

key-buffer-size                = 32M

myisam-recover                 = FORCE,BACKUP

# SAFETY #

max-allowed-packet             = 16M

max-connect-errors             = 1000000

# DATA STORAGE #

datadir                        = /var/lib/mysql/

# BINARY LOGGING #

log-bin                        = /var/lib/mysql/mysql-bin

expire-logs-days               = 14

sync-binlog                    = 1

# REPLICATION #

relay-log                      = /var/lib/mysql/relay-bin

slave-net-timeout              = 60

# CACHES AND LIMITS #

tmp-table-size                 = 32M

max-heap-table-size            = 32M

query-cache-type               = 0

query-cache-size               = 0

max-connections                = 500

thread-cache-size              = 50

open-files-limit               = 65535

table-definition-cache         = 4096

table-open-cache               = 4096

# INNODB #

innodb-flush-method            = O_DIRECT

innodb-log-files-in-group      = 2

innodb-log-file-size           = 128M

innodb-flush-log-at-trx-commit = 2

innodb-file-per-table          = 1

innodb-buffer-pool-size        = 2G

# LOGGING #

log-error                      = /var/lib/mysql/mysql-error.log

log-queries-not-using-indexes  = 1

slow-query-log                 = 1

slow-query-log-file            = /var/lib/mysql/mysql-slow.log

srver-id = $Level

#需要同步整个数据库就将下面两段代码删掉

binlog-do-db = $mysql

replicate-do-db = $mysql

log-slave-updates

sync_binlog = 1

auto_increment_offset = $Level

auto_increment_increment = 2

Eof

service mysqld restart

chkconfig mysqld on

2、添加脚本执行权限


# chmod  /etc/scripts/mysql.sh


二、安装keepalived


1、将如下代码复制到后缀名为.sh的shell脚本文件


# vi /etc/scripts/keepalived.sh


##!/bin/bash

yum install keepalived -y

#定义keepalived的虚拟IP

echo "VIP:"

read VIP

#定义主服务器,还是备份服务器

echo "MASTER OR BACKUP:"

read state

#定义优先级

echo "priority: (MASTER:100 BACKUP:99)"

read priority

#定义虚拟路由,主备要一样

echo "virtual_router_id:"

read virtual_router_id

cat > /etc/keepalived/keepalived.conf <<Eof

#! Configuration File for keepalived

global_defs {

#router_id mysql-ha1 #修改为自己的主机名

}

vrrp_script chk_haproxy {

script "/etc/keepalived/chk_slave.sh"

interval 2

weight 2

}

vrrp_instance VI_1 {

state $state #都修改成BACKUP

interface eth0

virtual_router_id $virtual_router_id #默认51 主从都修改为60

priority $priority #在mysql-ha2上LVS上修改成80

advert_int 1

#     nopreempt #不抢占资源,意思就是它活了之后也不会再把主抢回来

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

chk_haproxy

}

virtual_ipaddress {

$VIP

}

}

Eof

echo "Enter the database password"

read password

cat /etc/keepalived/check_slave.sh <<Eof

##/bin/bash

Mysql=$(mysql -uroot -p$password -N -s -e "select 10")

if [ $? -ne 0 ] || [ "$Mysql" -ne "10" ];then

service keepalived stop

exit 1

else

SlaveStatus=($(mysql -uroot -p$password -e "show slave status\G;"|grep "_Running"|awk ‘{print  $NF}‘))

if [ "$SlaveStatus[0]" = "No" ] || [  "${SlaveStatus[1]}" = "No" ];then

service keepalived stop

fi

fi

Eof

2、添加脚本执行权限


# chmod  /etc/scripts/keepalived.sh


时间: 2025-01-02 15:20:16

keepalived+mysql主从实现数据库冗余的相关文章

Lvs+keepalived+mysql主从热备

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" } h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left

keepalived+Mysql主从配置实验

keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层.第4层和第7层交换. 简介: Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器. 工作原理: Layer3,4&7工作在I

keepalived + mysql主从

mysql高可用服务部署 Mysql主从搭建完毕,(mysql 主从部署请看MySQL 主从复制)现在有一个问题,如果master服务器down机了,如何快速恢复服务呢? 我们有两套解决方法: 1.如果程序连接的是master的IP,直接在slave服务器上添加master的IP即可.这个手动去操作,而且需要花费时间比较长,可能还会出现误操作的情况,不推荐 2.可以使用keepalived.heartbeat作为HA检测软件,检查MySQL服务是否正常,不正常则自动切换到slave上,推荐使用

LVS+Keepalived+Mysql+主备数据库架构

这是一个坑...磨了不少时间.见证自己功力有待提升... 架构图 数据库 1.安装数据库 这块不难, 直接引用:mysql安装 2.数据库主备 这块不难, 直接引用: mysql主备 虚拟VIP 重点来了!! 上脚本, 把这个脚本命名后仍进/etc/init.d, 然后授予权限755或者+x SNS_VIP=192.168.158.110 /etc/rc.d/init.d/functions case "$1" in start) ifconfig eth0:0 $SNS_VIP ne

MYSQL主从同步数据库版本不一致问题

主库:5.6 从库:5.5 报错: Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'mysql-bin.000001' at 451, the last even

Mysql主从+Amoeba读写分离

一.安装环境 centos6.5 192.168.1.100 Amoeba-mysql centos6.5 192.168.1.101 mysql-主 centos6.5 192.168.1.102 mysql-从 二.Mysql 主从配置 在主MySQL192.168.1.101上配置 Vim /usr/local/mysql/etc/my.cnf server-id       = 1                     主库一定要比从库的数字小 binlog-do-db    = ba

mysql主从配置&&基于keepalived的主备切换

mysql互为主从设置 && 主备切换配置 需求说明: 1.公司架构一直是一台单独的mysql在线上跑,虽然一直没有出现什么宕机事件,但是出于一个高可用的考虑,提出主从备份.主备切换的需求: 2.实现这个需求的前一段时间只是在做数据库备份的时候实现了主从热备,为了实现主备切换功能,继续操作上述需求: 实验环境: master1:10.1.156.3:3306 master2:10.1.156.5:3306 my.cnf配置文件关于主从这块的修改: master1: server-id =

Mysql主从数据库架构的复制原理及配置详解

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置

原文地址:LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置 作者:gron 原文链接:http://www.linuxidc.com/Linux/2012-07/65547.htm 架构图 先进行优化 vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 4194304 net.c