搭建MySQL MHA高可用

摘要:
本文内容参考:http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/MySQLMHA高可用集群环境:Linux:centos6.6MySQL:5.5.49MHA:mha4mysql-manager-0.56-0.el6.noarch.rpm(管理端)以及mha4mysql-node-0.56-0.el6.noarch

本文内容参考:http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/

MySQL MHA 高可用集群

环境:

Linux: centos 6.6

MySQL: 5.5.49

MHA:mha4mysql-manager-0.56-0.el6.noarch.rpm(管理端) 以及mha4mysql-node-0.56-0.el6.noarch.rpm(节点) 192.168.178.128

MySQL主从环境:

Master: 192.168.178.130:3306

Slave:192.168.178.130:3307

192.168.178.130:3308

192.168.178.130:3309

一、配置MySQL多实例:

1)编译安装MySQL   

tar xf mysql-5.5.32.tar.gz 
cd mysql-5.5.32cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 -DMYSQL_DATADIR=/application/mysql-5.5.32/data -DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_FAST_MUTEXES=1 -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0make
make install

2)配置多实例

* 上传配置文件   

mkdir /data/{3306,3307}/data -p
unzip data.zip 
mkdir /data/{3306,3307}/data -p
ln -s /application/mysql-5.5.32/ /application/mysq
find /data -type f -name "mysql"|xargs chmod +x
chown -R mysql.mysql /data

*初始化并启动数据库

cd /application/mysql
./scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/data/3306/data --user=mysql
./scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/data/3307/data --user=mysql 
/data/3306/mysql start
lsof -i:3306mysql -S /data/3306/mysql.sock
/data/3307/mysql start
lsof -i:3307mysql -S /data/3307/mysql.sock

3)配置MySQL主从

*开启binlog,确保主从server-id不同

[root@mysql 3306]# grep log-bin my.cnf 
log-bin = /data/3306/mysql-bin
[root@mysql 3306]# grep server-id my.cnf        
server-id = 1

*登录主库授权从库登录用户

mysql> grant replication slave on *.* to 'rep'@'%' identified by 'oldboy123';
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

* 从库导出数据

mysql> flush table with readlock;  锁表
Query OK, 0 rows affected (0.00sec)
mysql>show master status;
+------------------+----------+--------
| mysql-bin.000001 |      476 |            
+------------------+----------+--------
[root@mysql ~]# mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock -A -B --events >/opt/mysql_bak.sql
mysql> unlock tables; 解锁

* 将数据恢复到从库 

[root@mysql opt]# mysql -uroot -poldboy456 -S /data/3307/mysql.sock <mysql_bak.sql  
[root@mysql opt]# mysql -uroot -poldboy456 -S /data/3307/mysql.sock -e "show databases;"

* 配置用户及位置信息(slave上执行) 

CHANGE MASTER TOMASTER_HOST='192.168.160.138',
MASTER_PORT=3307,
MASTER_USER='slave',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

* 开启同步开关

mysql>start slave;
Query OK, 0 rows affected (0.00sec)
mysql>show slave statusG
   Slave_IO_Running: Yes
   Slave_SQL_Running: Yes
   Seconds_Behind_Master: 0

下面这一步一定要做,否则在使用masterha_check_repl检查主从复制情况的时候会报错

# ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

首选需要确保MySQL主从配置成功

二、配置MHA

需要用到的两个软件:

mha4mysql-manager-0.56-0.el6.noarch.rpm (MHA管理端)

mha4mysql-node-0.56-0.el6.noarch.rpm (node)

MHA管理服务器上安装:

mha4mysql-manager-0.56-0.el6.noarch.rpm (MHA管理端)

mha4mysql-node-0.56-0.el6.noarch.rpm (node)

管理端

# yum install perl-DBD-MySQL
# yum install perl-Config-Tiny
# yum install perl-Log-Dispatch
# yum install perl-Parallel-ForkManager
# yum install -y rrdtool perl-rrdtool rrdtool-devel perl-Params-Validate
# yum install -y perl-Time-HiRes
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm --nodeps --force
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm --nodeps --force

在node节点上

yum install perl-DBD-MySQL
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm --nodeps --force

在所有MySQL的实例上授权MHA管理账号

mysql> grant all privileges on *.* to mha@'%' identified by '123456';

在管理端创建MHA的工作目录和日志目录

mkdir /etc/masterha/ -p
/var/log/masterha/app1/ -p

编辑配置文件/etc/masterha/app1.cnf

[server default]manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
user=mha    #MHA的授权管理用户
password=123456ssh_user=root
repl_user=slave   #MySQL主从实例授权的用户
repl_password=123ping_interval=1shutdown_script=""
master_ip_online_change_script=""
report_script=""

[server1]hostname=192.168.178.130port=3306candidate_master=1  #可以成为mastermaster_binlog_dir="/data/3306"    #binlog目录


[server2]hostname=192.168.178.130port=3307candidate_master=1  #可以成为mastermaster_binlog_dir="/data/3307"

[server3]hostname=192.168.178.130port=3308    master_binlog_dir=/data/3308no_master=1    #不能成为master

[server4]hostname=192.168.178.130port=3309master_binlog_dir=/data/3309no_master=1    #不能成为master

检验MHA各种配置信息:

masterha_check_ssh --conf=/etc/masterha/app1.cnf    #检查SSH互认是否成功
masterha_check_repl --conf=/etc/masterha/app1.cnf  #检查MySQL主从复制是否成功
masterha_manager --conf=/etc/masterha/app1.cnf &

观察日志:

Sat Aug 27 10:33:04 2016 - [info]db2 (currentmaster)
 +--db1
 +--db3
 +--db4
Sat Aug 27 10:33:04 2016 - [warning] master_ip_failover_script is notdefined.
Sat Aug 27 10:33:04 2016 - [warning] shutdown_script is notdefined.
Sat Aug 27 10:33:04 2016 - [info] Set master ping interval 1seconds.
Sat Aug 27 10:33:04 2016 - [warning] secondary_check_script is not defined. It is highly recommended setting it to check master reachability from two ormore routes.
Sat Aug 27 10:33:04 2016 - [info] Starting ping health check on (192.168.178.130:3306)..
Sat Aug 27 10:33:04 2016 - [info] Ping succeeded, sleeping until it doesn't respond..

故障测试:

stop 3306实例,看日志主库是否切换到3307实例上

Started automated(non-interactive) failover.
The latest slave 192.168.178.130(192.168.178.130:3307) has all relay logs forrecovery.
Selected 192.168.178.130(192.168.178.130:3307) asa new master.
192.168.178.130(192.168.178.130:3307): OK: Applying alllogs succeeded.
192.168.178.130(192.168.178.130:3309): This host has the latest relay logevents.
192.168.178.130(192.168.178.130:3308): This host has the latest relay logevents.
Generating relay diff files fromthe latest slave succeeded.
192.168.178.130(192.168.178.130:3309): OK: Applying all logs succeeded. Slave started, replicating from 192.168.178.130(192.168.178.1
30:3307)
192.168.178.130(192.168.178.130:3308): OK: Applying all logs succeeded. Slave started, replicating from 192.168.178.130(192.168.178.1
30:3307)
192.168.178.130(192.168.178.130:3307): Resetting slave info succeeded.
Master failover to 192.168.178.130(192.168.178.130:3307) completed successfully.

说明切换成功!!!

此篇文档有点乱,在搭建的过程中要根据自己的配置信息及日志信息,一步一步的解决问题直至一切OK!!!

免责声明:文章转载自《搭建MySQL MHA高可用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ORACLE 常见错误及解决方法集锦Adobe Reader XI 已停止工作的解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Cloudera Manager及CDH最新版本安装全程记录

   大家都知道,Apache Hadoop的配置很繁琐,而且很零散,为此Cloudera公司提供了Clouder Manager工具,而且还封装了Apache Hadoop,flume,spark,hive,hbase等大数据产品形成自己特色的CDH产品,再使用CM进行安装,很大程度上方便了集群的搭建,并提供了集群的监控功能。 一、环境: 1.三台VMw...

phpstudy里升级mysql版本到5.7

phpstudy里没有地方可以设置mysql数据库,很多人都疑惑在phpstudy里怎么升级mysql数据库版本,本文就教你如何在phpstudy中升级mysql的版本。 PhpStudy集成环境中的mysql数据库的版本默认是mysql5.5,下面是PhpStudy升级数据库到mysql5.7的方法: 1:备份当前数据库数据,可以导出数据库文件,作为备份...

sqlyog ssh 无法连接mysql

首先描述一下问题   问题:sqlyog 使用ssh免密,(使用本地私钥)无法连接mysql数据库   解决方案:   1.sqlyog 秘钥格式是以.ppk结尾的加密串,需要使用putty工具进行生成网上资料基本是生成的1024,但是一直提示unable to authenticate 但是没有解决问题重点是把1024改成2048   2.排查的话使用t...

kubernetes集群部署mysql 8.0

参考:https://blog.csdn.net/sealir/article/details/81177747?utm_source=blogxgwz1 集群内安装mysql并添加相应存储(PVC)  新建mysql-pvc.yaml、mysql-deploy.yaml和mysql-svc.yaml,分别如下:  先找出当前k8s集群下的storageC...

转: mysql create view 创建视图

以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图—create view与修改MySQL视图——alter view等相关内容的具体描述,以下就是文章的具体内容介绍。 一. 视图概述 MySQL视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数...

CentOS7安装zabbix

二进制包安装    centos 7 添加阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum install epel-release 安装常用的开发组件 yum groups install "Develo...