Maison > Article > base de données > MySQL - HA double machine basée sur Keepalived
1. Description de l'environnement :
OS : CentOS6.5_X64
MAÎTRE : 192.168.0.202
SAUVEGARDE : 192.168.0.203
VIP : 192.168.0.204
2. Configurer deux synchronisations maître-maître MySQL
Concernant l'installation de MySQL, vous pouvez également vous référer à "MySQL - CentOS6.5 Compiler et installer MySQL5.6.16. La synchronisation maître-maître est basée sur le maître". -synchronisation esclave. Configurer le serveur esclave comme maître du serveur maître précédent équivaut à définir l'esclave d'origine comme maître du maître d'origine en fonction de la synchronisation maître-esclave d'origine. Vous pouvez également vous référer à "MySQL - MS master-". réplication esclave (séparation lecture-écriture)" ) Implémentation", après avoir défini A comme maître de B et B comme esclave de A, puis défini B comme maître de A et A comme esclave de B.
[root@masterr ~]# yum install mysql-server mysql -y [root@masterr ~]# service mysqld start [root@masterr ~]# mysqladmin -u root proot [root@masterr ~]# vi /etc/my.cnf #开启二进制日志,设置id [mysqld] server-id = 1 #backup这台设置2 log-bin = mysql-bin binlog-ignore-db = mysql,information_schema #忽略写入binlog日志的库 auto-increment-increment = 2 #字段变化增量值 auto-increment-offset = 1 #初始字段ID为1 slave-skip-errors = all #忽略所有复制产生的错误 [root@masterr ~]# service mysqld restart
# Vérifiez d'abord le journal de la corbeille et l'emplacement de la valeur pos
La configuration principale est la suivante :
[root@ master ~]# mysql -u root -proot mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.%' IDENTIFIED BY 'replication'; mysql> flush privileges; mysql> change master to -> master_host='192.168.0.203', -> master_user='replication', -> master_password='replication', -> master_log_file='mysql-bin.000002', -> master_log_pos=106; #对端状态显示的值 mysql> start slave; #启动同步
configuration de sauvegarde Comme suit :
[root@backup ~]# mysql -u root -proot mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.%' IDENTIFIED BY 'replication'; mysql> flush privileges; mysql> change master to -> master_host='192.168.0.202', -> master_user='replication', -> master_password='replication', -> master_log_file='mysql-bin.000002', -> master_log_pos=106; mysql> start slave;
# La configuration de la synchronisation maître-maître est terminée. Vérifiez l'état de synchronisation Slave_IO et Slave_SQL s'il est OUI, ce qui signifie que la synchronisation maître-maître est réussie.
Dans le test des données d'insertion maître :
Vérifiez dans la sauvegarde si la synchronisation a réussi :
Vous pouvez voir qu'elle a été synchronisée avec succès. Les données de la table utilisateur sont également insérées dans la sauvegarde et synchronisées de la même manière. est terminé avec succès.
3. Configurez keepalived pour réaliser une sauvegarde à chaud
[root@backup ~]# yum install -y pcre-devel openssl-devel popt-devel #安装依赖包
[root@masterr ~]# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz [root@masterr ~]# tar zxvf keepalived-1.2.7.tar.gz [root@masterr ~]# cd keepalived-1.2.7 [root@masterr ~]#./configure --prefix=/usr/local/keepalived make
#Configurez keepalived en tant que service système
[root@masterr ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ [root@masterr ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ [root@masterr ~]# mkdir /etc/keepalived/ [root@masterr ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ [root@masterr ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@masterr ~]# vi /etc/keepalived/keepalived.conf ! Configuration File forkeepalived global_defs { notification_email { test@sina.com } notification_email_from admin@test.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id MYSQL_HA #标识,双主相同 } vrrp_instance VI_1 { state BACKUP #两台都设置BACKUP interface eth0 virtual_router_id 51 #主备相同 priority 100 #优先级,backup设置90 advert_int 1 nopreempt #不主动抢占资源,只在master这台优先级高的设置,backup不设置 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.204 } } virtual_server 192.168.0.204 3306 { delay_loop 2 #lb_algo rr #LVS算法,用不到,我们就关闭了 #lb_kind DR #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL persistence_timeout 50 #同一IP的连接60秒内被分配到同一台真实服务器 protocol TCP real_server 192.168.0.202 3306 { #检测本地mysql,backup也要写检测本地mysql weight 3 notify_down /usr/local/keepalived/mysql.sh #当mysq服down时,执行此脚本,杀死keepalived实现切换 TCP_CHECK { connect_timeout 3 #连接超时 nb_get_retry 3 #重试次数 delay_before_retry 3 #重试间隔时间 } }
[root@masterr ~]# vi /usr/local/keepalived/mysql.sh #!/bin/bash pkill keepalived [root@masterr ~]# chmod +x /usr/local/keepalived/mysql.sh [root@masterr ~]# /etc/init.d/keepalived start
#Le serveur de sauvegarde modifie uniquement la priorité à 90, nopreempt n'est pas défini et real_server définit l'adresse IP locale.
#Autorisez deux serveurs Mysql pour autoriser la connexion à distance root pour des tests sur d'autres serveurs !
mysql> grant all on *.* to'root'@'192.168.0.%' identified by 'root'; mysql> flush privileges;
4. Testez la haute disponibilité
1) Connectez-vous via VIP via le client Mysql pour voir si la connexion réussit.
2) Arrêtez le service maître mysql et vérifiez s'il peut y être basculé normalement. Vous pouvez utiliser la commande ip addr pour vérifier sur quel serveur se trouve le VIP.
3) Vous pouvez voir le processus de basculement maître/esclave en vérifiant le journal /var/log/messges
4) Une fois que le serveur maître s'est remis d'une panne, est-ce que il saisit de manière proactive les ressources ? Devenir un serveur actif.
Remarque : L'ordre de démarrage du service : démarrez d'abord MySQL, puis Keepalived.
Ce qui précède est le contenu de MySQL - HA double machine basé sur Keepalived. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !