Mysql+Corosync+Pacemaker+DRBD_MySQL
1、环境介绍
OS:centos 6.5
kernel:2.6.32-431.11.2.el6.x86_64
node1:nginxha001 10.0.15.31 Master
node2:nginxha002 10.0.15.32 Slave
vip:10.0.15.30
说明:本例主要以drbd为主,涉及到mysql,corosync,pacemaker程序的安装请参考其他资料。程序两台都要安装,定义drbd资源可在一台上配置完毕复制到另外一台,创建磁盘需两台都创建,定义corosync资源只需在一台上配置即可,他会自动同步到另外一台。若程序连接mysql用虚拟ip即vip连接,最好是把程序也部署在drbd磁盘上,这样程序配置为localhost即可。
2、安装依赖包
yum -y install gcc rpm-build kernel-devel kernel-headers flex ncurses-devel
wget http://elrepo.org/linux/elrepo/el5/x86_64/RPMS/drbd84-utils-8.4.3-1.el5.elrepo.x86_64.rpm
wget http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/kmod-drbd84-8.4.3-1.el6_4.elrepo.x86_64.rpm
yum -y install drbd84-utils-8.4.3-1.el5.elrepo.x86_64.rpm
yum install -y kmod-drbd84-8.4.3-1.el6_4.elrepo.x86_64.rpm
3、定义drbd资源
vi /etc/drbd.d/mysql.res #定义mysql资源,效果一样
resource mysql {
protocol C;
device /dev/drbd0;
disk /dev/sdc1;
meta-disk internal;
on nginxha001 {
address 10.0.15.31:7789;
}
on nginxha002 {
address 10.0.15.32:7789;
}
}
4、启动服务,并格式化磁盘
创建drbd数据同步所需的分区,两台电脑的空间要一样大
fdisk /dev/sdc
drbdadm create-md mysql
service drbd start
设置为主几点,仅在主节点上操作
drbdadm -- --overwrite-data-of-peer primary mysql
创建文件系统
mkfs -t ext4 /dev/drbd0
5、配置corosync资源
crm(live)# configure
property stonith-enabled=false
property no-quorum-policy=ignore
定义Mysql服务资源
primitive Mysqld lsb:mysqld
配置DRBD主从资源
primitive Drbd ocf:linbit:drbd params drbd_resource="mysql" op start interval="0" timeout="240" op stop interval="0" timeout="100"
master My_Drbd Drbd meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
定义一个文件系统资源
primitive FileSys ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/mysqldata" fstype="ext4" op start timeout="60s" op stop timeout="60s"
定将资源之间的位置和启动顺序约束
#让文件系统与DRBD主节点运行在一起
colocation FileSys_on_My_Drbd inf: FileSys My_Drbd
#让DRBD服务比文件系统先启动
order FileSys_after_My_Drbd inf: My_Drbd:promote FileSys:start
#让Mysql服务与文件系统运行在一起
colocation Mysqld_on_FileSys inf: Mysqld FileSys
#让文件系统比Mysql服务先运行
order Mysqld_after_FileSys inf: FileSys Mysqld:start
#让虚拟IP与Mysql服务运行在一起
colocation vip_on_Mysqld inf: vip Mysqld
执行完毕后,最后的配置文件如下:
node nginxha001 /
attributes standby="off"
node nginxha002 /
attributes standby="off"
primitive Drbd ocf:linbit:drbd /
params drbd_resource="mysql" /
op monitor interval="10s" role="Master" /
op monitor interval="20s" role="Slave" /
op start timeout="240s" interval="0" /
op stop timeout="100" interval="0"
primitive FileSys ocf:heartbeat:Filesystem /
params device="/dev/drbd0" directory="/mysqldata" fstype="ext4" /
op start timeout="60s" interval="0" /
op stop timeout="60s" interval="0"
primitive Mysqld lsb:mysqld
primitive vip ocf:heartbeat:IPaddr /
params ip="10.1.15.30" nic="eth0" cidr_netmask="24" /
op monitor interval="10s"
ms My_Drbd Drbd /
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
colocation FileSys_on_My_Drbd inf: FileSys My_Drbd:Master
colocation Mysqld_on_FileSys inf: Mysqld FileSys
colocation vip_on_Mysqld inf: vip Mysqld
order FileSys_after_My_Drbd inf: My_Drbd:promote FileSys:start
order Mysqld_after_FileSys inf: FileSys Mysqld:start
property $id="cib-bootstrap-options" /
dc-version="1.1.10-14.el6_5.2-368c726" /
cluster-infrastructure="classic openais (with plugin)" /
expected-quorum-votes="4" /
stonith-enabled="false" /
no-quorum-policy="ignore" /
last-lrm-refresh="1396576217"
rsc_defaults $id="rsc-options" /
resource-stickiness="100"
#vim:set syntax=pcmk
若有有错误,执行如下命令清除错误即可
crm resource cleanup Mysqld
crm resource cleanup vip
crm resource cleanup FileSys
6、其他命令
挂载drbdo
mount /dev/drbd0 /mysqldata/
卸载
umount /mysqldata/
设置drbd为主,只有设置为主的才能挂载磁盘
drbdadm primary mysql
设置drbd为备用
drbdadm secondary mysql
watch -n1 'drbd-overview' 观察数据同步情况,ctrl+c退出。
drbd-overview #查看状态,当为下面内容时,进行下一步操作
cat /proc/drbd 查看同步进度
7、修改my.cnf配置,主要更改数据目录为drbd的目录
vi /etc/my.cnf
[mysqld]
datadir=/mysqldata
socket=/mysqldata/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/mysqldata/mysqld.log
pid-file=/mysqldata/mysqld.pid
[client]
socket=/mysqldata/mysql.sock

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Fähigkeiten zur Verarbeitung von Big-Data-Strukturen: Chunking: Teilen Sie den Datensatz auf und verarbeiten Sie ihn in Blöcken, um den Speicherverbrauch zu reduzieren. Generator: Generieren Sie Datenelemente einzeln, ohne den gesamten Datensatz zu laden, geeignet für unbegrenzte Datensätze. Streaming: Lesen Sie Dateien oder fragen Sie Ergebnisse Zeile für Zeile ab, geeignet für große Dateien oder Remote-Daten. Externer Speicher: Speichern Sie die Daten bei sehr großen Datensätzen in einer Datenbank oder NoSQL.

Die MySQL-Abfrageleistung kann durch die Erstellung von Indizes optimiert werden, die die Suchzeit von linearer Komplexität auf logarithmische Komplexität reduzieren. Verwenden Sie PreparedStatements, um SQL-Injection zu verhindern und die Abfrageleistung zu verbessern. Begrenzen Sie die Abfrageergebnisse und reduzieren Sie die vom Server verarbeitete Datenmenge. Optimieren Sie Join-Abfragen, einschließlich der Verwendung geeigneter Join-Typen, der Erstellung von Indizes und der Berücksichtigung der Verwendung von Unterabfragen. Analysieren Sie Abfragen, um Engpässe zu identifizieren. Verwenden Sie Caching, um die Datenbanklast zu reduzieren. Optimieren Sie den PHP-Code, um den Overhead zu minimieren.

Das Sichern und Wiederherstellen einer MySQL-Datenbank in PHP kann durch Befolgen dieser Schritte erreicht werden: Sichern Sie die Datenbank: Verwenden Sie den Befehl mysqldump, um die Datenbank in eine SQL-Datei zu sichern. Datenbank wiederherstellen: Verwenden Sie den Befehl mysql, um die Datenbank aus SQL-Dateien wiederherzustellen.

Wie füge ich Daten in eine MySQL-Tabelle ein? Mit der Datenbank verbinden: Stellen Sie mit mysqli eine Verbindung zur Datenbank her. Bereiten Sie die SQL-Abfrage vor: Schreiben Sie eine INSERT-Anweisung, um die einzufügenden Spalten und Werte anzugeben. Abfrage ausführen: Verwenden Sie die Methode query(), um die Einfügungsabfrage auszuführen. Bei Erfolg wird eine Bestätigungsmeldung ausgegeben.

Eine der wichtigsten Änderungen, die in MySQL 8.4 (der neuesten LTS-Version von 2024) eingeführt wurden, besteht darin, dass das Plugin „MySQL Native Password“ nicht mehr standardmäßig aktiviert ist. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig. Diese Änderung betrifft PHP und andere Apps

So verwenden Sie gespeicherte MySQL-Prozeduren in PHP: Verwenden Sie PDO oder die MySQLi-Erweiterung, um eine Verbindung zu einer MySQL-Datenbank herzustellen. Bereiten Sie die Anweisung zum Aufrufen der gespeicherten Prozedur vor. Führen Sie die gespeicherte Prozedur aus. Verarbeiten Sie die Ergebnismenge (wenn die gespeicherte Prozedur Ergebnisse zurückgibt). Schließen Sie die Datenbankverbindung.

Das Erstellen einer MySQL-Tabelle mit PHP erfordert die folgenden Schritte: Stellen Sie eine Verbindung zur Datenbank her. Erstellen Sie die Datenbank, falls sie nicht vorhanden ist. Wählen Sie eine Datenbank aus. Tabelle erstellen. Führen Sie die Abfrage aus. Schließen Sie die Verbindung.

Oracle-Datenbank und MySQL sind beide Datenbanken, die auf dem relationalen Modell basieren, aber Oracle ist in Bezug auf Kompatibilität, Skalierbarkeit, Datentypen und Sicherheit überlegen, während MySQL auf Geschwindigkeit und Flexibilität setzt und eher für kleine bis mittlere Datensätze geeignet ist. ① Oracle bietet eine breite Palette von Datentypen, ② bietet erweiterte Sicherheitsfunktionen, ③ ist für Anwendungen auf Unternehmensebene geeignet; ① MySQL unterstützt NoSQL-Datentypen, ② verfügt über weniger Sicherheitsmaßnahmen und ③ ist für kleine bis mittlere Anwendungen geeignet.
