什么是尼古拉斯高可用集群架构

<强>尼古拉斯简介

简介

尼古拉斯(主高可用性)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司的youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。

在MySQL故障切换过程中,尼古拉斯能做到在0 ~ 30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,尼古拉斯能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

该软件由两部分组成

尼古拉斯经理(管理节点)和尼古拉斯节点(数据节点).MHA经理可以单独部署在一个独立的机器上管理多个主从集群,也可以部署在一台奴隶节点上.MHA节点运行在每台MySQL服务器上,尼古拉斯经理会定时探测集群中主节的点,当主人出现故障时,它可以自动将最新数据的奴隶提升为新的主人,然后将所有其他的奴隶重新指向新的主人。整个故障转移过程对应用程序完全透明。

工作过程

从宕机崩溃的主保存二进制日志文件事件

识别含有最新更新的奴隶

应用差异的中继日志(relay-log)到其他的奴隶

应用从主保存的二进制日志事件

提升一个奴隶为新主人的

使其他的奴隶连接新的主进行复制

<强>实验环境

主(192.168.149.29)

slave1 (192.168.149.130)

slave2 (192.168.149.128)

经理(192.168.149.150)

<强>实验步骤

在三台主从服务器上安装MySQL数据库

#安装编译依赖环境
[root@master ~] yum - y安装gcc gcc-c + + ncurses ncurses-devel野牛perl-Module-Install cmake
root@master ~ #山。cifs//192.168.100.100/工具/mnt/工具/,,# #挂载工具包
密码root@//192.168.100.100/工具:,
[root@master ~] # cd/mnt/工具/尼古拉斯/
[root@master尼古拉斯)# tar xf cmake-2.8.6.tar。广州- c/opt/,# #解压
[root@master mnt] cd/opt/cmake-2.8.6/
[root@master尼古拉斯)# cd/opt/cmake-2.8.6/,# #配置
[root@master cmake-2.8.6] gmake,,gmake安装,# #编译安装
#安装mysql数据库
[root@master cmake-2.8.6] # cd/mnt/工具/尼古拉斯/
[root@master尼古拉斯)# tar xf mysql-5.6.36.tar。广州- c/opt/t # #解压MySQL
#编译MySQL
[root@master尼古拉斯)# cd/opt/mysql-5.6.36/
[root@master mysql-5.6.36] # cmake -DCMAKE_INSTALL_PREFIX=/usr/地方/MySQL \
-DDEFAULT_CHARSET=utf8 \,,# #指定字符集
-DDEFAULT_COLLATION=utf8_general_ci \,,# #指定字符集默认
-DWITH_EXTRA_CHARSETS=所有\,# #关联额外的所有字符集
-DSYSCONFDIR=/等,,# #配置文件目录
#安装
[root@master mysql-5.6.36] #做,,制作安装,# #编译安装
#设置环境变量
[root@master mysql-5.6.36] # cp支持文件/my-default.cnf/etc/my.cnf, # #复制配置文件
[root@master mysql-5.6.36] # cp支持文件/mysql。服务器/etc/rc.d/init.d/mysqld
# #复制启动脚本
[root@master mysql-5.6.36] # chmod + x/etc/rc.d/init.d/mysqld, # #给执行权限
[root@master mysql-5.6.36] # chkconfig——添加mysqld, # #添加到服务管理中
[root@master mysql-5.6.36] #回声“路径=$路径:/usr/地方/mysql/bin"在比;/etc/profile
# #修改环境变量
[root@master mysql-5.6.36] #源/etc/profile,# #刷新华宁变量
#创建mysql数据库,并授权
[root@master mysql-5.6.36] # groupadd mysql,# #创建组
[root@master mysql-5.6.36] # useradd mysql - g - m - s/sbin/nologin mysql,
# #创建系统用户
[root@master mysql-5.6.36] #乔恩- r mysql。mysql/usr/local/mysql, # #修改属组属主
[root@master mysql-5.6.36] # mkdir - p/数据/mysql, # #创建数据目录
#初始化数据库
[root@master mysql-5.6.36] #/usr/local/mysql/scripts/mysql_install_db \
——basedir=/usr/地方/mysql \, # #文件目录
——datadir=/usr/地方/mysql/数据\,# #数据目录
——用户=mysql,# #用户

修改mysql的主配置文件:

/etc/my . cnf中所做

# #配置主服务器:
[root@master mysql-5.6.36] # vim/etc/my.cnf
(mysql)
服务器id=1
#开启二进制日志
log_bin=master-bin
#允许从服务器进行同步
log-slave-updates=true

# #配置从服务器1:
[root@slave1 mysql-5.6.36] # vim/etc/my.cnf
(mysql)
服务器id=2
#开启二进制日志
log_bin=master-bin
#使用中继日志进行同步
relay-log=relay-log-bin
relay-log-index=slave-relay-bin。指数

# #配置从服务器2:
[root@slave2 mysql-5.6.36] # vim/etc/my.cnf
(mysql)
服务器id=3
log_bin=master-bin

什么是尼古拉斯高可用集群架构