search
HomeDatabaseMysql Tutorialmysql 5.5 + mha 安装配置+vip ip 漂移_MySQL

一、概述

   MHA是一位日本人用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10—60秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能,易安装,不改变现有部署。

   还支持在线切换,从当前运行master切换到一个新的master上面,只需要很短的时间(0.5-2秒内),此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护。

二、mha 管理节点的安装

yum install perl-DBD-MySQL  /perl-Config-Tiny perl-Log-Dispatch /perl-Parallel-ForkManager  -yyum  install perl-Time-HiRes perl-Parallel-ForkManager -ywget http://mysql-master-ha.googlecode.com/files/mha4mysql-manager-0.55-0.el6.noarch.rpmwget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.54-0.el6.noarch.rpmrpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpmrpm -ivh mha4mysql-manager-0.55-0.el6.noarch.rpm


mkdir /etc/masterhavi /etc/masterha_default.cnf [server default]user=managerpassword=test_2014ping_interval=1repl_user=reprepl_password=rep_2014


ssh 证书安装:

root 用户下执行:

ssh-keygen -t rsa


拷贝 id_rsa.pub 到数据库节点机器上的/tmp 目录下,在数据库节点机器上执行:

cd /root/.sshcat /tmp/id_rsa.put >>authorized_keyschmod 600 authorized_keys


三、mha 数据库节点的安装 

wget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.54-0.el6.noarch.rpmyum install perl-DBD-MySQL -yrpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm

在数据库节点上以root 用户执行:

ssh-keygen -t rsa

分别拷贝id_rsa.pub 到对方机器的/tmp 目录下,然后分别执行:

cd /root/.sshcat /tmp/id_rsa.put >>authorized_keyschmod 600 authorized_keys

四、vip add 配置

在master 上执行下面命令(第一次启用必须配置手动配置vip address):

ifconfig eth1:2 10.10.0.102/16

五、mha 配置文件与故障转移脚本

在 mha 管理节点上编辑配置文件:

vi /etc/masterha/test.conf [server default]ssh_user=rootping_interval=1report_script=/usr/local/bin/send_reportmaster_ip_failover_script=/usr/local/bin/master_ip_failovermaster_ip_online_change_script=/usr/local/bin/master_ip_failover[server1]hostname=10.10.0.101master_binlog_dir=/log/mysql_testcandidate_master=1port=3306ssh_port=22[server2]hostname=10.10.0.100master_binlog_dir=/log/mysql_testcandidate_master=1port=3306ssh_port=22

六、mysql 主从配置

主从执行:

mysql>grant replication slave on *.* to rep@'10.10.%' identified by 'rep_2014' ;mysql>grant all on *.* to manager@'10.10.%' identified by 'test_2014' ;mysql>flush privileges;


主上执行:

mysql>show master status;

从上执行:

mysql>change master to master_host='10.10.0.101',master_port=3306,master_user='rep',master_password='rep_2014', master_log_file='mysql-bin.000004',master_log_pos=402; mysql> start slave;mysql> stop slave;mysql> reset slave;mysql> show slave status/G;

七、mha 操作命令

测试ssh 配置:

/usr/bin/masterha_check_ssh --conf=/etc/masterha/test.conf

测试复制:

/usr/bin/masterha_check_repl  --conf=/etc/masterha/test.conf

启用 mha :

masterha_manager --conf=/etc/masterha/test.conf

master 切换:

masterha_master_switch --master_state=alive --conf=/etc/masterha/test.conf


八、脚本

master_ip_failover 脚本:

cat /usr/local/bin/master_ip_failover#!/usr/bin/env perluse strict;use warnings FATAL => 'all';use Getopt::Long;my (    $command,          $ssh_user,        $orig_master_host, $orig_master_ip,    $orig_master_port, $new_master_host, $new_master_ip,    $new_master_port);my $vip = '10.10.0.102/16';  # Virtual IPmy $key = "2";my $ssh_start_vip = "/sbin/ifconfig eth1:$key $vip";my $ssh_stop_vip = "/sbin/ifconfig eth1:$key down";$ssh_user = "root";GetOptions(    'command=s'          => /$command,    'ssh_user=s'         => /$ssh_user,    'orig_master_host=s' => /$orig_master_host,    'orig_master_ip=s'   => /$orig_master_ip,    'orig_master_port=i' => /$orig_master_port,    'new_master_host=s'  => /$new_master_host,    'new_master_ip=s'    => /$new_master_ip,    'new_master_port=i'  => /$new_master_port,);exit &main();sub main {    print "/n/nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===/n/n";    if ( $command eq "stop" || $command eq "stopssh" ) {        # $orig_master_host, $orig_master_ip, $orig_master_port are passed.        # If you manage master ip address at global catalog database,        # invalidate orig_master_ip here.        my $exit_code = 1;        eval {            print "Disabling the VIP on old master: $orig_master_host /n";            &stop_vip();            $exit_code = 0;        };        if ($@) {            warn "Got Error: $@/n";            exit $exit_code;        }        exit $exit_code;    }    elsif ( $command eq "start" ) {        # all arguments are passed.        # If you manage master ip address at global catalog database,        # activate new_master_ip here.        # You can also grant write access (create user, set read_only=0, etc) here.        my $exit_code = 10;        eval {            print "Enabling the VIP - $vip on the new master - $new_master_host /n";            &start_vip();            $exit_code = 0;        };        if ($@) {            warn $@;            exit $exit_code;        }        exit $exit_code;    }    elsif ( $command eq "status" ) {        print "Checking the Status of the script.. OK /n";        `ssh $ssh_user/@cluster1 /" $ssh_start_vip /"`;        exit 0;    }    else {        &usage();        exit 1;    }}# A simple system call that enable the VIP on the new mastersub start_vip() {    `ssh $ssh_user/@$new_master_host /" $ssh_start_vip /"`;}# A simple system call that disable the VIP on the old_mastersub stop_vip() {    `ssh $ssh_user/@$orig_master_host /" $ssh_stop_vip /"`;}sub usage {    print    "Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port/n";}

cat send_report #!/usr/bin/perl# Copyright (C) 2011 DeNA Co.,Ltd.## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc.,# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA## Note: This is a sample script and is not complete. Modify the script based on your environment.use strict;use warnings FATAL => 'all';use Getopt::Long;#new_master_host and new_slave_hosts are set only when recovering master succeededmy ( $dead_master_host, $new_master_host, $new_slave_hosts, $subject, $body );GetOptions(  'orig_master_host=s' => /$dead_master_host,  'new_master_host=s' => /$new_master_host,  'new_slave_hosts=s' => /$new_slave_hosts,  'subject=s' => /$subject,  'body=s' => /$body,);# Do whatever you want hereexit 0;


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
MySQL's Role: Databases in Web ApplicationsMySQL's Role: Databases in Web ApplicationsApr 17, 2025 am 12:23 AM

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

MySQL: Building Your First DatabaseMySQL: Building Your First DatabaseApr 17, 2025 am 12:22 AM

The steps to build a MySQL database include: 1. Create a database and table, 2. Insert data, and 3. Conduct queries. First, use the CREATEDATABASE and CREATETABLE statements to create the database and table, then use the INSERTINTO statement to insert the data, and finally use the SELECT statement to query the data.

MySQL: A Beginner-Friendly Approach to Data StorageMySQL: A Beginner-Friendly Approach to Data StorageApr 17, 2025 am 12:21 AM

MySQL is suitable for beginners because it is easy to use and powerful. 1.MySQL is a relational database, and uses SQL for CRUD operations. 2. It is simple to install and requires the root user password to be configured. 3. Use INSERT, UPDATE, DELETE, and SELECT to perform data operations. 4. ORDERBY, WHERE and JOIN can be used for complex queries. 5. Debugging requires checking the syntax and use EXPLAIN to analyze the query. 6. Optimization suggestions include using indexes, choosing the right data type and good programming habits.

Is MySQL Beginner-Friendly? Assessing the Learning CurveIs MySQL Beginner-Friendly? Assessing the Learning CurveApr 17, 2025 am 12:19 AM

MySQL is suitable for beginners because: 1) easy to install and configure, 2) rich learning resources, 3) intuitive SQL syntax, 4) powerful tool support. Nevertheless, beginners need to overcome challenges such as database design, query optimization, security management, and data backup.

Is SQL a Programming Language? Clarifying the TerminologyIs SQL a Programming Language? Clarifying the TerminologyApr 17, 2025 am 12:17 AM

Yes,SQLisaprogramminglanguagespecializedfordatamanagement.1)It'sdeclarative,focusingonwhattoachieveratherthanhow.2)SQLisessentialforquerying,inserting,updating,anddeletingdatainrelationaldatabases.3)Whileuser-friendly,itrequiresoptimizationtoavoidper

Explain the ACID properties (Atomicity, Consistency, Isolation, Durability).Explain the ACID properties (Atomicity, Consistency, Isolation, Durability).Apr 16, 2025 am 12:20 AM

ACID attributes include atomicity, consistency, isolation and durability, and are the cornerstone of database design. 1. Atomicity ensures that the transaction is either completely successful or completely failed. 2. Consistency ensures that the database remains consistent before and after a transaction. 3. Isolation ensures that transactions do not interfere with each other. 4. Persistence ensures that data is permanently saved after transaction submission.

MySQL: Database Management System vs. Programming LanguageMySQL: Database Management System vs. Programming LanguageApr 16, 2025 am 12:19 AM

MySQL is not only a database management system (DBMS) but also closely related to programming languages. 1) As a DBMS, MySQL is used to store, organize and retrieve data, and optimizing indexes can improve query performance. 2) Combining SQL with programming languages, embedded in Python, using ORM tools such as SQLAlchemy can simplify operations. 3) Performance optimization includes indexing, querying, caching, library and table division and transaction management.

MySQL: Managing Data with SQL CommandsMySQL: Managing Data with SQL CommandsApr 16, 2025 am 12:19 AM

MySQL uses SQL commands to manage data. 1. Basic commands include SELECT, INSERT, UPDATE and DELETE. 2. Advanced usage involves JOIN, subquery and aggregate functions. 3. Common errors include syntax, logic and performance issues. 4. Optimization tips include using indexes, avoiding SELECT* and using LIMIT.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft