MHA搭建
安装MySQL:(RPM包安装)
系统环境:
Linux version 2.6.32-642.el6.x86_64 mysql Ver 14.14 Distrib 5.6.40 mha-manager-0.56,mha-node-0.56
- 在CentOS6的yum源中没有mysql,在mysql的官网(https://downloads.mysql.com/archives/community/)中进行下载,相关的rpm包:
- mha软件包:
https://pan.baidu.com/s/1CT6sVEAShxAHaeGYeX2tNw
整体架构:
+ 角色分配:
+ 整体架构图:
安装部分:
MySQL安装:
- 先查看系统本身是否存在MySQL或者mariadb,若存在将其卸载(把一切与mysql有关的都删除):
rpm -qa | grep mysql && yum -y remove mysql
whereis mysql
find / -name mysql - 将下载好的压缩包解压:
[ mysql5.6]# rpm -ivh MySQL-* #安装 - 安装完成后,查看MySQL初始密码并进行修改:
使用此密码登入数据库进行密码修改:
mysql> set password=password(‘1234‘)- 配置三个数据节点的主从关系:
修改 节点master 的数据库配置文件/etc/my.cnf,追加
server-id=205
log-bin=mysql-bin,同理修改其他两个节点的配置文件,注意server-id不可相同。保存后重启数据服务。
[ mysql5.6]# /etc/init.d/mysql restart
登入数据库,进行授权操作:
mysql> grant replication slave,reload,super on . to ‘192.168.1.%‘ identified by ‘1234‘;
mysql> flush privileges;
对 节点slave1 进行操作,如master节点一样修改相应的参数文件后,重启mysql服务然后登入数据库。配置从属关系。
mysql > change master to master_host=‘192.168.1.205‘,master_port=3306,master_user=‘slave‘,master_password=‘1234‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=423;
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> grant replication slave,reload,super on . to ‘192.168.1.%‘ identified by ‘1234‘;
mysql> flush privileges;
对节点slave2 进行操作,同样修改参数文件后,登入数据库更改从属关系。
mysql > change master to master_host=‘192.168.1.205‘,master_port=3306,master_user=‘slave‘,master_password=‘1234‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=423;
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> grant replication slave,reload,super on . to ‘192.168.1.%‘ identified by ‘1234‘;
mysql> flush privileges;- 进行测试
登入master节点,执行 mysql> show slave hosts;看到其他两个从节点即成功。
- 进行测试
执行安装命令:
yum -y install mysql-server
等待安装完成后,查看相应的包是否安装成功
rpm -qa | grep mysql
启动MySQL:
systemctl start mysqld
查看MySQL是否正常启动:
netstat -antp | grep mysqld
由于MySQL安装启动后会自动生成临时密码,需要在日志中将此密码过滤出来:
grep ‘temporary password‘ /var/log/mysqld.log
登录成功后,进行密码的修改
此时未修改临时密码需要先进行修改
mysql> set password=‘#‘;
开启远程控制:
MySQL默认未开启远程控制即只能自己访问别的主机无法访问此数据库,必须添加远程访问的用户。 - 配置三个数据节点的主从关系:
MHA安装与配置:
+ 首先配置四台主机之间免密登陆。
[ ~]# echo -e "\n" |ssh-keygen -t dsa -N ""
[ ~]# ssh-copy-id -i .ssh/id_dsa.pub
[ ~]# ssh-copy-id -i .ssh/id_dsa.pub
[ ~]# ssh-copy-id -i .ssh/id_dsa.pub
- 安装软件。
先创建repo,使用ftp给各节点推送安装包(方法有很多)。
vim ftp-mha.repo
[mha]
name=mha
baseurl=
enabled=1
gpgcheck=0
给各个非manager节点安装mha4mysql-node。
并执行:
mysql> grant super,reload,replication client,select on . to ‘192.168.1.%‘ identified by ‘1234‘;
mysql> grant create,insert,update,delete,drop on. to ‘192.168.1.%‘;
mysql> flush privileges;
在manager节点上编辑配置文件:
vim /etc/masterha_default.cnf
[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
remote_workdir=/var/log/masterha/app
ssh_user=root
user=manager
password=1234
repl_user=slave
repl_password=1234
ping_interval=1
master_ip_failover_script="/etc/masterha/master_ip_failover"
master_ip_online_change_script="/etc/masterha/master_ip_online_change"
mkdir /etc/masterha
vim /etc/masterha/app1.cnf
/*---
[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
ssh_user=root
user=manager
password=1234
repl_user=slave
repl_password=1234
ping_interval=1
[server1]
hostname=192.168.1.211
candidate_master=1
master_binlog_dir=/data/mysql/
[server2]
hostname=192.168.1.202
candidate_master=1
master_binlog_dir=/data/mysql/
[server3]
hostname=192.168.1.205
candidate_master=1
master_binlog_dir=/data/mysql/