検索
ホームページデータベースmysql チュートリアルmysql 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;


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

MySQLの役割:WebアプリケーションのデータベースMySQLの役割:WebアプリケーションのデータベースApr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQL:最初のデータベースを構築しますMySQL:最初のデータベースを構築しますApr 17, 2025 am 12:22 AM

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQL:データストレージに対する初心者向けのアプローチMySQL:データストレージに対する初心者向けのアプローチApr 17, 2025 am 12:21 AM

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン