Heim > Datenbank > MySQL-Tutorial > MySQL – Detaillierte Einführung in die MySQL-Hochverfügbarkeitsimplementierung

MySQL – Detaillierte Einführung in die MySQL-Hochverfügbarkeitsimplementierung

黄舟
Freigeben: 2017-03-14 16:43:10
Original
1722 Leute haben es durchsucht

1. Grundlegende Umgebungseinführung und grundlegende Umgebungskonfiguration

Knoten 1: node1.hulala.com 192.168.1.35 centos6.5_64 8G neue Festplatte hinzufügen
Knoten 2: node2.hulala.com 192.168.1.36 centos6.5_64 8G neue Festplatte hinzufügen
vip 192.168.1.39

Sowohl Knoten 1 als auch Knoten 2 müssen konfiguriert werden
Ändern Sie den Hostnamen:

vim /etc/sysconfig/network
HOSTNAME=node1.hulala.com
Nach dem Login kopieren

Hostauflösung konfigurieren: <br/>

vim /etc/hosts
192.168.1.35    node1.hulala.com node1
192.168.1.36    node2.hulala.com node2
Nach dem Login kopieren

Systemzeit synchronisieren: <br/>

ntpdate cn.pool.ntp.org
Nach dem Login kopieren

Firewall und SELINUX schließen<br/>

service iptables stop
chkconfig iptables off
cat /etc/sysconfig/selinux
SELINUX=disabled
Nach dem Login kopieren

Die obige Konfiguration muss auf beiden Knoten konfiguriert werden. Nachdem die Konfiguration abgeschlossen ist, starten Sie beide Knoten neu

Zweitens: Konfigurieren Sie die gegenseitige SSH-Vertrauensstellung<br/>

[root@node1~]#ssh-keygen -t rsa -b 1024
[root@node1~]#ssh-copy-id root@192.168.1.36
[root@node2~]#ssh-keygen -t rsa -b 1024
[root@node2~]#ssh-copy-id root@192.168.1.35
Nach dem Login kopieren

Drei: DRBD installieren Konfigurieren (Knoten1 und Knoten2 führen den gleichen Vorgang aus)

[root@node1~]#wget -c http://www.php.cn/
[root@node1~]#wget -c http://www.php.cn/
[root@node1~]#rpm -ivh *.rpm
Nach dem Login kopieren

Einen SHA1-Wert als gemeinsames Geheimnis abrufen <br/>

[root@node1~]#sha1sum /etc/drbd.conf
8a6c5f3c21b84c66049456d34b4c4980468bcfb3  /etc/drbd.conf
Nach dem Login kopieren

Erstellen und bearbeiten Sie die Ressource Konfigurationsdatei :/etc/drbd.d/dbcluster.res<br/>

[root@node1~]# vim /etc/drbd.d/dbcluster.res
resource dbcluster {
    protocol C;
    net {
        cram-hmac-alg sha1;
        shared-secret "8a6c5f3c21b84c66049456d34b4c4980468bcfb3";
        after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
        after-sb-2pri disconnect;
        rr-conflict disconnect;
    }
    device    /dev/drbd0;
    disk      /dev/sdb1;
meta-disk internal;
    on node1.hulala.com {
        address   192.168.1.35:7789;
    }
    on node2.hulala.com {
        address   192.168.1.36:7789;
    }
}
Nach dem Login kopieren

Parameterbeschreibung für die obige Konfiguration: <br/>RESSOURCE: Ressourcenname <br/>PROTOKOLL: Das Protokoll „C“ bedeutet „synchron“, d. h. nach Erhalt der Remote-Schreibbestätigung gilt der Schreibvorgang als abgeschlossen <br/>NET: Der SHA1-Schlüssel der beiden Knoten ist derselbe <br/>after-sb-0pri: „Split Brain“ Wenn es auftritt und keine Datenänderung vorliegt, ist die Verbindung zwischen den beiden Knoten normal<br/>after-sb-1pri: Wenn es eine Datenänderung gibt, sind die sekundären Gerätedaten normal aufgegeben und vom primären Gerät synchronisiert<br/>rr-conflict: Wenn die vorherigen Einstellungen nicht angewendet werden können und ein Rollenkonflikt im drbd-System vorliegt, trennt das System automatisch die Verbindungen zwischen Knoten <br/>META-DISK: Metadaten wird auf derselben Festplatte (sdb1) gespeichert <br/>ON : Knoten, die einen Cluster bilden <br/> DRBD-Konfiguration auf den Knotencomputer kopieren: <br/>

[root@node1~]#scp /etc/drbd.d/dbcluster.res root@192.168.1.36:/etc/drbd.d/
Nach dem Login kopieren

Ressourcen erstellen und Dateisystem:<br/>Erstellen Sie Partitionen (nicht formatiert) <br/> auf Knoten1 und Knoten2. Erstellen Sie eine LVM-Partition auf Knoten1 und Knoten2: <br/>

[#root@node1~]fdisk /dev/sdb
Nach dem Login kopieren

Erstellen Sie Metadaten für die Ressource (dbcluster) auf Knoten1 und Knoten2: <br/>

[root@node1~drbd]#drbdadm create-md dbcluster
Nach dem Login kopieren

Aktivieren Sie die Ressource (sowohl Knoten1 als auch Knoten2 müssen überprüft werden) <br/>– Stellen Sie zunächst sicher, dass drbd Modul ist geladen <br/>Überprüfen Sie, ob es geladen ist: <br/>

# lsmod | grep drbd
Nach dem Login kopieren

Wenn es nicht geladen ist, müssen Sie es laden: <br/>

# modprobe drbd
# lsmod | grep drbd
drbd                  317261  0
libcrc32c               1246  1 drbd
Nach dem Login kopieren

– Starten Sie den DRBD-Hintergrundprozess: <br/>

[root@node1 drbd]# drbdadm up dbcluster
[root@node2 drbd]# drbdadm up dbcluster
Nach dem Login kopieren

Ansicht (Knoten1 und Knoten2) DRBD-Status: <br/>

[root@node2 drbd]# /etc/init.d/drbd status
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2016-10-23 08:16:10
m:res        cs         ro                   ds                         p  mounted  fstype
0:dbcluster  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C
Nach dem Login kopieren

Von oben Anhand der Informationen können Sie erkennen, dass der DRBD-Dienst bereits auf zwei läuft Maschinen, aber keine Maschine ist die Hauptmaschine („primärer“ Host), daher kann nicht auf die Ressource (Blockgerät) zugegriffen werden. <br/> Synchronisierung starten:

Nur ​​auf dem Masterknoten (hier Knoten1) betreiben 🎜><br/>

[root@node1 drbd]# drbdadm — –overwrite-data-of-peer primary dbcluster
Nach dem Login kopieren
Synchronisierungsstatus anzeigen:

<br/>

<br/>
Nach dem Login kopieren
Einige Erklärungen zu den obigen Ausgabeergebnissen:

cs (Verbindungsstatus): Netzwerkverbindungsstatus<br/> ro (Rollen): Rolle des Knotens (die Rolle dieses Knotens wird zuerst angezeigt)<br/>ds (Festplattenstatus): Status der Festplatte<br/>Replikationsprotokoll: A, B oder C (diese Konfiguration ist C) <br/>Wenn Sie sehen, dass der DRBD-Status „cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate“ ist, bedeutet dies, dass die Synchronisierung abgeschlossen ist.<br/>Sie können den DRBD-Status auch so überprüfen:<br/> <br/>

[root@centos193 drbd]# drbd-overview
  0:dbcluster/0  Connected Secondary/Primary UpToDate/UpToDate C r—–
Nach dem Login kopieren
Erstellen Sie ein Dateisystem:

Erstellen Sie ein Dateisystem auf dem primären Knoten (Knoten1): <br/><br/>

[root@node1 drbd]# mkfs -t ext4 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
…….
180 days, whichever comes first.  Use tune2fs -c or -i to override.
Nach dem Login kopieren
Hinweis: Es ist nicht notwendig, dasselbe auf dem zu tun Betrieb des sekundären Knotens (Node2), da DRBD die Synchronisierung der ursprünglichen Festplattendaten übernimmt.

Außerdem müssen wir dieses DRBD-System nicht auf einem Computer mounten (natürlich muss es bei der Installation vorübergehend gemountet werden <br/>MySQLInstallieren Sie MySQL), da die Cluster-Management-Software dies übernimmt. Stellen Sie außerdem sicher, dass das kopierte Dateisystem nur auf dem aktiven Masterserver gemountet ist <br/>

Viertens: MySQL-Installation

MySQL Zur Installation können Sie auch den Blog-Beitrag „MySQL – CentOS6.5 Kompilieren und Installieren von MySQL5.6.16“ lesen

<br/>

1. Installieren Sie MySQL auf den Knoten Node1 und Node2:

<br/>

yum install mysql* -y
Nach dem Login kopieren
2. Sowohl Knoten1 als auch Knoten2 stoppen den MySQL-Dienst

<br/>

[root@node1~]# service mysql stop
Shutting down MySQL.        [  OK  ]
Nach dem Login kopieren
3. Knoten1 und Knoten2 dienen beide dazu, ein Datenbankverzeichnis zu erstellen und das Verzeichnis zu ändern Berechtigungsinhaber für MySQL

<br/>

[root@host1 /]# mkdir -p /mysql/data
[root@host1 /]# chown -R mysql:mysql /mysql
Nach dem Login kopieren
4. Schließen Sie MySQL und mounten Sie das DRBD-Dateisystem vorübergehend auf dem Hauptknoten (Node1)

<br/>

[root@node1 ~]# mount /dev/drbd0  /mysql/
Nach dem Login kopieren
5 und node2 bearbeiten und ändern Sie die Datei „my.cnf“ unter „Neuen Datenspeicherpfad hinzufügen“ unter [mysqld]

<br/><br/>

6 in das neue Verzeichnis (für Knoten2 ist kein Vorgang erforderlich)
datadir=/mysql/data
Nach dem Login kopieren

<br/>

Beachten Sie, dass die Berechtigung zum Kopieren des Verzeichnisses direkt auf MySQL geändert werden muss Ändern Sie hier das MySQL-Verzeichnis.
[root@host1 mysql]#cd /var/lib/mysql
[root@host1 mysql]#cp -R * /mysql/data/
Nach dem Login kopieren

<br/>

7. Starten Sie den Anmeldetest mit MySQL auf Knoten1
[root@host1 mysql]# chown -R mysql:mysql /mysql
Nach dem Login kopieren

<br/>

Deinstallieren Sie das DRBD-Dateisystem auf Knoten Knoten1
[root@host1 mysql]# mysql
Nach dem Login kopieren

<br/>

9. Mounten Sie das DRBD-Dateisystem auf Knoten Node2
[root@node1 ~]# umount /var/lib/mysql_drbd
[root@node1 ~]# drbdadm secondary dbcluster
Nach dem Login kopieren

<br/>

10. Konfigurieren Sie MySQL auf Knoten Node2 und testen Sie
[root@node2 ~]# drbdadm primary dbcluster
[root@node2 ~]# mount /dev/drbd0 /mysql/
Nach dem Login kopieren

<br/>

11. Führen Sie einen MySQL-Anmeldetest auf Knoten2 durch
[root@node1 ~]# scp node2:/etc/my.cnf /etc/my.cnf
[root@node2 ~]# chown mysql /etc/my.cnf
[root@node2 ~]# chmod 644 /etc/my.cnf
Nach dem Login kopieren

<br/>

12. Deinstallieren Sie das DRBD-Dateisystem auf Knoten2 und lassen Sie es von der Cluster-Management-Software Pacemaker verwalten
[root@node2 ~]# mysql
Nach dem Login kopieren

5: Installation und Konfiguration von Corosync und Pacemaker (sowohl Knoten1 als auch Knoten2 müssen installiert sein)<br/>

Erforderliche Abhängigkeiten für die Installation von Pacemaker:
[root@node2~]# umount /var/lib/mysql_drbd
[root@node2~]# drbdadm secondary dbcluster
[root@node2~]# drbd-overview
  0:dbcluster/0  Connected Secondary/Secondary UpToDate/UpToDate C r—–
[root@node2~]#
Nach dem Login kopieren

Installation Cluster-Stack-Abhängigkeiten:<br/>

[root@node1~]#yum -y install automake autoconf libtool-ltdl-devel pkgconfig python glib2-devel libxml2-devel 
libxslt-devel python-devel gcc-c++ bzip2-devel gnutls-devel pam-devel libqb-devel
Nach dem Login kopieren

Optionale Abhängigkeiten für die Installation von Pacemaker:<br/>

[root@node1~]yum -y install clusterlib-devel corosynclib-devel
Nach dem Login kopieren

Pacemaker-Installation:<br/>

[root@node1~]yum -y install pacemaker
Nach dem Login kopieren

crmsh安装:<br/>

[root@node1~]wget http://www.php.cn/:/ha-clustering:/Stable/CentOS_CentOS-6/network:ha-clustering:Stable.repo
[root@node1~]yum -y install crmsh
Nach dem Login kopieren

1,配置corosync<br/>Corosync Key<br/>– 生成节点间安全通信的key:<br/>

[root@node1~]# corosync-keygen
Nach dem Login kopieren
– 将authkey拷贝到node2节点(保持authkey的权限为400):
[root@node~]# scp /etc/corosync/authkey node2:/etc/corosync/
2,[root@node1~]# cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
Nach dem Login kopieren

编辑/etc/corosync/corosync.conf:<br/>

# Please read the corosync.conf.5 manual page
compatibility: whitetank
aisexec {
        user: root
        group: root
}
totem {
        version: 2
secauth: off
threads: 0
interface {
ringnumber: 0
bindnetaddr: 192.168.1.0
mcastaddr: 226.94.1.1
mcastport: 4000
ttl: 1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: yes
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
Nach dem Login kopieren

– 创建并编辑/etc/corosync/service.d/pcmk,添加”pacemaker”服务<br/>

[root@node1~]# cat /etc/corosync/service.d/pcmk
service {
	# Load the Pacemaker Cluster Resource Manager
	name: pacemaker
	ver: 1
}
Nach dem Login kopieren

将上面两个配置文件拷贝到另一节点<br/>

[root@node1]# scp /etc/corosync/corosync.conf node2:/etc/corosync/corosync.conf
[root@node1]# scp /etc/corosync/service.d/pcmk node2:/etc/corosync/service.d/pcmk
Nach dem Login kopieren

3,启动corosync和Pacemaker<br/> 分别在两个节点上启动corosync并检查.<br/>

[root@node1]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync):               [  OK  ]
[root@node1~]# corosync-cfgtool -s
Printing ring status.
Local node ID -1123964736
RING ID 0
id = 192.168.1.189
status = ring 0 active with no faults
[root@node2]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync):               [  OK  ]
Nach dem Login kopieren

– 在两节点上分别启动Pacemaker:<br/>

[root@node1~]# /etc/init.d/pacemaker start
Starting Pacemaker Cluster Manager:                        [  OK  ]
[root@node2~]# /etc/init.d/pacemaker start
Starting Pacemaker Cluster Manager:
Nach dem Login kopieren

六、资源配置

<br/>配置资源及约束 <br/>配置默认属性<br/>查看已存在的配置:

[root@node1 ~]# crm configure property stonith-enabled=false
[root@node1 ~]# crm_verify -L
Nach dem Login kopieren
Nach dem Login kopieren

禁止STONITH错误:<br/>

[root@node1 ~]# crm configure property stonith-enabled=false
[root@node1 ~]# crm_verify -L
Nach dem Login kopieren
Nach dem Login kopieren

让集群忽略Quorum:<br/>

[root@node1~]# crm configure property no-quorum-policy=ignore
Nach dem Login kopieren

防止资源在恢复之后移动:<br/>

[root@node1~]# crm configure rsc_defaults resource-stickiness=100
Nach dem Login kopieren

设置操作的默认超时:<br/>

[root@node1~]# crm configure property default-action-timeout="180s"
Nach dem Login kopieren

设置默认的启动失败是否为致命的:

[root@node1~]# crm configure property start-failure-is-fatal="false"
Nach dem Login kopieren

配置DRBD资源<br/>– 配置之前先停止DRBD:<br/>

[root@node1~]# /etc/init.d/drbd stop
[root@node2~]# /etc/init.d/drbd stop
Nach dem Login kopieren

– 配置DRBD资源:<br/>

[root@node1~]# crm configure
crm(live)configure# primitive p_drbd_mysql ocf:linbit:drbd params drbd_resource="dbcluster" op monitor interval="15s"
 op start timeout="240s" op stop timeout="100s"
Nach dem Login kopieren

– 配置DRBD资源主从关系(定义只有一个Master节点):<br/>

crm(live)configure# ms ms_drbd_mysql p_drbd_mysql meta master-max="1" master-node-max="1" 
clone-max="2" clone-node-max="1" notify="true"
Nach dem Login kopieren

– 配置文件系统资源,定义挂载点(mount point):<br/>

crm(live)configure# primitive p_fs_mysql ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/var/lib/mysql_drbd/" fstype="ext4"
Nach dem Login kopieren

配置VIP资源<br/>

crm(live)configure# primitive p_ip_mysql ocf:heartbeat:IPaddr2 params ip="192.168.1.39" cidr_netmask="24" op 
monitor interval="30s"
Nach dem Login kopieren

配置MySQL资源<br/>

crm(live)configure# primitive p_mysql lsb:mysql op monitor interval="20s" 
timeout="30s" op start interval="0" timeout="180s" op stop interval="0" timeout="240s"
Nach dem Login kopieren

七、组资源和约束

通过”组”确保DRBD,MySQL和VIP是在同一个节点(Master)并且确定资源的启动/停止顺序.<br/>

启动: p_fs_mysql–>p_ip_mysql->p_mysql
停止: p_mysql–>p_ip_mysql–>p_fs_mysql
Nach dem Login kopieren
crm(live)configure# group g_mysql p_fs_mysql p_ip_mysql p_mysql
Nach dem Login kopieren

组group_mysql永远只在Master节点:<br/>

crm(live)configure# colocation c_mysql_on_drbd inf: g_mysql ms_drbd_mysql:Master
Nach dem Login kopieren

MySQL的启动永远是在DRBD Master之后:<br/>

crm(live)configure# order o_drbd_before_mysql inf: ms_drbd_mysql:promote g_mysql:start
Nach dem Login kopieren

配置检查和提交<br/>

crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# quit
Nach dem Login kopieren

查看集群状态和failover测试<br/>状态查看:<br/>

[root@node1 mysql]# crm_mon -1r
Nach dem Login kopieren

Failover测试:<br/>将Node1设置为Standby状态<br/>

[root@node1 ~]# crm node standby
Nach dem Login kopieren

过几分钟查看集群状态(若切换成功,则看到如下状态):<br/>

[root@node1 ~]# crm status
Nach dem Login kopieren

将Node1恢复online状态:<br/>

[root@node1 mysql]# crm node online
[root@node1 mysql]# crm status
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonMySQL – Detaillierte Einführung in die MySQL-Hochverfügbarkeitsimplementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage