Table des matières
一、概述
二、mha 管理节点的安装
三、mha 数据库节点的安装 
四、vip add 配置
五、mha 配置文件与故障转移脚本
六、mysql 主从配置
七、mha 操作命令
八、脚本
Maison base de données tutoriel mysql mysql 5.5 + mha 安装配置+vip ip 漂移_MySQL

mysql 5.5 + mha 安装配置+vip ip 漂移_MySQL

Jun 01, 2016 pm 01:11 PM

一、概述

   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
Copier après la connexion


mkdir /etc/masterhavi /etc/masterha_default.cnf [server default]user=managerpassword=test_2014ping_interval=1repl_user=reprepl_password=rep_2014
Copier après la connexion


ssh 证书安装:

root 用户下执行:

ssh-keygen -t rsa
Copier après la connexion
Copier après la connexion


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

cd /root/.sshcat /tmp/id_rsa.put >>authorized_keyschmod 600 authorized_keys
Copier après la connexion
Copier après la connexion


三、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
Copier après la connexion

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

ssh-keygen -t rsa
Copier après la connexion
Copier après la connexion

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

cd /root/.sshcat /tmp/id_rsa.put >>authorized_keyschmod 600 authorized_keys
Copier après la connexion
Copier après la connexion

四、vip add 配置

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

ifconfig eth1:2 10.10.0.102/16
Copier après la connexion

五、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
Copier après la connexion

六、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;
Copier après la connexion


主上执行:

mysql>show master status;
Copier après la connexion

从上执行:

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;
Copier après la connexion

七、mha 操作命令

测试ssh 配置:

/usr/bin/masterha_check_ssh --conf=/etc/masterha/test.conf
Copier après la connexion

测试复制:

/usr/bin/masterha_check_repl  --conf=/etc/masterha/test.conf
Copier après la connexion

启用 mha :

masterha_manager --conf=/etc/masterha/test.conf
Copier après la connexion

master 切换:

masterha_master_switch --master_state=alive --conf=/etc/masterha/test.conf
Copier après la connexion


八、脚本

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";}
Copier après la connexion

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;
Copier après la connexion


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quand une analyse de table complète pourrait-elle être plus rapide que d'utiliser un index dans MySQL? Quand une analyse de table complète pourrait-elle être plus rapide que d'utiliser un index dans MySQL? Apr 09, 2025 am 12:05 AM

La numérisation complète de la table peut être plus rapide dans MySQL que l'utilisation d'index. Les cas spécifiques comprennent: 1) le volume de données est petit; 2) Lorsque la requête renvoie une grande quantité de données; 3) Lorsque la colonne d'index n'est pas très sélective; 4) Lorsque la requête complexe. En analysant les plans de requête, en optimisant les index, en évitant le sur-index et en maintenant régulièrement des tables, vous pouvez faire les meilleurs choix dans les applications pratiques.

Expliquez les capacités de recherche en texte intégral InNODB. Expliquez les capacités de recherche en texte intégral InNODB. Apr 02, 2025 pm 06:09 PM

Les capacités de recherche en texte intégral d'InNODB sont très puissantes, ce qui peut considérablement améliorer l'efficacité de la requête de la base de données et la capacité de traiter de grandes quantités de données de texte. 1) INNODB implémente la recherche de texte intégral via l'indexation inversée, prenant en charge les requêtes de recherche de base et avancées. 2) Utilisez la correspondance et contre les mots clés pour rechercher, prendre en charge le mode booléen et la recherche de phrases. 3) Les méthodes d'optimisation incluent l'utilisation de la technologie de segmentation des mots, la reconstruction périodique des index et l'ajustement de la taille du cache pour améliorer les performances et la précision.

Puis-je installer mysql sur Windows 7 Puis-je installer mysql sur Windows 7 Apr 08, 2025 pm 03:21 PM

Oui, MySQL peut être installé sur Windows 7, et bien que Microsoft ait cessé de prendre en charge Windows 7, MySQL est toujours compatible avec lui. Cependant, les points suivants doivent être notés lors du processus d'installation: téléchargez le programme d'installation MySQL pour Windows. Sélectionnez la version appropriée de MySQL (communauté ou entreprise). Sélectionnez le répertoire d'installation et le jeu de caractères appropriés pendant le processus d'installation. Définissez le mot de passe de l'utilisateur racine et gardez-le correctement. Connectez-vous à la base de données pour les tests. Notez les problèmes de compatibilité et de sécurité sur Windows 7, et il est recommandé de passer à un système d'exploitation pris en charge.

Différence entre l'index cluster et l'index non cluster (index secondaire) dans InnODB. Différence entre l'index cluster et l'index non cluster (index secondaire) dans InnODB. Apr 02, 2025 pm 06:25 PM

La différence entre l'index cluster et l'index non cluster est: 1. Index en cluster stocke les lignes de données dans la structure d'index, ce qui convient à la requête par clé et plage primaire. 2. L'index non clumpant stocke les valeurs de clé d'index et les pointeurs vers les lignes de données, et convient aux requêtes de colonne de clés non primaires.

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)? Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)? Mar 21, 2025 pm 06:28 PM

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]

Comment gérez-vous les grands ensembles de données dans MySQL? Comment gérez-vous les grands ensembles de données dans MySQL? Mar 21, 2025 pm 12:15 PM

L'article traite des stratégies pour gérer de grands ensembles de données dans MySQL, y compris le partitionnement, la rupture, l'indexation et l'optimisation des requêtes.

MySQL: Concepts simples pour l'apprentissage facile MySQL: Concepts simples pour l'apprentissage facile Apr 10, 2025 am 09:29 AM

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

La relation entre l'utilisateur de MySQL et la base de données La relation entre l'utilisateur de MySQL et la base de données Apr 08, 2025 pm 07:15 PM

Dans la base de données MySQL, la relation entre l'utilisateur et la base de données est définie par les autorisations et les tables. L'utilisateur a un nom d'utilisateur et un mot de passe pour accéder à la base de données. Les autorisations sont accordées par la commande Grant, tandis que le tableau est créé par la commande Create Table. Pour établir une relation entre un utilisateur et une base de données, vous devez créer une base de données, créer un utilisateur, puis accorder des autorisations.

See all articles