首页 > 代码库 > mysql高可用解决方案之---nfs
mysql高可用解决方案之---nfs
1 背景
sql1 主 sql2 备
nfs
依赖于nfs,nfs挂则都挂了
heartbeat + nfs 实现mysql的高可用性
2 实验
web1(mysql主) 192.168.204.5
web2(mysql备) 192.168.204.6
nfs 192.168.204.7
VIP 192.168.204.8
步骤
如上篇一样利用heartbeta 构建好 高可用的环境,这里不做介绍
安装mysql 方法及配置nfs
1 nfs上面
[root@nfs .ssh]# yum install -y nfs-utils 安装nfs
[root@nfs .ssh]# id mysql
uid=500(mysql) gid=500 组=500 确保三者的mysql 用户和组一致,不一致请修改至一致
[root@nfs .ssh]# mkdir -p /data/nfs/mysql 创建mysql的共享目录
[root@nfs .ssh]# chown -R mysql:mysql /data/nfs/mysql/ 设置属性
[root@nfs .ssh]# echo "/data/nfs/mysql 192.168.204.5(rw,no_root_squash) 192.168.204.6(rw,no_root_squash)" >> /etc/exports
导出共享给 ..注意权限一定是可读写且no_root_squash
[root@nfs .ssh]# /etc/init.d/nfs start 启动nfs
[root@nfs .ssh]# showmount -e 192.168.204.7 查看是否导出正确
2 mysql(主)的配置
挂载nfs
[root@web1 local]# id mysql
uid=500(mysql) gid=500(mysql) 组=500(mysql)
[root@web1 local]# mkdir -pv /data/mysql
[root@web1 local]# chown -R mysql.mysql /data/mysql/
[root@web1 local]# mount -t nfs 192.168.204.7:/data/nfs/mysql /data/mysql
准备好 二进制编译的 mysql包
mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
解压并初始化
cd /usr/local/src
tar xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
cd ..
ln -s src/mysql-5.6.21-linux-glibc2.5-x86_64 mysql
[root@web1 local]# chown -R mysql.root mysql/
cd mysql
[root@web1 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
复制启动文件和 配置文件
[root@web1 mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@web1 mysql]# cp support-files/my-default.cnf /etc/my.cnf
修改启动文件/etc/init.d/mysqld
basedir=/usr/local/mysql 程序放置路径
datadir=/data/mysql 数据文件放置的路径
启动mysql
[root@web1 mysql]# /etc/init.d/mysqld start
mysql 登入
/usr/local/mysql/bin/mysql
mysql> create database testdb;
测试是否能成功
3 msyql 备 操作 与主的区别在于 此处不需要在初始化了,利用主初始化好的,进行运行mysql
挂载nfs
[root@web2 local]# id mysql
uid=500(mysql) gid=500(mysql) 组=500(mysql)
[root@web2 local]# mkdir -pv /data/mysql
[root@web2 local]# chown -R mysql.mysql /data/mysql/
[root@web2 local]# mount -t nfs 192.168.204.7:/data/nfs/mysql /data/mysql
准备好 二进制编译的 mysql包
mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
解压
cd /usr/local/src
tar xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
cd ..
ln -s src/mysql-5.6.21-linux-glibc2.5-x86_64 mysql
[root@web2 mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@web2 mysql]# cp support-files/my-default.cnf /etc/my.cnf
修改启动文件/etc/init.d/mysqld
basedir=/usr/local/mysql 程序放置路径
datadir=/data/mysql 数据文件放置的路径
启动mysql
[root@web2 mysql]# /etc/init.d/mysqld start (启动前 关闭 主mysql上的mysqld 因为只能同时存在一个)
mysql 登入
/usr/local/mysql/bin/mysql
mysql> create database testdb2;
测试是否能成功
4 测试高可用
heartbeat.x86_64
修改 ha.cf haresources
修改 ha.cf 重要的两条
node web1
node web2
修改 haresources
web1 192.168.204.8/24/eth0 mysqld
[root@web1 ha.d]# scp ha.cf haresources authkeys web2:/etc/ha.d/
启动heartbeat,前者一定不能手动启动mysqld
[root@web1 ha.d]# /etc/init.d/heartbeat status
[root@web1 ha.d]# ssh web2 ‘/etc/init.d/heartbeat start‘
测试
[root@web1 ha.d]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:db:d8:64 brd ff:ff:ff:ff:ff:ff
inet 192.168.204.5/24 brd 192.168.204.255 scope global eth0
inet 192.168.204.8/24 brd 192.168.204.255 scope global secondary eth0
[root@web1 ha.d]# /etc/init.d/mysqld status
MySQL running (4511)[确定]
测试转移
[root@web1 ha.d]# /usr/share/heartbeat/hb_standby
Going standby [all].
查看web2上mysql 是否启动
[root@web2 ha.d]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:45:16:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.204.6/24 brd 192.168.204.255 scope global eth0
inet 192.168.204.8/24 brd 192.168.204.255 scope global secondary eth0
inet6 fe80::20c:29ff:fe45:166b/64 scope link
valid_lft forever preferred_lft forever
[root@web2 ha.d]# /etc/init.d/mysqld status
SUCCESS! MySQL running (3798)
mysql高可用解决方案之---nfs