heartbeatV2实现MySQL+NFS高可用
实验前准备
1.时间需要同步,建议使用NTP服务器同步时间并且创建时间同步计划
#ntpdate 172.16.0.1 //第一个节点 #ntpdate 172.16.0.1 //第二个节点 crontab -e */3 * * * * /usr/sbin/ntpdate 172.16.0.1 > /dev/null
2.root用户基于密钥认证的时候
ssh-keygen -t rsa -P ‘‘ //节点一 ssh-copy-id -i ~/.ssh/id_rsa.pub node3 ssh-keygen -t rsa -P ‘‘ //节点二 ssh-copy-id -i ~/.ssh/id_rsa.pub node2
3./etc/hosts文件作好IP对应的主机名的解析
172.16.249.122 node2 172.16.249.141 node3
全部准备好了之后。
下载安装需要的包:
准备安装:我这里是FTP服务器存储的。
lftp172.16.0.1:/pub/Sources/6.x86_64> mirror heartbeat2/
解决依赖关系及包的安装:
#yum -y installnet-snmp-libs libnet PyXML #rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm #rpm -ivhheartbeat-stonith-2.1.4-12.el6.x86_64.rpm #rpm -ivhheartbeat-gui-2.1.4-12.el6.x86_64.rpm #rpm -ivhheartbeat-2.1.4-12.el6.x86_64.rpm
思路:实现MySQL+NFS的高可用。将NFS作为MySQL的共享存储服务器。首先需要一台机,作为NFS服务器,然后创建两个节点为mysql。把mysql数据库分别初始化为NFS挂载的目录。通过heartbeatv2实现管理。
搭建NFS服务器
[[email protected] ~]# mkdir /mydata/data [[email protected] ~]# cat/etc/passwd | cut -d: -f 3 | grep "400" [[email protected] ~]#groupadd -r -g 400 mysql [[email protected] ~]# useradd-r -g 400 -u 400 mysql [[email protected] ~]# id mysql uid=400(mysql)gid=400(mysql) groups=400(mysql) [[email protected] ~]# chown -R mysql:mysql /mydata/data [[email protected] ~]# ll -d /var/lib/mysql drwxr-xr-x 4 mysql mysql4096 Jan 1 15:31 /mydata/data [[email protected] ~]# vim/etc/exports /data/mysql 172.16.0.0/16(rw,no_root_squash) [[email protected]~]# exportfs -arv //重新导出挂载所有的文件系统
到MySQL节点查看结果:
[[email protected] ntp]# showmount -e 172.16.249.239 //这个IP是我们NFS的IP, Exportlist for 172.16.249.239:/mydata/data /mydata172.16.11.1/16
各节点MySQL的创建
现在开始建立MySQL服务器
使用二进制版本安装mysql的过程就是一下几个步骤:
1.创建用于访问数据的库的用户。
2.创建由mysql数据存储的目录,属主数组都为mysql。
3.修改解压文件的所有属主为root属组为mysql
4.进行脚本初始化。
5.为服务添加配置文件和脚本
[[email protected] ~]# groupadd -r -g 400 mysql //id号要保持一致不然没办法写操作 [[email protected] ~]# useradd -r -g 400 -u 400 mysql # mkdir /var/lib/mysql //创建一个单独文件,用于mysql作为数据库挂载nfs使用 chown -R mysql:mysql /var/lib/mysql // 给予数据库权限 lftp172.16.0.1:/pub/Sources/6.x86_64/mariadb> mgetmariadb-5.5.36-linux-x86_64.tar.gz lftp172.16.0.1:/pub/Sources/6.x86_64/mariadb> bye [[email protected] tmp]# tar -zxf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local/ [[email protected] local]# ln-sv mariadb-5.5.36-linux-x86_64/ mariadb #cd mariadb 创建便于使用的软连接 #chown-R root:mysql ./* 把解压的mysql目录下的所有文件属主改为root ,属组改为mysql。 [[email protected] mariadb]#./scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql #cd support-files #cp mysql.server /etc/init.d/mysqld #[[email protected]]# cp my-large.cnf /etc/mysql/my.cnf #vim /etc/mysql/my.cnf thread_concurrency = 8 datadir = /mydata Innodb_file_per_table= on skip_name_resolve = on [[email protected] init.d]#chkconfig --list mysqld service mysqld supportschkconfig, but is not referenced in any runlevel (run ‘chkconfig --add mysqld‘) [[email protected]]# chkconfig --add mysqld 加入服务 [[email protected]]# chkconfig mysqld off 让集群内的服务不能卡机自动重启
添加环境变量及其他文件
#Vim /etc/profile.d/mysql.sh //添加如下行 #export PATH=/usr/local/mysql/bin:$PATH
为mysql添加man文件
cd/usr/local/mysql/man/man1 gzip ./* cp ./* /usr/share/man/man1/
Man mysql查看效果
导出库文件
# cd /etc/ld.so.conf.d/ vim /etc/ld.so.conf.d/mariadb.conf 写入lib的文件路径 /usr/local/mysql/lib
启动MySQL
[[email protected] mysql]# service mysqld start mysql> showdatabases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00sec) mysql> GRANT ALL ON *.* TO ‘root‘@‘172.16.%.%‘ IDENTIFIED BY ‘password‘; Query OK, 0 rowsaffected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rowsaffected (0.00 sec) //我这里使用一个远程用户登陆:查看结果 #service mysql restart [[email protected] local]# mysql -uroot-h172.16.11.3 -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.36-MariaDB-log MariaDBServer Copyright (c) 2000, 2014, Oracle, MontyProgram Ab and others. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.
至此,我们的第一个节点的mysql可用了。
那么现在就可以是创建第二个节点了。但是要注意的是:由于第一个节点在之前已经初始化过了。因此这里直接就可以挂载使用了。但是在使用前先把之前的最好卸载掉节点。
同样步骤添加节点二的MySQL的。这里不在描述。
验证MySQL可用
验证另一个节点MySQL可用
配置heartbeatV2可用
在node2节点执行如下操作:
cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,authkeys} /etc/ha.d/ # vim /etc/ha.d/ha.cf 修改以下内容: mcast eth0 226.11.11.11 694 1 0 auto_failback on node node2 node node3 ping 172.16.0.1 # vim /etc/ha.d/authkeys 添加以下内容: auth 2 2 sha1 8d64d1aeff0d chmod 600 /etc/ha.d/authkeys # scp ha.cf authkeys node node3:/ect/ha.d/ /etc/init.d/heartbeat start;ssh node3 ‘/etc/init.d/heartbeat start‘
开启图形化界面,进行资源配置:
service heartbeat start;ssh node3 ‘service heartbeat start‘
# hb_gui &
添加组资源
依次添加流动IP和MySQL和文件系统资源
前两比较简单只演示文件系统的添加方式:
添加资源的约束关系:order:
切换节点测试
登陆MySQL验证结果即可!