热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库配置mha实现主服务自动切换

在mysql的复制,当主服务崩溃了,利用mha实现主服务自动切换,并能使其他从服务切换到新的主机。下面是部署步骤(1)准备四台机器:主服务192.168.12.235,备主192.168.12.234,从服务192.168.12.232管理节点192.168.12.227(2)修改各台主机名如管
mysql的复制,当主服务崩溃了,利用mha实现主服务自动切换,并能使其他从服务切换到新的主机。下面是部署步骤

(1)准备四台机器:主服务 192.168.12.235,备主 192.168.12.234 ,从服务 192.168.12.232 管理节点 192.168.12.227

(2)修改各台主机名 如 管理节点 192.168.12.227
 cat /etc/hosts
127.0.0.1   localhost.localdomain localhost
192.168.12.227 sh-gs-dbmg0227
192.168.12.235 sh-gs-db0235
192.168.12.234 sh-gs-db0234
192.168.12.232 sh-gs-db0232

(3)数据节点
安装mha4mysql-node-0.52.tar.gz  mha4mysql-manager-0.53.tar.gz,由于mha4mysql-node 依赖 perl-DBD-MySQL, mha4mysql-manager依赖 perl-Config-Tiny perl-Params-Validate perl-Log-Dispatch perl-Parallel-ForkManager 。所以现在这些依赖包。实验使用yum 安装。
对三台mariadb数据节点只需安装mha4mysql-node-0.52.tar.gz ,本文没有写mariadb的安装以及复制。
[root@sh-gs-db0235 ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@sh-gs-db0235 ~]# yum -y install perl-DBD-MySQL  ncftp
[root@sh-gs-db0235 ~]# tar -zxf mha4mysql-node-0.52.tar.gz
[root@sh-gs-db0235 ~]# cd mha4mysql-node-0.52
[root@sh-gs-db0235 ~]#  perl Makefile.PL   
[root@sh-gs-db0235 ~]# make && make install 

(4)管理节点
[root@sh-gs-dbmg0227 ~]#  rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@sh-gs-dbmg0227 ~]# yum -y install perl-DBD-MySQL  ncftp
[root@sh-gs-dbmg0227 ~]# tar -zxf mha4mysql-node-0.52.tar.gz 
[root@sh-gs-dbmg0227 ~]# cd mha4mysql-node-0.52
[root@sh-gs-dbmg0227 ~]# perl Makefile.PL   
[root@sh-gs-dbmg0227 ~]# make && make install 
[root@sh-gs-dbmg0227 ~]#  yum -y install perl-Config-Tiny perl-Params-Validate perl-Log-Dispatch perl-Parallel-ForkManager perl-Config-IniFiles
[root@sh-gs-dbmg0227 ~]# tar -zxf mha4mysql-manager-0.53.tar.gz
[root@sh-gs-dbmg0227 ~]# perl Makefile.PL   
[root@sh-gs-dbmg0227 ~]# make && make install 
[root@sh-gs-dbmg0227 ~]# mkdir /etc/masterha
[root@sh-gs-dbmg0227 /]# mkdir -p /master/app1
[root@sh-gs-dbmg0227 ~]#  cp samples/conf/* /etc/masterha/
配置管理节点
[root@sh-gs-dbmg0227 ~]# more  /etc/masterha/app1.cnf
[server default]
manager_workdir=/masterha/app1   
manager_log=/masterha/app1/manager.log
user=root
password=123456
ssh_user=root
repl_user=repl
repl_password=repl
ping_interval=1
shutdown_script=""
#master_ip_failover_script=/usr/local/mha4mysql/mha4mysql-manager-0.52/samples/scripts/master_ip_failover  (这脚本放上会出现错误)
#master_ip_online_change_script=/usr/local/mha4mysql/mha4mysql-manager-0.52/samples/scripts/master_ip_online_change (这脚本放上会出现错误)
report_script=""
[server1]
hostname=192.168.12.235
master_binlog_dir=/app/mariadb538
candidate_master=1
[server2]
hostname=192.168.12.234
master_binlog_dir=/app/mariadb538
candidate_master=1
[server3]
hostname=192.168.12.232
master_binlog_dir=/app/mariadb538
no_master=1

(5)在mysql 添加用户,复制设置
mysql 主节点
grant replication slave  on *.* to 'repl'@'192.168.12.%' identified by 'repl';
grant replication all on *.* to 'root'@'192.168.12.227' identified by '123456';
备主节点
grant replication slave on *.* to 'repl'@'192.168.12.%' identified by 'repl';
grant replication all on *.* to 'root'@'192.168.12.227' identified by '123456';
set read_Only=1
set relay_log_purge=0
从节点
 grant replication all on *.* to 'root'@'192.168.12.227' identified by '123456';
set read_Only=1
set relay_log_purge=0

(6)配置ssh
[root@sh-gs-dbmg0227 /]# ssh-keygen -t rsa 
[root@sh-gs-dbmg0227 /]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.235
[root@sh-gs-dbmg0227 /]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.234  
[root@sh-gs-dbmg0227 /]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.232
[root@sh-gs-db0232 tmp]# ssh-keygen -t rsa
[root@sh-gs-db0232 tmp]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.235
[root@sh-gs-db0232 tmp]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.234
[root@sh-gs-db0234 tmp]# ssh-keygen -t rsa 
[root@sh-gs-db0234 tmp]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.232
[root@sh-gs-db0234 tmp]#  ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.235
[root@sh-gs-db0235 tmp]# ssh-keygen -t rsa 
[root@sh-gs-db0235 tmp]ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.232
[root@sh-gs-db0235 tmp]ssh-copy-id -i .ssh/id_rsa.pub root@192.168.12.234

(7)测试ssh
 [root@sh-gs-dbmg0227 /]# masterha_check_ssh --cOnf=/etc/masterha/app1.cnf
[root@sh-gs-dbmg0227 /]# masterha_check_ssh --cOnf=/etc/masterha/app1.cnf
Mon Jan  7 18:49:01 2013 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Jan  7 18:49:01 2013 - [info] Reading application default configurations from /etc/masterha/app1.cnf..
Mon Jan  7 18:49:01 2013 - [info] Reading server configurations from /etc/masterha/app1.cnf..
Mon Jan  7 18:49:01 2013 - [info] Starting SSH connection tests..
Mon Jan  7 18:49:02 2013 - [debug]
Mon Jan  7 18:49

(8)测试复制
[root@sh-gs-dbmg0227 /]#  masterha_check_repl --cOnf=/etc/masterha/app1.cnf
Mon Jan  7 18:49:50 2013 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Jan  7 18:49:50 2013 - [info] Reading application default configurations from /etc/masterha/app1.cnf..
Mon Jan  7 18:49:50 2013 - [info] Reading server configurations from /etc/masterha/app1.cnf..
Mon Jan  7 18:49:50 2013 - [info] MHA::MasterMonitor version 0.52.
Mon Jan  7 18:49:51 2013 - [info] Dead Servers:
Mon Jan  7 18:49:51 2013 - [info] Alive Servers:
Mon Jan  7 18:49:51 2013 - [info]   192.168.12.235(192.168.12.235:3306)
Mon Jan  7 18:49:51 2013 - [info]   192.168.12.234(192.168.12.234:3306)
Mon Jan  7 18:49:51 2013 - [info]   192.168.12.232(192.168.12.232:3306)
Mon Jan  7 18:49:51 2013 - [info] Alive Slaves:
Mon Jan  7 18:49:51 2013 - [info]   192.168.12.234(192.168.12.234:3306)  Version=5.3.8-MariaDB-log (oldest major version between slaves) log-bin:enabled
Mon Jan  7 18:49:51 2013 - [info]     Replicating from 192.168.12.235(192.168.12.235:3306)
Mon Jan  7 18:49:51 2013 - [info]     Primary candidate for the new Master (candidate_master is set)
Mon Jan  7 18:49:51 2013 - [info]   192.168.12.232(192.168.12.232:3306)  Version=5.3.8-MariaDB-log (oldest major version between slaves) log-bin:enabled
Mon Jan  7 18:49:51 2013 - [info]     Replicating from 192.168.12.235(192.168.12.235:3306)
Mon Jan  7 18:49:51 2013 - [info]     Not candidate for the new Master (no_master is set)
Mon Jan  7 18:49:51 2013 - [info] Current Alive Master: 192.168.12.235(192.168.12.235:3306)
Mon Jan  7 18:49:51 2013 - [info] Checking slave configurations..
Mon Jan  7 18:49:51 2013 - [warning]  read_Only=1 is not set on slave 192.168.12.234(192.168.12.234:3306).
Mon Jan  7 18:49:51 2013 - [warning]  relay_log_purge=0 is not set on slave 192.168.12.234(192.168.12.234:3306).
Mon Jan  7 18:49:51 2013 - [warning]  relay_log_purge=0 is not set on slave 192.168.12.232(192.168.12.232:3306).
Mon Jan  7 18:49:51 2013 - [info] Checking replication filtering settings..
Mon Jan  7 18:49:51 2013 - [info]  binlog_do_db= , binlog_ignore_db=
Mon Jan  7 18:49:51 2013 - [info]  Replication filtering check ok.
Mon Jan  7 18:49:51 2013 - [info] Starting SSH connection tests..
Mon Jan  7 18:49:53 2013 - [info] All SSH connection tests passed successfully.
Mon Jan  7 18:49:53 2013 - [info] Checking MHA Node version..
Mon Jan  7 18:49:54 2013 - [info]  Version check ok.
Mon Jan  7 18:49:54 2013 - [info] Checking SSH publickey authentication and checking recovery script configurations on the current master..
Mon Jan  7 18:49:54 2013 - [info]   Executing command: save_binary_logs --command=test --start_file=mysql-bin.000006 --start_pos=4 --binlog_dir=/app/mariadb538 --output_file=/var/tmp/save_binary_logs_test --manager_version=0.52
Mon Jan  7 18:49:54 2013 - [info]   Connecting to root@192.168.12.235(192.168.12.235)..
  Creating /var/tmp if not exists..    ok.
  Checking output directory is accessible or not..
   ok.
  Binlog found at /app/mariadb538, up to mysql-bin.000006
Mon Jan  7 18:49:55 2013 - [info] Master setting check done.
Mon Jan  7 18:49:55 2013 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..
Mon Jan  7 18:49:55 2013 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user=root --slave_host=192.168.12.234 --slave_ip=192.168.12.234 --slave_port=3306 --workdir=/var/tmp --target_version=5.3.8-MariaDB-log --manager_version=0.52 --relay_log_info=/app/mariadb538/relay-log.info  --slave_pass=xxx
Mon Jan  7 18:49:55 2013 - [info]   Connecting to root@192.168.12.234(192.168.12.234)..
  Checking slave recovery environment settings..
    Opening /app/mariadb538/relay-log.info ... ok.
    Relay log found at /app/mariadb538, up to sh-gs-db0234-relay-bin.000004
    Temporary relay log file is /app/mariadb538/sh-gs-db0234-relay-bin.000004
    Testing mysql connection and privileges.. done.
    Testing mysqlbinlog output.. done.
    Cleaning up test file(s).. done.
Mon Jan  7 18:49:55 2013 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user=root --slave_host=192.168.12.232 --slave_ip=192.168.12.232 --slave_port=3306 --workdir=/var/tmp --target_version=5.3.8-MariaDB-log --manager_version=0.52 --relay_log_info=/app/mariadb538/relay-log.info  --slave_pass=xxx
Mon Jan  7 18:49:55 2013 - [info]   Connecting to root@192.168.12.232(192.168.12.232)..
  Checking slave recovery environment settings..
    Opening /app/mariadb538/relay-log.info ... ok.
    Relay log found at /app/mariadb538, up to sh-gs-db0232-relay-bin.000004
    Temporary relay log file is /app/mariadb538/sh-gs-db0232-relay-bin.000004
    Testing mysql connection and privileges.. done.
    Testing mysqlbinlog output.. done.
    Cleaning up test file(s).. done.
Mon Jan  7 18:49:55 2013 - [info] Slaves settings check done.
Mon Jan  7 18:49:55 2013 - [info]
192.168.12.235 (current master)
 +--192.168.12.234
 +--192.168.12.232
Mon Jan  7 18:49:55 2013 - [info] Checking replication health on 192.168.12.234..
Mon Jan  7 18:49:55 2013 - [info]  ok.
Mon Jan  7 18:49:55 2013 - [info] Checking replication health on 192.168.12.232..
Mon Jan  7 18:49:55 2013 - [info]  ok.
Mon Jan  7 18:49:55 2013 - [warning] master_ip_failover_script is not defined.
Mon Jan  7 18:49:55 2013 - [warning] shutdown_script is not defined.
Mon Jan  7 18:49:55 2013 - [info] Got exit code 0 (Not master dead).
MySQL Replication Health is OK.

(9)启动management
[root@sh-gs-dbmg0227 /]# nohup masterha_manager --cOnf=/etc/masterha/app1.cnf> /tmp/mha_manager.log  &1 &
[root@sh-gs-dbmg0227 /]# masterha_check_status --cOnf=/etc/masterha/app1.cnf
app1 (pid:7127) is running(0:PING_OK), master:192.168.12.235

(10)在备节点,从节点 执行定期删除中继日志
00 00 * * * /usr/local/bin/purge_relay_logs ?user=root ?password=123456 ?disable_relay_log_purge >> /masterha/purge_relay_logs.log 2>&1

(11)测试 关闭mysql主服务服务,主机宕机。主服务是否自动切换。
 
mysql-master-ha详细手册: http://code.google.com/p/mysql-master-ha/wiki/TableOfContents?tm=6
 

推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 本文详细探讨了不同SQL数据库管理系统(DBMS)在限制输出结果、拼接字段和日期时间处理方面的函数差异。通过具体示例,帮助读者理解并掌握如何在不同DBMS中实现相同功能。 ... [详细]
  • 本文探讨了如何在TWiki中配置自定义标记,以实现特定字符串(如#12345)自动转换为指向票务系统的超链接。此功能类似于在其他平台上的实现,旨在提高信息检索效率。 ... [详细]
  • 使用ASP.NET与jQuery实现TextBox内容复制到剪贴板
    本文将介绍如何利用ASP.NET结合jQuery插件,实现将多行文本框(TextBox)中的内容复制到用户的本地剪贴板上。该方法主要适用于Internet Explorer浏览器。 ... [详细]
  • Flowable 6.6.0 表单引擎在Web应用中的集成与使用
    本文档提供了Flowable 6.6.0版本中表单引擎在Web应用程序中的配置和使用指南,包括表单引擎的初始化、配置以及在Web环境下的具体实现方法。 ... [详细]
  • 本文探讨了如何使用ls -lsh命令排除总大小输出,仅显示文件大小的方法,并提供了几种实现这一目标的解决方案。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 在关系型数据库中,数据约束是指在向数据表中插入数据时必须遵循的限制条件。在MySQL和MariaDB中,常见的数据约束包括主键约束、唯一键约束、外键约束以及非空约束等。这些约束确保了数据的完整性和一致性,是数据库管理中的重要组成部分。通过合理设置和使用这些约束,可以有效防止数据冗余和错误,提升数据库的可靠性和性能。 ... [详细]
  • 在2015年1月的MySQL内核报告中,我们详细探讨了性能优化和Group Commit机制的改进。尽管网上已有大量关于Group Commit的资料,本文将简要回顾其发展,并重点分析MySQL 5.6及之前版本中引入的二进制日志(Binlog)对性能的影响。此外,我们还将深入讨论最新的优化措施,如何通过改进Group Commit机制显著提升系统的整体性能和稳定性。 ... [详细]
author-avatar
菜牛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有