iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL高可用架构:mysql+keepalived实现
  • 375
分享到

MySQL高可用架构:mysql+keepalived实现

2024-04-02 19:04:59 375人浏览 安东尼
摘要

系统环境及架构#主机名    系统版本        Mysql版本  ip地址 mysqlMaster    Centos7.4        mysql5.7        192.168.1.42

系统环境及架构

#主机名		   系统版本	       Mysql版本	 ip地址
mysqlMaster	   Centos7.4	       mysql5.7	       192.168.1.42
mysqlSlave	   centos7.4	       mysql5.7	       192.168.1.43
#vip:192.168.1.41

MySQL高可用架构:mysql+keepalived实现

在master和slave上分别进行数据库的安装

yum install epel*  -y && yum clean all && yum makecache 
rpm -Uvh Http://repo.mysql.com/mysql57-commUnity-release-el7.rpm
yum clean all && yum makecache
yum install GCc gcc-c++ openssl-devel mysql mysql-server mysql-devel -y

创建数据库文件存放路径

mkdir /data/mysql -p
chown -R mysql:mysql /data/mysql

配置mysql配置文件

#在mysqlMaster上配置mysql配置文件

vi /etc/my.cnf
[mysqld]
server-id = 1		#全局唯一,每台都不能一样
log-bin = mysql-bin	#log-bin表示开启二进制日志记录,mysql-bin表示日志文件的命名格式,会生成mysql-bin.0001 等等
relay-log = mysql-relay-bin	#指定中继日志格式(拉取主mysql日志后,在从库上生成的日志)
replicate-wild-ignore-table=mysql.%	#指定那些库或则表不进行同步,mysql是库名,.%表示下面所有的表,mysql.user  表示不同不mysql库下的user表
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=infORMation_schema.%
#replicate-wild-do-table=boke.%		#表示同步那个库
#注意:不要在主库上使用binlog-do-db 或 binlog-ignore-db选项
#也不要在从库上使用 replicate-do-db 或 replicate-ignore-db 选项,因为这有可能产生跨库更新失败的问题.推荐从库上使用 replicate_wild_do_table 和 replicate_wild_ignore_table 这两个选项来解决复制过滤问题
datadir=/data/mysql
Socket=/data/mysql/mysql.sock
user=mysql
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
[mysql]
socket=/data/mysql/mysql.sock
default-character-set=utf8
[client]
socket=/data/mysql/mysql.sock
default-character-set=utf8
user=root
passWord=NCYD-tianyu@0791
#若是不写上这个字段,在本机用命令进入mysql会报错,提示默认路径/var/lib/mysql/mysql.sock找不到

在mysqlSlave上配置mysql配置文件

vi /etc/my.cnf
[mysqld]
server-id = 2
log-bin = mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
datadir=/data/mysql
socket=/data/mysql/mysql.sock
user=mysql
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
[mysql]
socket=/data/mysql/mysql.sock
default-character-set=utf8
[client]
socket=/data/mysql/mysql.sock
default-character-set=utf8
user=root
password=NCYD-tianyu@0791

#若是不写上这个字段,在本机用 命令 进入mysql会报错,提示默认路径/var/lib/mysql/mysql.sock找不到,先初始化数据库(需要进行初始化在/data/mysql目录里生成必要的信息)

#mysql5.7.7以后的初始化方法
mysqld --initialize --user=mysql --datadir=/data/mysql
#mysql5.7.7以前的初始化方法
mysql_install_db --user=mysql --datadir=/data/mysql
分别启动主从数据库
#在centos7里面,必须先关闭selinux,否在无法启动mysqld
systemctl start mysqld
分别为主从mysql做安全加固
#查到上一步,首次启动mysql,系统自动生成的密码( cat /var/log/mysqld.log |grep pass )
mysql_secure_installation	#使用该命令更改随机root密码(修改为 NCYD-tianyu@0791 )
手动同步数据(假如现在的环境,主上已经有数据了,从是新的)
1:在主上数据库中创建用于复制的用户,并授权
mysql> GRANT REPLICATION SLAVE ON *.* to 'tongbu'@'192.168.1.43' identified by '123456789';
2:在主mysql上先表(使其所有表变成只读状态)
mysql> flush tables with read lock;		#不要退出终端,否在这个锁就失效了
3:再开启另一个命令行终端,使用myqldump等工具将数据导出(或则直接打包存储mysql数据的目录,并发送到从机上)
4:将导出数据复制到从机上,并创建新库并导入数据
互相置从,互相置主(以达到双主模式)

在mysqlMaster上将mysqlSlave设置为自己的主角色服务器

mysql> show master status;	#查看mysqlSlave的状态(记录File名字,和Position)
change master to
master_host = '192.168.1.43',
master_user = 'tongbu',
master_password = '123456789',
master_log_file = 'mysql-bin.000002',
master_log_pos = 1006;
mysql> start slave;      #启动slave端的复制进程(某些版本是:slave start; )
mysql> show slave status\G  #查看slaves端的I/O进程,与SQL进程

在从上将mysqlMaster设置为自己的主角色服务器

mysql> show master status;	#查看mysqlMaster的状态(记录File名字,和Position)
change master to
master_host = '192.168.1.42',
master_user = 'tongbu',
master_password = '123456789',
master_log_file = 'mysql-bin.000002',
master_log_pos = 1006;
mysql> start slave;      #启动slave端的复制进程
mysql> show slave status\G  #查看slaves端的I/O进程,与SQL进程

验证是否同步

1:第一验证在myssqlMaster上创建库,mysqlSlave上是否存在

2:第二验证在mysqlSlave上创建库,mysqlMaster上是否存在

郑州不孕不育医院:http://jbk.39.net/yiyuanzaixian/zztjyy/

安装keepalived实现VIP切换,达到高可用

yum install keepalived -y
#在mysqlMaster和mysqlSlave上都创建检查mysql的检查脚本,并赋予执行权限
touch /etc/keepalived/mysql_check.sh
chmod +x /etc/keepalived/mysql_check.sh
vi /etc/keepalived/mysql_check.sh
#!/bin/bash
#slave_is=( $(mysql -uroot -pNCYD-tianyu@0791 -e "show slave status\G" | grep "Slave_.*_Running" | awk '{print $2}') ) 在新版本的myql中,直接将密码写在命令行,会进行安全提示,解决办法是将其写在mysql的配置文件里的 [client] 字段里,写法见上面mysql的配置文件
slave_is=( $(mysql -e "show slave status\G" | grep "Slave_.*_Running" | awk '{print $2}') )
if [ "${slave_is[0]}" = "Yes" -a "$slave_is[1]" = "Yes"]
	then
	exit 0
else
	exit 1
fi

#注意,keepalived检查 脚本 vrrp_script,只认两个返回值,0表示正常,非0表示不正常(这在写脚本是要注意),不正常就要做相关的切换

配置keepalived,以实现高可用

vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict		#注意:当你发现无法ping通虚拟VIP时,建议将此行注释掉
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script mysql_check {
	script "/etc/keepalived/mysql_check.sh"
	#这个脚本,若是发现不执行,可以检查他的权限,777是不可以的,日志提示不安全,可以直接chmod +x /etc/keepalived/mysql_check.sh 就行
	#script "shutdown -r now"	#或者,直接用命令进行调试
	interval 2
	weight 2
}
vrrp_instance VI_1 {
    state MASTER	#mysqlMaster上是MASTER;mysqlSlave上是BACKUP
    interface ens192
    virtual_router_id 52
    priority 100	#mysqlMaster上是100;mysqlSlave上是90
    advert_int 1
    nopreempt		#配置VIP(注意:故障切换抢占模式,尽量关闭,默认是开启的,这个参数只需要在高优先级上设置即可)
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {	#调用上面定义检查mfsmaster的脚本
        mysql_check
    }
    virtual_ipaddress {
        192.168.1.41/24 dev ens192
    }
}

启动keepalived

systemctl start keepalived


您可能感兴趣的文档:

--结束END--

本文标题: MySQL高可用架构:mysql+keepalived实现

本文链接: https://www.lsjlt.com/news/37869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • keepalived中怎么构建高可用MySQL-HA
    本篇文章给大家分享的是有关keepalived中怎么构建高可用MySQL-HA,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。环境拓扑如下MyS...
    99+
    2024-04-02
  • MHA实现MySQL高可用集群架构
    转转连接 https://www.cnblogs.com/tanxiaojun/p/10424699.html MHA简介 MHA(Master HighAvailability)目前在MySQL高可...
    99+
    2024-04-02
  • Ubuntu搭建Mysql+Keepalived高可用如何实现
    这篇文章将为大家详细讲解有关Ubuntu搭建Mysql+Keepalived高可用如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Mysql5.5双机热备实现方案安装两台Mysql安装Mysql5....
    99+
    2023-06-21
  • MySQL高可用架构之MaxScale实践
        本次安装部署基于MHA已部署的情况下,只部署MaxScale,并且采用的是rpm包安装     MaxScale是ma...
    99+
    2024-04-02
  • MySQL+KeepAlived+LVS单点写入主主同步高可用架构实例教程
    这篇文章主要讲解了“MySQL+KeepAlived+LVS单点写入主主同步高可用架构实例教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL+Ke...
    99+
    2024-04-02
  • MySQL中怎么实现集群高可用架构
    今天就跟大家聊聊有关MySQL中怎么实现集群高可用架构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL+DRDB架构通过DRBD基于bloc...
    99+
    2024-04-02
  • mysql+keepalived 双主热备高可用
    理论介绍: 我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。MySQL双主复制,即互...
    99+
    2024-04-02
  • MySQL高可用架构之MHA架构全解
    目录一、介绍二、组成三、工作过程四、架构五、实例展示MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating m...
    99+
    2024-04-02
  • 【MySQL】【高可用】基于MHA架构的MySQL高可用故障自动切换架构
    基于MHA架构的MySQL高可用切换架构 环境: ​ CentOS7+MySQL 5.7 + GTID 业务系统:mainBusiness ​ node1 : 192.16...
    99+
    2024-04-02
  • mysql MHA 高可用架构部署
    MHA简介:即Master High Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具, 该工具仅...
    99+
    2024-04-02
  • MySQL之高可用架构详解
    目录引言MySQL高可用一主一备:MySQL主从同步的几种模式:总结引言 “高可用”是互联网一个永恒的话题,先避开MySQL不谈,为了保证各种服务的高可用有几种常用的解决方案。 服务...
    99+
    2024-04-02
  • Ubuntu搭建Mysql+Keepalived高可用的实现(双主热备)
    Mysql5.5双机热备 实现方案 安装两台Mysql 安装Mysql5.5 sudo apt-get update apt-get install aptitud...
    99+
    2024-04-02
  • MySQL高可用之MHA架构企业实战
    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Oracle、MySQL、...
    99+
    2023-08-17
    mysql 架构 数据库 MHA
  • Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
    1、组件及实现的功能 Keepalived:实现对Haproxy服务的高可用,并采用双主模型配置; Haproxy:实现对Nginx的负载均衡和读写分离; Nginx:实现对HTTP...
    99+
    2024-04-02
  • MySQL数据库实现高可用架构之MHA的实战
    目录一、MySQLMHA介绍1.1什么是MHA1.2MHA的组成1.3MHA的特点二、MySQLMHA搭建1.MHA架构部分2.故障模拟部分3.实验环境三、实验步骤1、关闭防火墙和S...
    99+
    2024-04-02
  • Keepalived如何实现Nginx高可用
    目录Keepalived实现Nginx高可用Master上的keepalived.confBackup上的keepalived.confNginx检测脚本check_nginx.sh...
    99+
    2022-11-13
    Keepalived Nginx Nginx高可用 Keepalived Nginx高可用
  • 怎么用KeepAlived搭建MySQL高可用环境
    本篇内容介绍了“怎么用KeepAlived搭建MySQL高可用环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • mairadb+galera+haproxy+keepalived如何实现mysql负载均衡与高可用
    这篇文章主要介绍了mairadb+galera+haproxy+keepalived如何实现mysql负载均衡与高可用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一:服务器...
    99+
    2023-06-04
  • MySQL中如何选择高可用架构
    MySQL中如何选择高可用架构,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一 、高可用架构MySQL Replication...
    99+
    2024-04-02
  • MySQL高可用架构的PXC实践是怎样的
    这篇文章给大家介绍MySQL高可用架构的PXC实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、PXC简介    官方介绍: &nb...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作