作者:墨篱弦

简易拓扑

https://oscimg.oschina.net/oscnet/up-18b70e55451e4e69d0f449e6329034bdcfa.png

实验环境

 Mysql40.11(master-1)    192.168.40.11/24  Mysql40.12(master-2)    192.168.40.12/24   Keepalived    192.168.40.18/24

安装依赖环境和mysql(过程略)

配置master-1和master-2互为主从关系

修改master-1的mysql配置

vim /etc/my.cnf
#log configlog-bin=mysql-binrelay-log=relay-logrelay-log-index=relay-log.indexserver-id=11innodb-file-per-table=ONskip_name_resolve=ON

重启数据库

systemctl restart mysqld

连接数据库

mysql -uroot -p******

查看日志信息

show global variables like '%log%';

https://oscimg.oschina.net/oscnet/up-64a20398db3d3663300345fe3fea58549b4.png

https://oscimg.oschina.net/oscnet/up-52bdc44bcc14d0b72aefc988ae4093ca146.png

在master-1创建有复制权限的用户

grant replication slave on *.* to 'backup'@'%' identified by 'Backup123!@#';
flush privileges;

修改master-2的mysql配置

vim /etc/my.cnf
#log configlog-bin=log-binrelay-log=relay-logrelay-log-index=relay-log.indexserver-id=12innodb_file_per_table=ONskip_name_resolve=ON

在master-2创建有复制权限的用户

grant replication slave on *.* to 'backup'@'%' identified by 'Backup123!@#';
flush privileges;

重启数据库

systemctl restart mysqld

连接数据库

mysql -uroot -p123456

查看日志信息

show global variables like '%log%';


在master-1上查看log-bin文件名和pos值

show master status;

在master-2上开启主从

mysql> change master to    -> master_host='192.168.40.11',     -> master_user='backup',     -> master_password='Backup123!@#',     -> master_log_file='mysql-bin.000001',    -> master_log_pos=591;
start slave;

查看主从状态

show slave status\G

master-1与master-2主从关系建立成功

同理现在创建master-2与master-1的主从关系

在master-2上查看log-bin文件名和pos值

show master status;

在master-1上开启主从

mysql> change master to    -> master_host='192.168.40.12',     -> master_user='backup',     -> master_password='Backup123!@#',     -> master_log_file=' log-bin.000003',    -> master_log_pos=591;
start slave;

查看主从状态


验证master-1和master-2是否互为主从

创建远程访问账号

grant all privileges on *.*to 'test'@'%'  identified by '123qwe!@#QWE' with grant option;

端口为默认端口号

show global variables like '%port%';

在master-1创建新库 123


在master-2上查看数据库是否同步过来

img

在master-2上的数据库123上创建新表321


在master-1上的数据库123查看是否同步过来了新表

img

验证通过,master-1和master-2互为主从关系

在两台服务器上分别安装keepalived(过程略)

给master-1和master-2分别安装keepalived

Master-1安装keepalived

安装依赖坏境

yum -y install curl gcc openssl-devel libnl3-devel net-snmp-devel libnfnetlink-devel

创建/data/keepalived,创建/software

mkdir –p /data/keepalivedmkdir –p /software

上传安装包到/software, 解压安装包, 进入keepalived-2.1.5目录

tar -zxvf keepalived-2.1.5.tar.gzcd keepalived-2.1.5

编译安装

./configure --prefix=/data/keepalived --sysconf=/etcmake & manke install

进入安装后的路径

cd /data/keepalived/

创建软连接,覆盖软连接

ln -s sbin/keepalived /sbin/ln -snf sbin/keepalived /sbin

复制运行命令

cp /software/keepalived-2.1.5/keepalived/etc/init.d/keepalived /etc/init.dchkconfig --add keepalived

添加到系统服务(开机启动),启动服务

chkconfig keepalived onservice keepalived start

Master-2安装和master-1相同

在master-1上创建chk_mysqld检测mysql是否运行的脚本,添加脚本执行权限

vim chk_mysqld.sh
#!/bin/bashA=`ps -C mysqld --no-header|wc -l`  if [ $A -eq 0 ];then     systemctl start mysqld  sleep 2   if [ `ps -C mysqld --no-header|wc -l` -eq 0 ];then       killall keepalived   fi fi
chmod 775 chk_mysqld.sh

配置master-1的keepalived

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {

   router_id MYSQL

   }

vrrp_script chk_mysqld {

       script "/root/chk_mysqld.sh"

       interval 10

       weight -5

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 18

    priority 100

    advert_int 1

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 1111

        }

    virtual_ipaddress {

        192.168.40.18/24

        }

        track_script {

           chk_mysqld

        }

}

重启keepalived,查看是否拿到虚拟IP

service keepalived restartip add

在master-2上创建chk_mysqld检测mysql是否运行的脚本,添加脚本执行权限

vim chk_mysqld.sh
#!/bin/bashA=`ps -C mysqld --no-header|wc -l`  if [ $A -eq 0 ];then     systemctl start mysqld  sleep 2   if [ `ps -C mysqld --no-header|wc -l` -eq 0 ];then       killall keepalived   fi fi
chmod 775 chk_mysqld.sh

配置master-2的keepalived

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {   router_id MYSQL   }

vrrp_script chk_mysqld {       script "/root/chk_mysqld.sh"       interval 10   }

vrrp_instance VI_1 {    state BACKUP    interface ens33    virtual_router_id 18    priority 99    advert_int 1    authentication {        auth_type PASS        auth_pass 1111        }

virtual_ipaddress {        192.168.40.18/24        }

 track_script {           chk_mysqld        }

}

重启keepalived,查看是否拿到虚拟IP

service keepalived restartip add    #因为设置了非抢占,默认谁优先开机启动完成,谁为主库,谁拿到vip

验证keepalived的非抢占

重启master-1并查看master网络信息


在查看master-1网络信息


验证数据库

目前主库在40.12


重启master-2看数据库是否会自动切换到master-1上


数据库发生了切换期间出现过一次丢包


对数据的影响还未验证。。

还可以测试下,如果直接down网口的情况下 服务器以及数据库是否能实现自动切换?

Nginx+keepalived一主一从高可用,手把手带你一步一步配置!

干货 | 利用 TCP/IP 模型理解数据通信过程

干货 | Oracle数据库操作命令大全,满满的案例供你理解,收藏!

mysql命令大全_Keeplived+mysql双master高可用如何实现?相关推荐

  1. mysql 中有什么命令_常用mysql命令大全

    常用的MySQL命令大全 连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命 ...

  2. 基于keepalived的mysql_【实用】基于keepalived的mysql双主高可用系统

    原标题:[实用]基于keepalived的mysql双主高可用系统 mysql单节点存储时,系统出现故障时服务不可用.不能及时恢复的问题,因此实际使用时,一般都会使用mysql双机方案,使用keepa ...

  3. MySQL集群(四)之keepalived实现mysql双主高可用

    前面大家介绍了主从.主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一.keepalived简介 1.1.keepalived介绍 Kee ...

  4. Keepalived+Haproxy+Mysql(双主)高可用架构部署

    Keepalived+Haproxy+Mysql(双主)高可用架构部署 一.背景 公司原部署的Mysql架构为keepalived+Mysql双主,但是这个架构有个缺陷是所有的读写请求都在一台机器上( ...

  5. linux下mysql命令大全

    linux下mysql命令大全 1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux ...

  6. linux mysql 命令 大全

    linux mysql 命令 大全 1.linux下启动mysql的命令:   mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.l ...

  7. mysql host 为%,mysql清理host为%的用户Mysql命令大全(完整版)

    一.连接数据库 格式:mysql -h主机地址 -u用户名 -p用户密码 1.1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -u root -p ...

  8. MySQL - 高可用性:少宕机即高可用?

    MySQL - 高可用性:少宕机即高可用? 原文:MySQL - 高可用性:少宕机即高可用? 我们之前了解了复制.扩展性,接下来就让我们来了解可用性.归根到底,高可用性就意味着 "更少的宕机 ...

  9. MySQL HA(High Availability) 数据库高可用工具Orchestrator安装

    目录 1.下载安装包 2.安装 backend MySQL server 3.在MySQL实例上授权 4.启动orchestrator 服务 5.参考 本文主要介绍如何在本地安装 MySQL HA(H ...

最新文章

  1. python 字符编码的两种方式写法:# coding=utf-8和# -*- coding:utf-8 -*-
  2. sqlite like concat 怎么 替代_Joplin:真正的 Evernote 开源替代品
  3. Android文件Apk下载变ZIP压缩包解决方案
  4. Rails 使用 Google Analytics 示例
  5. thinkphp js带参数跳转页面
  6. 典型排序算法(C语言实现)
  7. python网站访问日志分析_python分析apache网站日志web日志的代码
  8. 双十一喜报式实时成交额今年没了
  9. 淘宝分类大全及其分组 (MySql, xls)文件,上下关系,拼写,层级,层级树,提示,2022年2月28日数据
  10. DSP6678 中断程序
  11. API调用,API传参,面向对接开发,你真的会写接口文档吗?
  12. android expandablerecycle 动画,Android Expandable RecyclerView不同卡高
  13. 关于80286——《x86汇编语言:从实模式到保护模式》读书笔记15
  14. 计算机信息与科学专业好吗,俄亥俄州立大学 计算机信息与科学这个专业怎么样...
  15. notebook pip install 只有星号_只有300人的”乡镇企业“:1件卖8亿垄断全球,帮三星称王,比光刻机还重要...
  16. 《程序员的创世传说》设定资料
  17. 技术篇(二)Demo示例——Bundle打包和加载
  18. 最值得看的电影,一生必看的50部电影,您看过几部影
  19. [交流] 新手常见(五国)(-v图)错误解决(原版,破解kernel,补丁kext下载)
  20. 境外服务器停机:原因、影响以及如何预防

热门文章

  1. 怎样改动SharePoint管理中心的语言
  2. “相当一部分”HPE公司OpenStack工作人员被转移至SUSE
  3. 数据中心UPS维护和使用十大注意事项
  4. Sun公司发布最新版本的JDK 6 update 11
  5. Android年月日选择,Android日期选择器实现年月日三级联动
  6. 信息学奥赛一本通 2054:【例3.4】适合晨练
  7. Sequence(BZOJ-1345)
  8. 信息学奥赛一本通C++语言——1041:奇偶数判断
  9. 17 FI配置-财务会计-定义雇员的容差组
  10. 日语学习-多邻国-平假名3