网站建设知识
MySQL5.6双机HA高可用部署方案
2025-07-22 10:00  点击:0
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安装文件。注意,如果下载时找不到文件,就登录到:mirrors.163/centos/6/os/x86_64/ 上查找相应的文件。然后再下载。
wget mirrors.163/centos/6/os/x86_64/Packages/yum-3.2.29-73.el6.centos.noarch.rpmwget mirrors.163/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpmwget mirrors.163/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpmwget mirrors.163/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpmwget mirrors.163/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.rpmrpm -Uvh python-urlgrabber-3.9.1-11.el6.noarch.rpmrpm -Uvh yum-metadata-parser-1.1.2-16.el6.x86_64.rpmrpm -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 - basebaseurl=mirrors.163/centos/6/os/$basearch/gpgcheck=1gpgkey=mirrors.163/centos/RPM-GPG-KEY-CentOS-6#released updates[updates]name=CentOS-$releasever - Updatesbaseurl=mirrors.163/centos/6/updates/$basearch/gpgcheck=1gpgkey=mirrors.163/centos/RPM-GPG-KEY-CentOS-6#packages used/produced in the build but not released#[addons]#name=CentOS-$releasever - Addons#baseurl=mirrors.163/centos/$releasever/addons/$basearch/#gpgcheck=1#gpgkey=mirrors.163/centos/RPM-GPG-KEY-CentOS-6#additional packages that may be useful[extras]name=CentOS-$releasever - Extrasbaseurl=mirrors.163/centos/6/extras/$basearch/gpgcheck=1gpgkey=mirrors.163/centos/RPM-GPG-KEY-CentOS-6#additional packages that extend functionality of existing packages[centosplus]name=CentOS-$releasever - Plusbaseurl=mirrors.163/centos/6/centosplus/$basearch/gpgcheck=1enabled=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/hosts192.168.2.6   mysql1192.168.2.8   mysql2192.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 PyXMLyum -y install cluster-glueyum -y install resource-agentsyum -y install pacemaker*

安装heartbeat软件: yum -y install heartbeat*
7、修改双机配置文件ha.cf
cd /etc/ha.dvi ha.cfdebugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility     local0keepalive 500msdeadtime 30warntime 10initdead 120udpport 694bcast   eth0ucast   eth1 10.0.0.11auto_failback offnode    mysql1node    mysql2ping    192.168.2.254respawn hacluster /usr/lib64/heartbeat/ipfailapiauth ipfail gid=haclient uid=haclustercompression     bz2compression_threshold 2
注:主、备机只有ucast一个参数不一样。
8、添加资源配置文件
vi /etc/ha.d/haresourcesmysql1 192.168.2.9/24/eth0:1 Filesystem::/dev/sdb1::/hadata::ext4 mysqld
注:主、备机的设置一致。

9、添加认证文件
vi /etc/ha.d/authkeysauth 22 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。
makemake 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-filescp mysql.server /etc/rc.d/init.d/mysqldchkconfig --add mysqldchkconfig mysqld off
注:这里把mysqld的服务设置为不会随系统启动。这是为了避免主、备机系统在重启时,意外导致两个主机上都启动了mysql。
调整PATH环境变量:
vi /etc/profilePATH=/usr/local/mysql/bin:$PATHexport PATHsource /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服务是否切换到主机。