MySQL5.6 双机HA高可用部署方案

2023-11-12

1、mysql主备机管理信息
10.0.0.10(192.168.2.6)
10.0.0.11(192.168.2.8)
注:前面的是管理地址,括号中为生产地址。
mysq vip : 192.168.2.9
注:mysql双机软件通过上面的vip对外提供数据库服务。其它应用程序均通过该vip地址连接数据库。
2、共享磁盘的配置与测试
对共享磁盘创建一个分区并初始化文件系统:
mkfs.ext4 /dev/sdb1
共享磁盘测试
手工把共享磁盘挂载到主机的/mnt下,写入测试数据:
mount /dev/sdb1 /mnt
dd if=/dev/zero of=/mnt/test.log bs=1024 count=10000
把共享磁盘从主机上摘下来,并重新挂载到备机的/mnt目录下,查看刚才在主机上创建的文件状态无异常。
继续在备机上向共享磁盘写入一个测试文件:
dd if=/dev/zero of=/mnt/test_bak.log bs=1024 count=10000
以上测试可以确认共享磁盘
在mysql主、备机上创建目录/hadata,用于mysql数据目录。
mkdir -p /hadata
chmod 775 /hadata
完成以上测试后,请将共享磁盘挂载到主机的/hadata目录。在主备机上分别编译安装mysql5.6.26时,主机上的mysql数据目录将直接存储在/hadata的共享磁盘中,这份数据是以后主备机共享的。备机则在编译安装时,可以直接使用系统本地的/hadata目录进行安装。
如果是使用CentOS6,则请直接跳过下面第3步。
3、修改红帽系统使用的yum源和epel扩展源
删除redhat原有的yum:
rpm -aq|grep yum|xargs rpm -e --nodeps 
下载yum安装文件。注意,如果下载时找不到文件,就登录到:http://mirrors.163.com/centos/6/os/x86_64/ 上查找相应的文件。然后再下载。
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-73.el6.centos.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm


安装:

rpm -Uvh python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm -Uvh python-urlgrabber-3.9.1-11.el6.noarch.rpm
rpm -Uvh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
rpm -Uvh yum-3.2.29-73.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
更新repo文件:
mv /etc/yum.repos.d/*.repo /root/
vi /etc/yum.repos.d/rhel-debuginfo.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.163.com/centos/6/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.163.com/centos/6/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

#packages used/produced in the build but not released
#[addons]
#name=CentOS-$releasever - Addons
#baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
#gpgcheck=1
#gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.163.com/centos/6/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.163.com/centos/6/centosplus/$basearch/
gpgcheck=1
enabled=0


重新生成yum缓存:
yum clean all 
yum makecache
执行以下命令看是否能查到有效的软件列表:
yum search ssh
继续安装yum epel扩展源:
yum install epel-release
编辑epel配置文件epel.repo 和epel-testing.repo :
请按下图所示,把“baseurl”所在行的注释去掉,同时把所有的"mirrorlist"的行注释掉。
再次重新生成yum缓存:
yum clean all 
yum makecache
执行以下命令看是否能查到有效的软件列表:
yum search glue
4、设置主、备机的ntp时间同步
目前为主、备机设置了每天一次与公网ntp server的时间同步。如果以后这两个mysql服务器会禁止访问外网,请将下图中的公网ntp server更换为内部网络中的服务地址。mysql ha 双机间的时间需要保持一致,否则会对双机ha产生影响。
5、设置主备机的主机名映射
vi /etc/hosts
192.168.2.6   mysql1
192.168.2.8   mysql2
192.168.2.9   heartbeat
6、安装双机HA软件heartbeat-3.0.4-*
先安装heartbeat软件所依赖的各种工具包:
yum -y groupinstall "Development tools"
yum -y groupinstall "High Availability"
yum -y groupinstall "High Availability Management"
yum -y install autoconf automake libtool gcc gcc-c++ libxml2-devel bzip2-devel glib2-devel libtool libtool-ltdl PyXML
yum -y install cluster-glue
yum -y install resource-agents
yum -y install pacemaker*

安装heartbeat软件:
yum -y install heartbeat*
7、修改双机配置文件ha.cf
cd /etc/ha.d
vi ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
keepalive 500ms
deadtime 30
warntime 10
initdead 120
udpport 694
bcast   eth0
ucast   eth1 10.0.0.11
auto_failback off
node    mysql1
node    mysql2
ping    192.168.2.254
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
compression     bz2
compression_threshold 2
注:主、备机只有ucast一个参数不一样。
8、添加资源配置文件
vi /etc/ha.d/haresources
mysql1 192.168.2.9/24/eth0:1 Filesystem::/dev/sdb1::/hadata::ext4 mysqld
注:主、备机的设置一致。
9、添加认证文件
vi /etc/ha.d/authkeys
auth 2
2 crc
调整文件权限:
chmod 600 authkeys
注:主、备机的设置一致。
10、编译安装mysql5.6.26
两个主机均上传源码文件至/opt/mysql-5.6.26.tar.gz。主、备机均需按以下步骤编译安装一个mysql5.6.26 。
安装依赖工具包:
yum -y install make gcc-c++ cmake bison bison-devel  ncurses-devel libaio
创建管理用户:
groupadd mysql
useradd -r -g mysql mysql
解压:
tar zxvf mysql-5.6.26.tar.gz
cd mysql-5.6.26
编译:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/hadata/mysql \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1
注:mysql的安装目录为/usr/local/mysql,数据目录为/hadata/mysql,配置文件放置在/etc/my.cnf。其中/hadata是共享磁盘的挂载目录,mysql运行在哪个主机上时,该共享磁盘就会被挂载到哪个主机的/hadata。
make
make install
调整目录属主权限:
chown -R mysql.mysql /usr/local/mysql
初始化数据库:
cd /usr/local/mysql/scripts
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/hadata/mysql
配置mysql服务管理:
cd /usr/local/mysql/support-files
cp mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld off
注:这里把mysqld的服务设置为不会随系统启动。这是为了避免主、备机系统在重启时,意外导致两个主机上都启动了mysql。
调整PATH环境变量:
vi /etc/profile
PATH=/usr/local/mysql/bin:$PATH
export PATH
source /etc/profile
启动数据库:
service mysqld start
数据库安全加固处理:
mysql_secure_installation
测试主、备机上的mysql服务:
分别在主、备机上执行service mysqld start, service mysqld stop, 观察是否可以正常启、停mysql数据库服务。
以上测试无误后,请关闭备机上的mysql服务,并继续下一步的配置。
11、为heartbeat增加mysql服务调度的相关设置
cd /etc/ha.d/resource.d
cp /etc/init.d/mysqld ./ chkconfig mysqld off
注:主、备机均要设置。这是为了避免系统自动重启时,意外得造成主、备机同时启动了mysql服务。
12、双机高可用的测试
通过service heartbeat status判断heartbeat是否在启动。
先在主机上执行:
service heartbeat start
然后在备机上也启动heartbeat:
service heartbeat start
  • 在主机上使用ip a查看eth0网卡的IP地址是否多出一个VIP地址。
  • 在主机上使用df -h查看共享磁盘分区是否正常挂载在主机的/hadata目录。
  • 在主机上使用ps -ef|grep sql查看mysql服务是否正常运行。
当mysql运行在主机上时,通过关闭主机上的hearbeat(service heartbeat stop)或者是重启主机的系统(reboot),测试浮动IP、共享磁盘和mysql服务是否切换到备机。
当mysql运行在备机上时,通过关闭备机上的hearbeat(service heartbeat stop)或者是重启主机的系统(reboot) ,测试浮动IP、共享分区和mysql服务是否切换到主机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL5.6 双机HA高可用部署方案 的相关文章

随机推荐

  • 使用echarts当数据为空时展示空状态占位图

    在开发echarts的时候我们不得不考虑数据为空的情况 其实有很多种解决办法 我自己是这样做的 有更好的办法请私信我 共同学习 大概长这样 创建你的utils export const setNotopt demo subtext 暂无数据
  • 四.结构型——装饰者模式-Java代码

    0 设计模式 摘录 问题 动态地给一个对象 不是类 添加一些额外的职责 从增加功能的角度 Decorate模式比用子类更为灵活 Decorator和所装饰的对象具有相同的接口 使用它们的程序不必区别它们 对比组合模式 都是声明一个公共的接口
  • PBFT算法实现过程

    转载 https www jianshu com p 2383c7841d41 PBFT算法 三个阶段 预准备 pre prepare 准备 prepare 和确认 commit 步骤 从全网节点选举出一个主节点 Leader 新区块由主节
  • echarts图表(动态加载有多少折线)

    以展示柱 折线图为例 1 后台数据获取 横坐标为天数 String legend legend String yAxisDataLineTotal null 纵坐标 二维数组 String sqlJld select DISTINCT w
  • 再次搬家到自建博客http://www.wikieee.com/blog/leiad/homepage

    CSDN页面太乱了 我自建了一个网站 当然先把自己的博客放上去了 http www wikieee com blog leiad homepage 欢迎大家访问 这里已经废弃
  • sudo killall -STOP -c usbd

    Mac本连接手机数据线进行调试 总是连接不上手机 或者连接上老是断开 并不断弹出窗口提示等情况 或者开发中使用Xcode连接真机调试 总是断 并发出系统响声 以为是电脑的雷电接口的问题 其实不是的 用的时间长了 你会发现 之前连接过的设备更
  • STM32寻迹小车

    第一次发博客 以及第一次坐智能小车 可能有很多瑕疵和不足 一 项目时间 2022 11 19 11 22 二 实现效果 小车进行循迹行驶 三 使用模块 STM32F103RCT6核心板 1 L298N电机驱动模块 2 TCRT5000L五路
  • Linux初级工程师应知应会

    Linux初级工程师应知应会 权限管理 1 Linux用户及权限 1 Linux用户和组 Linux中的用户 root用户 系统用户 用户组 2 Linux权限构成 Linux的权限组成 Linux的权限分类 3 Linux文件与文件夹权限
  • 在python文件中执行另一个python文件

    在一个python文件中执行另一个python文件 import os def fun os system python filename py fun
  • Ubuntu 虚拟化环境太卡 解决方案

    场景描述 虚拟机环境 ets 操作系统 Ubuntu 22 04 内存 32G CPU 4 2 异常描述 照理说上面的配置不会出来卡的情况 开机后运行一段时间后不关机会卡到Dan 痛 原因 swappiness值配置问题 使用的物理内存 0
  • Shell—几种循环操作

    前言 在写Shell脚本时 对于循环的几种写法 我想大家并不陌生 但若不是经常写 也会遗忘一些循环语法 或者只能够想起某一两种语法编写脚本 本文就来总结一下Shell中经常使用的循环操作 以及各种操作之间的区别和不同作用 测试代码 在编写S
  • C++ Primer阅读笔记--C++11新标准总结1

    1 constexpr 常量表达式表示值不会改变 在编译过程中就能得到计算结果的表达式 C 11新标准允许将变量声明为 constexpr 类型 以便由编译器来验证变量的值是否是一个常量表达式 声明为 constexpr 的变量一定是一个常
  • SpringBoot请求响应参数防篡改

    SpringBoot请求响应参数防篡改 概述 有时候 为了接口安全 防止接口数据被篡改 我们需要对请求 响应参数进行加签 验签 支持复杂请求参数验签 定义签名规则如下 必填参数 timeStamp 时间戳 用于校验请求是否过期 randSt
  • 嵌入式linux驱动与linux应用的区别简单理解

    linux的应用 linux的应用代码可以基于PC去进行开发 因为linux系统本身就带了linux的内核代码 所以在这个基础上 我们可以直接通过读写文件对设备进行操作 之后生成执行文件 同样的 如果我们设计一款产品 他要可以跑linux的
  • java读取properties配置文件工具类

    获取配置文件中配置信息 String xxx DataParamReader getDataParam xxx public class DataParamReader private static Logger log Logger ge
  • 小学生阅读测试软件,小学生阅读能力测评

    小学生阅读能力测评 由会员分享 可在线阅读 更多相关 小学生阅读能力测评 4页珍藏版 请在人人文库网上搜索 1 小学生阅读水平测评在课堂教学中使用形成性评价有什么好的做法 一 视听结合 感知理解 提升阅读效率 阅读教学是语文教学的重要组成部
  • linux 查找当前系统nginx 的路径

    nginx 的路径查找 工作中有很多服务器 它们上面装的 nginx 的路径也太不相当 当我们拿到一个不熟悉的服务器时 我们怎么知道 当前运行的nginx 的目录是哪一个呢 并且还有一种情况是 本机中有两个以上的nginx 的目录 那么我们
  • JAVA中的循环结构

    1 什么是Java中的循环结构 在Java编程中 我们经常使用循环结构来完成重复的任务 循环结构是一种非常有用的工具 可以让我们在程序中反复执行某个操作 直到满足特定条件为止 2 在Java中循环结构的分类有哪些 Java中有三种主要的循环
  • 哈希算法(哈希函数)基本

    一 什么是哈希 Hash 哈希也称 散列 函数或 杂凑 函数 它是一个不可逆的单向映射 将任意长度的输入消息M 或文件F 映射成为一个较短的定长哈希值H M 也叫散列值 HashValue 杂凑值或消息摘要 可见 这是一种单向密码体制 只有
  • MySQL5.6 双机HA高可用部署方案

    1 mysql主备机管理信息 10 0 0 10 192 168 2 6 10 0 0 11 192 168 2 8 注 前面的是管理地址 括号中为生产地址 mysq vip 192 168 2 9 注 mysql双机软件通过上面的vip对