ホームページ データベース mysql チュートリアル 使用mysql-mmm实现mysql集群部署_MySQL

使用mysql-mmm实现mysql集群部署_MySQL

Jun 01, 2016 pm 01:02 PM
集まる

背景:之前实现的mysql同步复制功能(见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937)只是双机热备功能,还不能做到Mysql链接的自动切换。

本配置实现真正的mysql集群,使得在某台机子的mysql应用停止时,能让应用程序自动切换到另外一台机子的mysql连接,实现应用的高稳定性,并且使得扩展Mysql服务成为可能。

本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。

本次演示的配置使用三台机器,架构如下:

\

Master1 和Master2两台机器实现双机热备,其中一台机器的mysql服务停止或机器宕机,应用程序都会将数据库连接自动切换到另外一台机子。另外用一台机子实时备份master1的数据。

1、安装mysql-mmm服务

在三台机器都安装

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum -y install mysql-mmm*

完成后查看 rpm -qa|grep mysql-mmm

有以下组件表示安装成功

\

Rhel5或centos5,32位:http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

Rhel6或centos6,32位:http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm

Rhel6或centos6,64位:http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

1、添加mysql的用户

在三台机器都添加mysql用户,分别用于复制、

进入mysql服务mysql -u root -p

use mysql;

grant REPLICATION slave,REPLICATION CLIENT on *.* to 'repl'@'%' identified by 'password'; //建立复制用户

grant PROCESS,SUPER,REPLICATION CLIENT on *.* to 'mmm_agent'@'%' identified by 'password'; //建立agent用户

grant REPLICATION CLIENT on *.* to 'mmm_monitor'@'%' identified by 'password'; //建立用户

FLUSH PRIVILEGES;

2、配置同步复制

配置复制的策略如架构图所示。

配置方法在我上一篇文章有介绍过,这里不再重复,见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937

3、修改hosts

分别修改三台机器的hosts文件

vi /etc/hosts

添加

200.200.168.24 M1

200.200.168.25 M2

200.200.168.23 slave1

4、配置mysql-mmm

修改 /etc/mysql-mmm/mmm_common.conf 各台机子的配置都一样

active_master_role      writer

<host default>
    cluster_interface       eth0
    pid_path                /var/run/mysql-mmm/mmm_agentd.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        repl
    replication_password    password
    agent_user              mmm_agent
    agent_password          <span style="font-size: 13.3333339691162px;">password</span>
</host>

<host M1>
    ip      200.200.168.24
    mode    master
    peer    M2
</host>

<host M2>
    ip      200.200.168.25
    mode    master
    peer    M1
</host>

<host slave1>
    ip      200.200.168.23
    mode    slave
</host>

<role writer>
    hosts   M1,M2
    ips     200.200.168.26
    mode    exclusive
</role>

<role reader>
    hosts   M1,M2,slave1
    ips     200.200.168.27
    mode    balanced
</role>
ログイン後にコピー

注意:200.200.168.26和200.200.168.27是两个虚拟的IP地址,供应用程序调用,只需用两个没人占用的IP就可以,分别用来提供写和读服务,为以后实现数据库的读写分离(但实现读写分离需要修改应用程序,mysql并不能自动识别并切换)。

修改/etc/mysql-mmm/mmm_agent.conf

三台机器分别设置为this M1、this M2、this slave1

修改/etc/mysql-mmm/mmm_mon.conf

只是monitor(200.200.168.24)机子需要配置

include mmm_common.conf
<monitor>
    ip                  127.0.0.1
    pid_path            /var/run/mysql-mmm/mmm_mond.pid
    bin_path            /usr/libexec/mysql-mmm
    status_path         /var/lib/mysql-mmm/mmm_mond.status
    ping_ips            200.200.168.24,200.200.168.25,200.200.168.23
    auto_set_online     10

    # The kill_host_bin does not exist by default, though the monitor will
    # throw a warning about it missing.  See the section 5.10 "Kill Host 
    # Functionality" in the PDF documentation.
    #
    # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host
    #
</monitor>
<host default>
    monitor_user        mmm_monitor
    monitor_password    password
</host>
debug 0
ログイン後にコピー

配置完成后运行

三台机子都需运行:

/etc/init.d/mysql-mmm-agent start

Monitor机子运行

/etc/init.d/mysql-mmm-monitor start

5、查看服务状态及测试

在monitor机子运行mmm_control show

可以看到以下信息:

\

表示写服务器(200.200.168.26)使用的是200.200.168.24

读服务器(200.200.168.27)使用的是200.200.168.25

查看各个服务的状态:

mmm_control checks all

\

6、测试:

将master1的mysql服务停止,然后mmm_control show查看状态

\

可以看到读写服务器都转移到了master2,这时服务器master1的流程应用还能够正常使用,可以进行申请流程测试

这时查看mmm_control checks all

\

将master1 的mysql服务启动,再查看状态:

\

读写服务器又分开了

\
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ノードが Proxmox VE から完全に退避し、クラスターに再参加します ノードが Proxmox VE から完全に退避し、クラスターに再参加します Feb 21, 2024 pm 12:40 PM

ノードが ProxmoxVE から完全に退避し、クラスターに再参加するためのシナリオの説明。ProxmoxVE クラスター内のノードが損傷し、すぐに修復できない場合、障害のあるノードをクラスターから完全に追い出し、残留情報をクリーンアップする必要があります。そうしないと、障害ノードが使用していた IP アドレスを使用する新しいノードが正常にクラスターに参加できなくなり、同様に、クラスターから切り離された障害ノードが修復された後、クラスターとは関係ありませんが、クラスターに参加できなくなります。この単一ノードの Web 管理にアクセスできなくなり、バックグラウンドで元の ProxmoxVE クラスター内の他のノードに関する情報が表示され、非常に迷惑になります。クラスターからノードを削除します。ProxmoxVE が Ceph ハイパーコンバージド クラスターの場合、ホスト システム Debian 上のクラスター内の任意のノード (削除するノードを除く) にログインし、コマンドを実行する必要があります。

PHP高同時実行環境におけるデータベースの最適化方法 PHP高同時実行環境におけるデータベースの最適化方法 Aug 11, 2023 pm 03:55 PM

高同時実行環境における PHP データベースの最適化方法 インターネットの急速な発展に伴い、ますます多くの Web サイトやアプリケーションが高同時実行の課題に直面する必要があります。この場合、特にバックエンド開発言語として PHP を使用するシステムでは、データベースのパフォーマンスの最適化が特に重要になります。この記事では、PHP の高同時実行環境におけるデータベースの最適化方法をいくつか紹介し、対応するコード例を示します。接続プーリングの使用 同時実行性の高い環境では、データベース接続の頻繁な作成と破棄がパフォーマンスのボトルネックを引き起こす可能性があります。したがって、接続プーリングを使用すると、

php の一般的なクラスターは何ですか? php の一般的なクラスターは何ですか? Aug 31, 2023 pm 05:45 PM

PHP の一般的なクラスターには、LAMP クラスター、Nginx クラスター、Memcached クラスター、Redis クラスター、および Hadoop クラスターが含まれます。詳細な紹介: 1. LAMP クラスター. LAMP とは、Linux、Apache、MySQL、および PHP の組み合わせを指します. これは一般的な PHP 開発環境です. LAMP クラスターでは、複数のサーバーが同じアプリケーションを実行し、ロード バランサーによってバランスがとられます.異なるサーバーに分散されている; 2. Nginx クラスター、Nginx は高性能 Web サーバーなどです。

Docker を使用してマルチノード クラスターを管理および拡張する方法 Docker を使用してマルチノード クラスターを管理および拡張する方法 Nov 07, 2023 am 10:06 AM

今日のクラウド コンピューティング時代において、コンテナ化テクノロジは、オープンソースの世界で最も人気のあるテクノロジの 1 つになっています。 Docker の登場により、クラウド コンピューティングはより便利かつ効率的になり、開発者や運用保守担当者にとって不可欠なツールになりました。マルチノード クラスター テクノロジーのアプリケーションは、Docker に基づいて広く使用されています。マルチノード クラスターの展開を通じて、リソースをより効率的に利用し、信頼性と拡張性を向上させることができ、さらに展開と管理をより柔軟に行うことができます。次にDockerを使って以下のことを行う方法を紹介します。

MongoDB を使用してデータ クラスタリングと負荷分散機能を実装する方法 MongoDB を使用してデータ クラスタリングと負荷分散機能を実装する方法 Sep 19, 2023 pm 01:22 PM

MongoDB を使用してデータ クラスタリングおよびロード バランシング機能を実装する方法 はじめに: 今日のビッグ データ時代では、データ量の急速な増加により、データベースのパフォーマンスに対する要件がさらに高まっています。これらの要件を満たすために、データ クラスタリングと負荷分散は不可欠な技術手段となっています。 MongoDB は、成熟した NoSQL データベースとして、データ クラスタリングと負荷分散をサポートする豊富な機能とツールを提供します。この記事では、MongoDB を使用してデータ クラスタリングと負荷分散機能を実装する方法と、具体的なコードを紹介します。

Workerman ドキュメントのサーバー クラスターの実装方法 Workerman ドキュメントのサーバー クラスターの実装方法 Nov 08, 2023 pm 08:09 PM

Workerman は、PHP が非同期ネットワーク通信をより効率的に処理できるようにする高性能 PHPSocket フレームワークです。 Workerman のドキュメントには、サーバー クラスターの実装方法に関する詳細な手順とコード例が記載されています。サーバー クラスターを実装するには、まずサーバー クラスターの概念を明確にする必要があります。サーバー クラスターは複数のサーバーをネットワークに接続し、負荷とリソースを共有することでシステムのパフォーマンス、信頼性、拡張性を向上させます。 Workermanでは以下の2つの方法が利用できます

MySQL クラスターの導入および保守プロジェクトの経験の概要 MySQL クラスターの導入および保守プロジェクトの経験の概要 Nov 02, 2023 pm 01:33 PM

MySQL クラスターの導入と保守プロジェクトの経験の概要 MySQL は、インターネット アプリケーション開発で最もよく使用されるデータベースの 1 つですが、ビジネス規模が拡大し続けるにつれて、スタンドアロンの MySQL では需要に対応できなくなりました。データベースのパフォーマンスと容量を拡張する MySQL クラスター ソリューション。この記事は、MySQL クラスターのデプロイメントとメンテナンスのプロセスで学んだ経験と教訓をまとめたもので、すべての MySQL クラスターのデプロイメントとメンテナンス作業に役立つことを願っています。 1. MySQL クラスターの導入とアーキテクチャ設計 MySQL クラスター

MySQLデータベースのクラスタ環境を構築するにはどうすればよいですか? MySQLデータベースのクラスタ環境を構築するにはどうすればよいですか? Jul 12, 2023 pm 02:52 PM

MySQLデータベースのクラスタ環境を構築するにはどうすればよいですか?はじめに: インターネットの発展とデータ量の継続的な増加に伴い、データベースはあらゆる企業に必要なコア システムの 1 つになりました。同時に、高いデータの可用性と読み取りおよび書き込みのパフォーマンス要件を確保するために、データベース クラスター環境が企業の選択肢になりつつあります。この記事では、MySQL データベースのクラスター環境を構成する方法と、対応するコード例を紹介します。 1. 環境準備 MySQL データベースのクラスタ環境を構築する前に、以下の環境準備が完了していることを確認する必要があります。 M のインストール

See all articles