mysql5.6主主复制及keepalived 高可用
1.实验目的
mysql服务器作为生产环境中使用最广泛的数据库软件,以其开源性,稳定性而广泛使用,但同时由于数据存储,读写频率高,极易造成数据库出错,从而给企业造成不可挽回的损失,我们除了做好数据库的备份工作外,同时,还应该解决数据库服务器的单点故障问题。
2.搭建环境
两台 mysql 服务器
172.16.1.2 mysql + keepalived
172.16.1.12 mysql + keepalived
一台测试机
172.16.1.1
3.环境部署
一台 mysql 服务器 + keepalived
1)对于mysql源码安装或者yum 安装均可,此处不多讲。
2) 主MySQL配置
主MySQL安装时间同步器,yum -y install ntp
vim /etc/ntpd.conf
添加
server 127.127.1.0
fudge 127.127.1.0 startum 8
启动service ntpd start
配置mysql目录下的 my.cnf文件
vim my.cnf
[mysqld]
log-slave-updates=true #开启从服务器的日志更新
server-id = 11 #主服务器的ID ,这个可以随便定,但是与从服务器要不同
log-bin=mysql-bin #开启二进制日志
登录mysql, mysql -uroot -p123456
创建myslave 账号,并授权可以复制
grant replication slave on *.* to 'myslave'@'172.16.1.12' identified by '123456';
flush privileges;
显示主服务的状态;
show master status;
记住file 及position位置的字符串,在配置从服务时候会用到。
至此,主 mysql 配置完成,重启service mysqld restart
3)从mysql服务配置
MySQL安装时间同步器,yum -y install ntpdate
ntpdate 172.16.1.2 时间同步
配置mysql目录下的 my.cnf文件
在其中添加
[mysqld]
relay-log=relay-log-bin # 传递日志,前缀为 relay-log-bin
relay-log-index=slave-relay-bin.index # 传递日志的索引文件
log-bin=mysql-bin #开启二进制日志
server-id = 12 #服务器的ID ,这个可以随便定,但是与主服务器要不同
重启服务 service mysqld restart
登录mysql, mysql -uroot -p123456
change master to master_host ='172.16.1.2',master_user='myslave',master_password='123456',master_log_file='此处为主服务show master 命令显示的 file',master_log_pos='此处为主服务show master 命令显示的 pos'';
此处 master_host ='172.16.1.2',为主mysql的ip
start slave; #开启从服务
show slave status\G; #显示从服务状态
如果
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
两项为yes,则代表启动从服务成功。
如果Slave_IO_Running: No
可能的问题一是主服务和从服务的server-id,不能为重复;二是授权时一定要准确。grant replication slave on *.* to 'myslave'@'172.16.1.12' identified by '123456';
此处172.16.1.12为从服务器的ip
4)以上两步实现了mysql主从复制,我们要实现主主,也就是两台mysql ,一台既是主,也是从,另一台既是主也是从,所以我们按照上面的配置在两台mysql上做相反的从主配置。
主mysql上,做从配置
配置mysql目录下的 my.cnf文件
在其中添加
[mysqld]
relay-log=relay-log-bin # 传递日志,前缀为 relay-log-bin
relay-log-index=slave-relay-bin.index # 传递日志的索引文件
log-bin=mysql-bin #开启二进制日志
重启服务 service mysqld restart
登录mysql, mysql -uroot -p123456
change master to master_host ='172.16.1.12',master_user='myslave',master_password='123456',master_log_file='此处为主服务show master 命令显示的 file',master_log_pos='此处为主服务show master 命令显示的 pos'';
此处的master_host ='172.16.1.12' 为从mysql服务器的ip
start slave; #开启从服务
show slave status\G; #显示从服务状态
如果
Slave_IO_Running: Yes Slave_SQL_Running: Yes
两项为yes,则代表启动从服务成功。
从mysql上,做主配置
配置mysql目录下的 my.cnf文件
vim my.cnf
[mysqld] log-slave-updates=true #开启从服务器的日志更新
登录mysql, mysql -uroot -p123456
创建myslave 账号,并授权可以复制
grant replication slave on *.* to 'myslave'@'172.16.1.12' identified by '123456';
flush privileges;
显示主服务的状态;
show master status;
记住file 及position位置的字符串,在配置从服务时候会用到。
至此,两台MySQL服务器的分别配置了主从,即一台既是主又是从,另一台既是从也是主。
5)mysql主主复制测试
mysql -uroot -p123456 任意登录一台mysql服务器,
create database test default character set utf8;
create table test;
到另一台MySQL上show databases; show tables;
显示了数据库和数据表都已建好,可以看到已经同步成功
6)配置keepalived,实现高可用
在主mysql服务器配置
yum -y install keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
vim /etc/keepalived.conf
vrrp_instance VI_1 { #实例1
state MASTER #状态为主
interface ens33 #绑定网卡
virtual_router_id 11 # id 号,主从一致
priority 100 #优先级为100
advert_int 1
#nopreempt #非抢占模式
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #虚拟ip地址
172.16.1.199
}
}
virtual_server 172.16.1.199 3306 {
delay_loop 2 #间隔2秒检查真实服务器状态
lb_algo wrr #LVS arithmetic
lb_kind DR #LVS model
persistence_timeout 60 #k
protocol TCP
real_server 172.16.1.2 3306 { #真实服务器 ,也就是主mysql服务器
weight 3
#notify_down /usr/local/mysql/bin/mysql.sh # 可执行脚本路径
TCP_CHECK {
connect_timeout 10 #timeout
nb_get_retry 3 #conect times to try to connect
delay_before_retry 3 #interval of retry
connect_port 3306 # check mysql port
}
}
}
启动服务,service keepalived start
在从mysql服务器上配置
yum -y install keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
vim /etc/keepalived.conf
本处只写与主mysql服务器不同处
#备用服务器上为SLAVE
state SLAVE
#绑定vip的网卡为ens33,根据自己服务器网卡
interface ens33
virtual_router_id 11 #与主服务器 id号码一样
#备用服务器上为90
priority 90 #优先级比主mysql服务器小
}
virtual_server 172.16.1.199 3306 {
real_server 172.16.1.12 3306 { #真实服务器 ,也就是从mysql服务器
}
其他与主mysql服务器上配置文件相同
启动服务,service keepalived start
可以在主mysql服务器上看到一个VIP地址,172.16.1.199
4.测试
停止主mysql服务器上的keepalived服务, service keepalived stop
同时查看另一台的从mysql 的ip,ip a
可以看到有一vip ,172.16.1.199
我们在测试机172.16.1.1上登录从mysql , mysql -uroot -p123456 -P 3306 -h 172.16.1.12
登录成功,我们做一个 插入数据实验
use test;
insert into test values();
到两台的数据库下查看,select * from test;
数据同步成功。
启动 主mysql服务器上的keepalived服务, service keepalived start
停止从mysql服务器上的keepalived服务, service keepalived stop
查看另一台的主mysql 的ip,ip a
可以看到有一vip ,172.16.1.199
做同样的操作 insert into test values();
到两台的数据库下查看,select * from test;
数据同步成功,从而实现两台mysql数据库服务器的高可用及主主数据同步。
mysql5.6主主复制及keepalived 高可用的更多相关文章
- Mysql双主热备+LVS+Keepalived高可用部署实施手册
MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...
- Mysql双主热备+LVS+Keepalived高可用操作记录
MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...
- mysql主主、mysql-proxy读写分离、keepalived高可用完美组合
配置mysql主主复制 服务器A:172.16.100.9 服务器B:172.16.100.10 首先在服务器A和服务器B上各安装好单机版mysql5.7,安装好后,再继续下面的操作. 在服务器A和服 ...
- nginx+keepalived高可用及双主模式
高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...
- LVS+Keepalived 高可用环境部署记录(主主和主从模式)
之前的文章介绍了LVS负载均衡-基础知识梳理, 下面记录下LVS+Keepalived高可用环境部署梳理(主主和主从模式)的操作流程: 一.LVS+Keepalived主从热备的高可用环境部署 1)环 ...
- Nginx+keepalived(高可用主备模式)
Nginx+keepalived(高可用主备模式) 环境:centos6.7 准备:两台服务器(虚拟机).两台应用(Tomcat).Nginx.keepalived server1:192.168.2 ...
- Nginx+keepalived(高可用双主模式)
Nginx+keepalived(高可用双主模式) tips:前面已经介绍了nginx+keepalived高可用主从模式,今天补充下高可用的双主模式,均可以作为主机使用 server1:192.16 ...
- nginx+keepalived高可用及双主模式【h】
高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...
- MySQL主主模式+Keepalived高可用
今天闲来无事,打算搭建一个MySQL的高可用架构,采用的是MySQL的主主结构,再外加Keepalived,对外统一提供虚IP.先来说说背景吧,现在的项目为了高可用性,都是避免单节点的存在的,比如,我 ...
随机推荐
- Gecko Robotics, Inc. SE II Test OA -- 菜到扣脚
There are three problems in hackrank. two sum http request to get title binary search (find first la ...
- python接口测试-项目实践(七)脚本优化
七 脚本优化:重复代码的提取成函数:与项目接口相关的都封装到一个类中:添加手工验证脚本,增加输入值的判断逻辑 将所有与该项目接口相关的封装成类 class ProjectApi: #3个数据源接口 d ...
- 【9.29 模拟】T3 小清新最优化(easy)
[题目描述] 给出一个长度为 n 的序列,序列的每个元素为一个二元组,代表一种单目运算: • \((0,x)\): 对于一个数\(a\),将其变为 \(a\&x\).\((\&=x)\ ...
- C++设计模式实现--訪问者(Visitor)模式
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/L_Andy/article/details/36896645 一. 訪问者模式 定义:表示一个作用于 ...
- Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说
版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...
- 成都夏季招聘会IT行业缺口大!
上个周末成都的夏季招聘会在新会展中心举行,我们传智播客的专业市场调查员也深入当中.了解IT行业招聘情况,我们发如今IT软件行业专区招聘的公司特别多,可是去应聘的人却非常少.这意味着IT行业正处于供不应 ...
- LA 3415 保守的老师
题目链接:https://vjudge.net/contest/161820#problem/E 题意: 有一些同学,要从中选出一些同学来,人数尽量多,但是,两两之间要满足至少一个条件(身高差> ...
- 数字游戏II
题面好难找:嘟嘟嘟 贪心 + dp. 首先要按bi的降序排序,让每一次减少大的数尽量靠前.为啥咧?于是我们就需要证明:令sum = a1 - (1 - 1) * b1 + a2 - (2 - 1) * ...
- js中json对象取键和值
1.json中输出各个键值: var ohp = {"星期一":18,"星期二":16,"星期三":19,"星期四":1 ...
- 【JeeSite】登录和主题切换
最高管理员账号,用户名:thinkgem 密码:admin 1. 密码加密:登录用户密码进行SHA1散列加密,此加密方法是不可逆的.保证密文泄露后的安全问题. 在spring-shiro配置文件 ...