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对外提供数据库服务。其它应用程序均通过该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"的行注释掉。
MySQL5.6 双机HA高可用部署方案_第1张图片

再次重新生成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服务是否切换到主机。

你可能感兴趣的:(mysql)