目录
(2)在master上配置到slave1和salve2的无密码认证
(3)在slave1上配置到master和salve2的无密码认证
(4)在slave2上配置到master和salve1的无密码认证
(1)在MHA节点上复制相关脚本到/usr/local/bin目录
一、MHA概述
1.MHA简介
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,MHA是由日本人开发,是一套优秀的MySQL故障切换和主从复制的高可用软件。
在MySQL故障切换的过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能够最大程度上保证数据库的一致性,以达到真正意义上的高可用。
MHA由perl语言编写,该工具仅仅使用于MySQLReplication环境,目的在于维持Master主库的高可用性。
MHA是基于标准的MySQL主从复制(异步/半同步)。
MHA由两部分组成管理节点(MHA manager)和数据节点(MHA Node)两部分组成。
MHA manager 可以单独部署在一台服务器上,可以部署在一台slave上面。
主从复制架构:主从复制(一主多从);MHA架构(多主多从);MMM架构(3主多从)。2.MHA特点
自动故障切换过程中,MHA总会试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失。但这并不总是可行,例如如果主服务器硬件故障或者无法通过ssh访问,MHA则无法保存二进制日志,只能进行故障转移而丢失了最新的数据。
使用MySQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。
有时候可故意设置从节点慢于主节点,当发生意外删除数据库倒是数据丢失时可从从节点二进制日志中恢复。MHA :为了解决的了是故障切换、数据尽可能的保存,以及所有节点日志的一致性。
二、 MHA
1.环境
服务器
MHA-manager :192.168.22.168 管理节点,安装 manager 组件与node组件MySQL服务器
master 192.168.22.128安装 node 组件
slave1 192.168.22.228安装 node 组件
slave2 192.168.22.126安装 node 组件2.安装编译依赖环境(三台MySQL服务器)
yum -y install ncurses-devel gcc-c++ perl-Module-Install 安装cmake编译工具 mount.cifs //192.168.226.1/LAMP-C7 /mnt cd /mnt tar zxvf cmake-2.8.6.tar.gz -C /opt cd /opt/cmake-2.8.6/ ./configure gmake && gmake install 安装mysql5.6 cd /mnt tar zxvf mysql-5.6.26.tar.gz -C /opt cd /opt/mysql-5.6.26/ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DSYSCONFDIR=/etc make && make install
3.复制启动脚本与配置文件
/etc/init.d/:各种服务器和程序的二进制文件存放目录。 /etc/rc.d/: 各个启动级别的执行程序连接目录。里头的文件很多都是指向init.d/的一些软连接 cp support-files/my-default.cnf /etc/my.cnf cp support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld echo 'PATH=$PATH:/usr/local/mysal/bin' >> /etc/profile source /etc/profile useradd -M -s /sbin/nologin mysql chown -R mysql.mysql /usr/local/mysql mysql_install_db 初始化,目录文件basedir和数据文件datadir都必须要有 /usr/local/mysql/scripts/mysql_install_db \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data \ --user=mysql
4.修改master的主配置文件
开启二进制日志log_bin,允许从服务器同步log-slave-updates 22行之后 cat /etc/my.cnf [mysqld] server-id = 1 log-bin = master-bin log-slave-updates = true
5.配置从服务器
在/etc/my.cnf 中修改或者增加下面内容 开启中继日志,创建索引,同步主服务器 slave 1 vim /etc/my.cnf server-id = 2 log_bin = master-bin relay-log = relay-log-bin relay-log-index = slave-realy-bin.index slave 2 vim /etc/my.cnf server-id = 3 log_bin = master-bin relay-log = relay-log-bin relay-log-index = slave-realy-bin.index
master、slave1、slave2分别做两个软链接
第一个是mysql命令 第二个mysqlbinlog是节点恢复 ln -s /usr/local/mysql/bin/mysql /usr/sbin ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin
在后台启动mysql服务
(mysql_safe 安全启动,相当于多了一个守护进程,mysqld挂了会自动把mysqld进程拉起来) /usr/local/mysql/bin/mysqld_safe --user=mysql &
6.配置MySQL 一主两从
在所有数据库节点上授权两个用户,一个是从库同步使用,另一个是manager使用 grant replication slave on *.* to 'myslave'@'192.168.22.%' identified by '123456'; grant all privileges on *.* to 'mha'@'192.168.22.%' identified by 'manager'; 下面三条授权理论上不用添加,通过MHA检查MySQL主从报错, 报两个从库通过主机名连接不上主库,所以所有数据库都需要添加以下授权 通过mha检查的时候,是通过主机名的形式进行监控,这种情况会容易报错 grant all privileges on *.* to 'mha'@'master' identified by 'manager'; grant all privileges on *.* to 'mha'@'slave1' identified by 'manager'; grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';
所有从库开启只读功能(不会对超级管理员super生效,普通用户)
set global read_only=1; flush privileges;
在master上查看二进制文件和同步点
show master status;
7.在两台节点服务器进行同步
change master to master_host='192.168.22.128',master_use