搭建MHA
安装MySQL 5.7
- yum源的配置文件如下
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
gpgcheck=0
使用yum install mysql-community-server -y安装mysql
安装完毕mysql之后的配置操作
- systemctl start mysqld
- cat /var/log/mysqld.log | grep password --> 获取临时密码
- mysql -uroot -p -> 输入临时密码
- set password for 'root'@'localhost' = password('New@password123');
- flush privileges;
- systemctl stop mysqld -> 先关闭mysqld, 注意: 如果卡住了, 使用Ctrl + C结束, 在使用ps aux | grep mysqld 查看到mysqld进程的id号, 使用kill -9 id杀死mysqld进程, 在使用systemctl stop mysqld
修改/etc/my.cnf配置文件的[mysqld]域
master节点
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server_id=1
innodb_file_per_table=1
log_bin=master-bin
relay_log=relay-bin
read_only=1
relay_log_purge=0 # 一定要开启
plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_slave_enabled = 1
rpl_semi_sync_master_timeout = 5000
slave1 节点(主需要修改server_id)
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server_id=10
innodb_file_per_table=1
log_bin=master-bin
relay_log=relay-bin
read_only=1
relay_log_purge=0
plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_slave_enabled = 1
rpl_semi_sync_master_timeout = 5000
- slave2 节点(主需要修改server_id)
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server_id=11
innodb_file_per_table=1
log_bin=master-bin
relay_log=relay-bin
read_only=1
relay_log_purge=0
plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_slave_enabled = 1
rpl_semi_sync_master_timeout = 5000
systemctl start mysqld 启动master, slave1, slave2节点
这三个节点之间需要ssh互相密钥通信, 方便起见, 在master节点执行, ssh-keygen -i rsa -P "", 接着使用 ssh-copy-id -i .ssh/id_rsa.pub root@localhost, 接着将.ssh目录拷贝到其他节点即可
在master节点创建用户'repl'@'192.168.1.%'(该repl用户只用在master上存在), 创建用户'mhaadmin'@'192.168.1.%'(该用户需要在所有的节点上都有, 因为该用户是监控用户)
为repl用户赋予replication slave权限, 为mhaadmin赋予all权限
create user 'repl'@192.168.1.%' identified by 'New@password123';
grant replication slave on . to 'repl'@'192.168.1.%';
create user 'mhaamdin'@192.168.1.%' identified by 'New@password123';
grant all on . to 'mhaamdin'@'192.168.1.%';
安装配置mha4mysql
- rpm(mha4mysql-manager, mha4mysql-node)包自己找
- 在所有节点上使用yum安装这两个包, 安装时会安装很多的依赖包
- 创建配置文件的目录(所有节点): mkdir -pv /etc/masterha
- 在master节点中, vim /etc/masterha/app1.cnf
[server default]
user=mhaadmin # 监控用户, 在所有的mysql节点中都要有
password=yourpassword
manager_workdir=/data/masterha/app1 # 工作目录, 会自动创建的
manager_log=/data/masterha/app1/manager.log # 日志文件的路径
remote_workdir=/data/masterha/app1 # slave节点的工作目录, 一般与master一样
ssh_user=root # ssh连接登录时的用户, mha依赖于ssh
repl_user=repl # 复制的用户
repl_password=yourpassword
ping_interval=1 # 心跳频率
master_ip_failover_script= /usr/local/bin/master_ip_failover //设置自动failover时候的切换脚本,perl脚本, 实现VIP的切换
master_ip_online_change_script= /usr/local/bin/master_ip_online_change //设置手动切换时候的切换脚本
[server1]
hostname=172.20.10.7
port=3306
candidate_master=1 # 当master挂时提升为master
[server2]
hostname=172.20.10.8
port=3306
candidate_master=1 当master挂时提升为master
[server3]
hostname=172.20.10.9
port=3306
# candidate_master=1
配置MySQL的主从复制
- 在slave1和slave2节点中, 使用change master to...命令配置好连接参数
- 在slave1和slave2中使用start slave
- 在master节点中使用show slave hosts查看是否成功构建复制架构
测试MHA
- masterha_check_ssh --conf=/etc/masterha/app1.cnf # 测试ssh的连接
- masterha_check_repl --conf=/etc/masterha/app1.cnf # 测试复制是否可用
- masterha_check_status --conf=/etc/masterha/app1.cnf # 测试是否运行, 现在应该是NOT RUNNING
启动MHA
- nohub masterha_manager --remove_dead_master_conf --ignore_last_failover --conf=/etc/masterha/app1.cnf > /data/masterha/app1/manager.log 2>&1 & # 所有的信息都重定向到/data/masterha/app1/manager.log中
- masterha_check_status --conf=/etc/masterha/app1.cnf # 此时查看应该已经运行了
–remove_dead_master_conf 该参数代表当发生主从切换后,老的主库的ip将会从配置文件中移除。
关闭MHA
- masterha_stop --conf=/etc/masterha/app1.cnf
在master节点当机时, 会将VIP迁移到候选那的master节点上, 在manager.log日志中可以看见
搭建MHA的更多相关文章
- 搭建MHA测试
搭建MHA: 手工切换: masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_maste ...
- 基于GTID搭建MHA
一.简介 MHA 是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程 ...
- 搭建MHA环境【2】安装mysql-5.6 + mysql复制
本例中mysql的安装方式选用了二进制包安装方案.mysql复制用半同步复制方案 [1]安装mysql-5.6.31 要在所有的数据节点上都安装上mysql,安装方式大致相同,所以我这里就不重复写多次 ...
- 搭建MHA时 yum 安装perl模块提示 baseurl 错误
今天在搭建MySQL MHA 安装MHA node所需的perl模块(DBD:mysql)时遇到了一个小的错误,如果思路不对的话,还是产生不少麻烦. 现梳理记录下来. 问题现象 执行的命令 yum ...
- 搭建MHA环境【1】规划+linux相关的设置
[1]规划 MHA这套软件包涵两个部分 1.manager :主要负责对MySQL集群状态的检查&在master 库宕机时对故障进行转移. 2.node :主要包涵状态检查& ...
- 搭建MHA问题汇总
1,Can't exec "mysqlbinlog": No such file or directory at /usr/share/perl5/vendor_perl/MHA/ ...
- MySQL高可用之MHA的搭建 转
http://www.cnblogs.com/muhu/p/4045780.html http://www.cnblogs.com/gomysql/p/3675429.html http://www ...
- MHA环境的搭建
MHA简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开 ...
- MySQL高可用之MHA的搭建
MySQL MHA架构介绍: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Face ...
随机推荐
- GS70 使用 Linux 下面Oracle数据库时 设定 特定目录存储数据文件
1. 创建目录 mkdir /cwdata 2. 修改目录属性 chown -R oracle:oinstall /cwdata chmod -R /cwdata 效果为: 创建数据库实例时的界面为: ...
- Centos7 调整磁盘空间
1. 查看磁盘空间占用情况: df -h 可以看到 /home 有很多剩余空间, 而节点较少. 2. 备份 /home 下的内容: cp -r /home/ homebak/ 3. 关闭home进程 ...
- vm安装centos后unknown host问题和yum install安装不成功问题
网上差了很多说要在vi /etc/sysconfig/network新增GATEWAY=192.168.0.1 还有vi /etc/sysconfig/network-scripts/ifcfg-et ...
- P4014 分配问题
\(\color{#0066ff}{题目描述}\) 有 \(n\) 件工作要分配给 \(n\) 个人做.第 \(i\) 个人做第 \(j\) 件工作产生的效益为 \(c_{ij}\) .试设计一个将 ...
- 状压DP【洛谷P1896】 [SCOI2005]互不侵犯
P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子 ...
- 关于如何在Windows下测交互题
这里的交互题指的NOI风格的交互题,即交互库 codeforces风格的交互题...只能自己实现评测插件了 使用Cena,Lemon没有附加文件功能不能评测交互题 在编译选项g++编译命令源文件中加入 ...
- 第k大数(前k大数)
题目:设计一组N个数,确定其中第k个最大值 1,普通方法(先排序,然后遍历,得到第k大的数) 注:如果是数组,直接arr[k],我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总 ...
- Android + Appium 自动化测试完整的环境配置及代码详解
环境的的搭建 参考大神博客:https://www.cnblogs.com/fnng/p/4540731.html 该博客有一套详细的入门教程,奈何时间有点久远有些东西不能用了,但是参考价值还是有滴. ...
- PHP服务器文件管理器开发小结(九):jQuery动态表单实现文件下载
前文讨论的文件操作,无论是新建.编辑.移动.删除,都是服务端对本地文件系统的操作.这一节需要讨论一个涉及服务端和客户端协调进行的操作:文件下载. 简单的文件下载可以通过将相对路径写入超链接的方式进行, ...
- js实现放大镜效果
原理: 鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置: 放大镜的移动方向和大图片的移动方向:横向和纵向都是相反,才可以保证同步: 需要元素:大图和小图,存放大图和小图的容器 ...