Heim > Datenbank > MySQL-Tutorial > Hauptteil

Erfahren Sie, wie Sie mehrere MySQL-Dienste auf einem Computer ausführen

Y2J
Freigeben: 2017-05-23 14:48:02
Original
1310 Leute haben es durchsucht

************************************************** ***** ***********

Teil eins, Aufbau mehrerer MySQL-Dienste auf einem Server

*********** ***** *****************************************


1. Einführung

Es gibt einen mysqld_multi-Befehl, mit dem mehrere MySQL-Dienste auf einem physischen Server ausgeführt werden können. Ich habe ihn heute selbst getestet und bestanden. Ich bin wirklich glücklich. Jetzt werde ich den Betriebsablauf mit Ihnen teilen.

Betriebssystem: Linux 2.6.13 (Slackware), andere Versionen von Linux sollten ähnlich sein. Installation des MySQL 4.0.17-Quellprogramms (ich glaube, die neueste Version 5.1.* ist auch verfügbar. Fast, versuchen Sie es in ein paar Tagen noch einmal.)

Planung: 4 MySQL-Dienste ausführen:

Servernamen übernehmen : db-app (IP ist 192.168.0.100),

Übernehmen Sie den Servernamen: db-app2 (IP ist 192.168.0.101),

Im Folgenden geht es bis zum zweiten Teil um MySQL db-app,


Zweitens, Vorbereitung

Installation mit MySQL-Quellprogramm, nehmen wir an, dass die Option configura während der Installation verwendet wird?


./configure - -prefix=/usr/local/mysql --datadir=/usr /local/mysql/data1 --sysconfdir=/etc

Hinweis: --prefix installiert MYSQL nach /usr/local/mysql,

--datadir generiert die Datenbank nach /usr/local /mysql/data1

sysconfdir gibt den Suchpfad der von MySQL verwendeten my.cnf-Konfigurationsdatei als /etc an

Andere MySQL-Installationsvorgänge werden weggelassen.


Im MySQL-Verwaltungshandbuch heißt es: Jeder MySQL-Dienst kann unabhängig sein, daher ruft jeder eine andere Startoption in my.cnf auf Der unten erwähnte GNR-Wert verwendet unterschiedliche Ports und generiert Die jeweiligen Socket-Dateien und Dienstdatenbanken sind unabhängig (weitere Informationen finden Sie im englischen Verwaltungshandbuch auf der offiziellen MySQL-Website


mysqld_multi). ist ein Dienstprozess, der mehrere MySQL-Programme verwaltet. Verschiedene Unix-Sockets können an verschiedenen Ports lauschen. Es kann den aktuellen Dienststatus starten, stoppen und überwachen.


----Das Programm sucht nach dem Abschnitt [mysqld#] in my.cnf (oder der in --config-file angepassten Konfigurationsdatei). „#“ kann eine beliebige positive Ganzzahl sein. Diese positive ganze Zahl ist die unten erwähnte Segmentsequenz, also GNR. Die Seriennummer des Segments wird als Parameter von mysqld_multi verwendet, um verschiedene Segmente zu unterscheiden, sodass Sie den Start und Stopp eines bestimmten MySQL-Prozesses steuern oder dessen Berichtsinformationen abrufen können. Die Parameter in diesen Gruppen sind genau wie die Parameter der Gruppen, die zum Starten eines MySQLd erforderlich sind. Wenn Sie jedoch mehrere Dienste verwenden, müssen Sie für jeden Dienst einen Unix-Socket oder -Port angeben (Auszug aus http://mifor.4dian.org Verwendung des Programms mysqld_multi zum Verwalten mehrerer MySQL-Dienste).


Wie Sie dem obigen Text entnehmen können, ist die my.cnf-Konfigurationsdatei der wichtigste der zahlreichen MySQL-Dienste.

Jetzt poste ich meine my.cnf-Datei.- -- --------------------


[mysqld_multi]

mysqld = /usr/local/mysql/bin /mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user = mysql (Verwenden Sie ein Konto, um alle MySQL-Server zu starten, da dasselbe Konto verwendet wird. Was ist dieses Konto? ? Es muss ein Konto sein, das von jedem MySQL-Dienst verwendet wird, vorzugsweise ein Verwaltungskonto. Das folgende Passwort ist dasselbe wie)

password = mypaswd


[mysqld1]

port = 3306

socket = /tmp/mysql.sock1

pid-file=/usr/local/mysql/data1/db-app1.pid

log =/usr/local/mysql/data1/db-app.log

datadir = /usr/local/mysql/data

user = mysql


[ mysqld2]

port = 3307

socket = /tmp/mysql.sock2

pid-file = /usr/local/mysql/data2/db-app2.pid

datadir = /usr/local/mysql/data2

log=/usr/local/mysql/data2/db-app.log

user = mysql


[mysqld3]

port = 3308

socket = /tmp/mysql.sock3

pid-file = /usr/local/mysql/data3/ db-app3.pid3

datadir = /usr/local/mysql/data3

log=/usr/local/mysql/data3/db-app.log

user = mysql


[mysqld4]

port = 3309

socket = /tmp/mysql.sock4

pid-file = /usr/ local/mysql/data3/db-app4.pid

datadir = /usr/local/mysql/data4

log=/usr/local/mysql/data4/db-app.log

user = mysql


[mysqldump]

quick

max_allowed_packet = 16M


[mysql]

no-auto-rehash


[isamchk]

key_buffer = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M


[myisamchk]

key_buffer = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_b Puffer = 2M


[mysqlhotcopy]

interactive-timeout

In meiner Konfigurationsdatei gibt es mysqld1, mysqld2, mysqld3, mysqld4. Das heißt, ich werde 4 MySQL-Dienste auf verschiedenen Ports desselben Servers starten – 3306-3309. Der von jedem Datenverzeichnis angegebene Datenbankdateipfad ist unterschiedlich und jeder hat seine eigene unterschiedliche Protokolldatei. Einige andere Einstellungen können den ursprünglichen Inhalt von my.cnf verwenden


ok, die wichtige my.cnf wurde bearbeitet, erstellen Sie jetzt separate Ordner und anfängliche Datenbanken für verschiedene MySQL-Dienste

[mysqld1] ist ein Standardverzeichnis, es war bereits vorhanden, als wir MySQL installiert haben, also machen Sie sich keine Sorgen darüber


[mysqld2], erstellen Sie einfach ein Verzeichnis dafür Der konfigurierte Pfad. Das Verzeichnis wird in MySQL-Verwaltungsrechte geändert


db-app:/ # mkdir /usr/local/mysql/data2


Build a Datenbank können wir die Standard-MySQL-Datenbank kopieren, um andere MySQL-Konten zu verwenden, und andere Datenbanken entsprechend der Anwendung erstellen


db-app:/ # cp /usr/local/mysql/data1/mysql /usr /local/mysql/data2 -R

db-app:/ # chmod mysql.mysql /usr/local/mysql/data2 -R


[mysqld3],[ mysqld4] , das Gleiche.


Wir können sehen, ob diese Verzeichnisse existieren

db-app:/ # ls -l /usr/local/mysql/


drwxr-xr-x 6 mysql mysql 4096 9. April 17:54 data4

drwxr-x--- 2 mysql mysql 4096 9. April 17:14 data1

drwxr-xr - x 3 mysql mysql 4096 9. Apr. 17:54 data2

drwxr-xr-x 3 mysql mysql 4096 9. Apr. 17:54 data3


Jetzt kann es über mysqld_multi gestartet werden.


Drei, mysqld_multi-Befehl. Verwenden Sie die folgenden Parameter, um mysqld_multi zu starten: (Hinweis: Dieser Befehl befindet sich im Bin-Verzeichnis von MySQL, wie oben erwähnt./configure --prefix =/usr/local/mysql, daher sollte sich die Datei in /usr/local/mysq/bin befinden, was vom Pfad abhängt, den Sie bei der Installation angegeben haben)

db-app:/ # mysqld_multi [options] { start|stop|report} [GNR[,GNR]...]


start, stop und report beziehen sich auf die Vorgänge, die Sie ausführen möchten. Sie können einen Vorgang für einen einzelnen Dienst oder für mehrere Dienste angeben, im Unterschied zur GNR-Liste, die den Optionen folgt. Wenn keine GNR-Liste angegeben ist, arbeitet mysqld_multi in allen Diensten gemäß der Optionsdatei.


Der Wert jedes GNR ist die Sequenznummer der Gruppe oder der Sequenznummernbereich einer Gruppe. Der Wert dieses Elements muss die letzte Zahl des Gruppennamens sein. Wenn der Gruppenname beispielsweise mysqld17 lautet, ist der Wert dieses Elements 17. Wenn Sie einen Bereich angeben, verwenden Sie „-“ (Bindestrich), um den zu verbinden zwei Zahlen. Wenn der Wert von GNR 10-13 beträgt, bezieht er sich auf die Gruppen mysqld10 bis 13. In der Befehlszeile können mehrere Gruppen oder Gruppenbereiche angegeben werden, getrennt durch "," (Komma). Es dürfen keine Leerzeichen (z. B. Leerzeichen oder Tabulatoren) vorhanden sein. Parameter, die auf Leerzeichen folgen, werden ignoriert. (Hinweis: Der GNR-Wert ist der Wert in mysqld#, den wir in my.cnf definiert haben. Ich habe hier nur 1-4



db-app:/ # /usr/local.) /mysq /bin/mysqld_multi --config-file=/etc/my.cnf start 1 startet nur den ersten MySQL-Dienst und die zugehörigen Dateien werden von mysql1 in my.cnf festgelegt -app: / # /usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf stop 1 Starten und stoppen Sie den ersten MySQL-Dienst


db-app:/ # /usr /local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf start 1-4, starte den 1. bis 4. MySQL-Dienst, der eigentlich alles ist, was ich hier habe


db- app:/ # /usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf Bericht 1-4


Start anzeigen:


db-app:/ # ps aux


root 10467 0,0 0,2 2712 1300 pts/0 S 18:59 0:00 /bin/sh /usr/local/mysql/ bin/mysqld_safe -- port=3306 --socket=/tmp/mysql.sock1

root 10475 0.0 0.2 2712 1300 pts/0 S 18:59 0:00 /bin/sh /usr/local/mysql /bin/mysqld_safe - -port=3307 --socket=/tmp/mysql.sock2

root 10482 0,0 0,2 2716 1300 pts/0 S 18:59 0:00 /bin/sh /usr/local/ mysql/bin/mysqld_safe --port=3308 --socket=/tmp/mysql.sock3

root 10487 0.0 0.2 2716 1300 pts/0 S 18:59 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --port=3309 --socket=/tmp/mysql.sock4

.................................................


Viertens: Client-Zugriff

Jeder Client-Zugriff muss den Zugriffsport angeben, um auf den angegebenen Datenbankdienst zuzugreifen. Andernfalls wird MYSQL vom MySQL-Standardport (3306) bereitgestellt gebraucht.

************************************************ **** ****************

Teil 2, Erstellen mehrerer MySQL-Hauptdienste auf einem Server

***** ****** ********************************************** **


Tipp: Erstellen Sie ein Konto speziell für die folgende Master-Slave-Replikation. Die in diesem Beispiel verwendete Kontoreplikation hat das Passwort: „1234567890“, das es ermöglicht, „select_priv“, „reload_priv“ und „process_priv“ zu haben , grant_priv, super_priv, repl_slave_priv, repl_client_priv Berechtigungen und kann über jeden Client aufgerufen werden, dh der Zugriffsclient ist „%“.

Der Hauptzweck besteht darin, den Inhalt in my.cnf zu ändern, sodass jedes MySQL seine eigene Bin-Log-Datei und seine eigene Betriebsumgebung generieren kann. Fügen Sie nun den gesamten Inhalt von my.cnf ein zu mysql für verwandte Parameter = /tmp/mysql .sock


[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/ mysql/bin/mysqladmin

user = mysql

password = mypasswd

[mysqld1]

port = 3306

socket = / tmp/mysql.sock1

Skip-Locking

pid-file=/usr/local/mysql/data/net-app1a.pid

datadir = /usr/local /mysql/data

log=/usr/local/mysql/data/net-app1.log

user = mysql

log-slow-queries=/usr/ local/mysql/data /slowquery.log

long_query_time = 2

key_buffer = 256M

max_allowed_packet = 1M

table_cache = 512

sort_buffer_size = 2M

read_buffer_size = 2M 2

max_connections=500

log-bin

log-bin=/usr/local/mysql/data /app-net1_1-bin

server-id = 1


[mysqld2]

port = 3307

socket = /tmp/mysql .sock2

pid-file = /usr/local/mysql/data2 /net-app1b.pid

datadir = /usr/local/mysql/data2

log= /usr/local/mysql/data2/net-app1.log

user = mysql

log-slow-queries=/usr/local/mysql/data2/slowquery.log

long_query_time = 10

key_buffer = 128M

max_allowed_packet = 1M

table_cache = 512

sort_buffer_size = 1M

read_buffer_size = 1M

myisam_sort_buffer_size = 32M

thread_cache = 32

query_cache_size = 16M

thread_concurrency = 2

max_connections=300

log-bin

log-bin=/usr/local/ mysql/data2/app-net1_2-bin

server-id = 1


[ mysqld3]

port = 3308

socket = / tmp/mysql.sock3

Skip-Locking

pid-file = /usr/local/mysql /data3/net-app1c.pid

datadir = /usr/local /mysql/data3

log=/usr/local/mysql/data3/net-app1.log

user = mysql

log-bin

log-bin=/usr/local/mysql/data3/app-net1_3-bin

server-id = 1


[mysqld4]

port = 3309

socket = /tmp/mysql.sock4

skip-locking

pid -file = /usr/local/mysql/data1/app-net1d.pid

datadir = /usr/local/mysql/data1

log=/usr/local/mysql/data1/ net-app1.log

user = mysql

log-bin

log-bin=/usr/local/mysql/data1/app-net1_4-bin

server-id = 1


[mysqldump]

schnell

max_allowed_packet = 16M


[mysql]

keine automatische Wiederaufbereitung

#Entfernen Sie das nächste Kommentarzeichen, wenn Sie mit SQL nicht vertraut sind

#safe-updates


[isamchk]

key_buffer = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M


[myisamchk]

key_buffer = 128M

sort_b buffer_size = 128M

read_buffer = 2M

write_buffer = 2M


[mysqlhotcopy]

interactive-timeout


* *********************


Das Starten mehrerer MySQL-Dienste ist dasselbe,

db-app:/ # /usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf start 1-4

******************** ***** *****************************************

Teil Drei: Erstellen Sie mehrere MySQL-Slave-Dienste auf einem Server

****************************** ****** ***************************

Vorauswahlvorbereitung für den Aufbau des Slave-Servers: It Es wird empfohlen, mysqld_multi zu verwenden, um alle MySQL-Dateien auf dem Master-Server zu stoppen, mit Ausnahme des Datenbankverzeichnisses (in diesem Artikel gibt es 4 Datenverzeichnisse, datadir = data1 - data1 in /usr/local/mysql/). . Sowohl der Master als auch die Slaves verwenden denselben Datenverzeichnispfad.

Verwenden Sie den Tar-Befehl, um jede Datenbank zu kapseln und sie über den SFTP-Befehl auf den Slave-Server (db-app1 192.168.0.101) zu übertragen.


Die folgenden Vorgänge sind für Referenz:

Operationen auf dem db-app-Host

db-app:/ # tar -cf data1.tar /usr/local/mysql/data1

db-app :/ # tar -cf data2.tar /usr/local/mysql/data2

db-app:/ # tar -cf data3.tar /usr/local/mysql/data3

db -app: / # tar -cf data4.tar /usr/local/mysql/data4


Vorgang auf db-app1-Host


db-app1:/ # tar xvf data1.tar

db-app1:/ # tar xvf data2.tar

db-app1:/ # tar xvf data3.tar

db-app1:/ # tar xvf data4.tar


Bestätigen Sie gleichzeitig, ob das Systemkonto MySQL über Betriebsberechtigungen für das MySQL-Datenverzeichnis im Master/Slave-Server verfügt. Wenn Sie dies nicht bestätigen können, können Sie es direkt ändern Das Eigentum an diesen Verzeichnissen kann.

Vorgänge auf dem db-app-Host

db-app:/ # chown mysql.mysql /usr/local/mysql/data1 -R

db-app: / # chown mysql.mysql /usr/local/mysql/data2 -R

db-app:/ # chown mysql.mysql /usr/local/mysql/data3 -R

db- app :/ # chown mysql.mysql /usr/local/mysql/data4 -R


Vorgang auf db-app1-Host

db-app1:/ # chown mysql /usr /local/mysql/data1 -R

db-app2:/ # chown mysql.mysql /usr/local/mysql/data2 -R

db-app3:/ # chown mysql.mysql /usr/local/mysql/data3 -R

db-app4:/ # chown mysql.mysql /usr/local/mysql/data4 -R


Das Folgende ist From the Gesamter Inhalt von /etc/my.cnf auf dem Server

Tipp: In my.cnf wird unten ein Konto erwähnt: repl, das Passwort lautet: „1234567890“, dieses Konto wurde oben speziell erstellt.

Tatsächlich sind sie alle gleich. Die Hauptsache besteht darin, den Inhalt in my.cnf zu ändern, sodass jedes Slave-MySQL sein eigenes Bin-Protokoll über verschiedene Ports des Haupt-MySQL erhalten kann, um das zu aktualisieren selbst erstellte Datenbankinhalte. Fügen Sie nun den gesamten Inhalt meiner my.cnf (vom Server) ein. Informationen zu den zugehörigen Parametern finden Sie im offiziellen MySQL-Handbuch

#port = 3306

#socket = /tmp/mysql.sock


[mysqld_multi]

mysqld = /usr/local/ mysql/ bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user = mysql

password = netmoniit

[mysqld1]

port = 3306

socket = /tmp/mysql.sock1

Skip-Locking

pid-file=/usr/local/mysql/data /net -app1a.pid

datadir = /usr/local/mysql/data

log=/usr/local/mysql/data/net-app1.log

user = mysql

log-slow-queries=/usr/local/mysql/data/slowquery.log

long_query_time = 2

key_buffer = 256M

max_allowed_packet = 1M

table_cache = 512 

sort_buffer_size = 2M 

read_buffer_size = 2M 

myisam_sort_buffer_size = 64M 

thread_cache = 32 .

query_ca che_size = 32M 

thread_concurrency = 2 

max_connections=500 

server-id = 2 

master-host = 192.168.0.100 

master-user = 'repl' 

master-password = '1234567890' 

master-port = 3309 

report-host = net-app1 

master-connect- erneut versuchen = 30 

log-bin 

log-slave-updates 



[mysqld2] 

port = 3307 

socket = /tmp/mysql.sock2 

pid-file = /usr/local/mysql/data2/net-app1b.pid 

datadir = /usr/local/mysql/ data2 

log=/usr/local/mysql/data2/net-app1.log 

user = mysql 

log-slow-queries=/usr/local/mysql /data2/slowQuery.log

long_query_time = 10

KEY_BUFFER = 128M

max_allowed_packet = 1m

table_cache = 512

sorte_buffer_buffer_buffer_buffer_size = 1M 

read_buffer_size = 1M 

myisam_sort_buffer_size = 32M 

thread_cache = 32 

query_cache_size = 16M .

thread_concurrency = 2 

max_connections=300 

server-id = 2 

master-host = 192.168.0.100 

master-user = 'repl' 

master- Passwort = '1234567890' 

master-port = 3309 

report-host = net-app1 

master-connect-retry = 30 

log- bin 

log-slave-updates 



[mysqld3] 

port = 3308 

socket = /tmp/mysql.sock3

pid-file = /usr/local/mysql/data3/net-app1c.pid 

datadir = /usr/local/mysql/data3 

log=/usr /local/mysql/data3/net-app1.log 

user = mysql 

log-slow-queries=/usr/local/mysql/data3/slowquery.log 

long_query_time = 10 

key_buffer = 128M 

max_allowed_packet = 1M 

table_cache = 512 

sort_buffer_size = 1M .

read_buffer_size = 1 Mio. 

myisam_sort_buffer_size = 32M 

thread_cache = 32 

query_cache_size = 16M 

thread_concurrency = 2 

max_connections=300 

Server-ID = 2 

Master-Host = 192.168.0.100 

Master-Benutzer = 'repl' 

Master-Passwort = '1234567890' 

Master-Port = 3309 

report-host = net-app1 

master-connect-retry = 30 

log-bin 

log-slave- Updates 


[mysqld3] 

port = 3308 

socket = /tmp/mysql.sock4 

pid-file = /usr/local /mysql/data4/net-app1d.pid 

datadir = /usr/local/mysql/data4 

log=/usr/local/mysql/data4/net-app1.log 

user = mysql 

log-slow-queries=/usr/local/mysql/data4/slowquery.log 

long_query_time = 10 

key_buffer = 128M 

max_allowed_packet = 1M 

table_cache = 512 

sort_buffer_size = 1M 

read_buffer_size = 1M 

myisam_sort_buffer_size = 32M 

thread_cache = 32 

query_cache_size = 16M 

thread_concurrency = 2 

max_connections=300 

server-id = 2 

master-host = 192.168.0.100 = net-app1 

master-connect-retry = 30 

log-bin 

log-slave-updates 



[ mysqldump] 

schnell 

max_allowed_packet = 16M 


[mysql] 

no-auto-rehash

# Entfernen Sie das nächste Kommentarzeichen, wenn Sie mit SQL nicht vertraut sind

#safe-updates


[isamchk]

key_buffer = 128M 🎜> key_buffer = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M


[mysqlhotcopy]

Interaktiv- Timeout


*********************************** ********

Da Sie nun fertig sind, starten Sie die mehreren MySQL-Dienste jeweils auf den beiden Hosts. Auf diese Weise wird jede Änderung in MySQL jedes Master-Dienstes automatisch kopiert/aktualisiert die entsprechende Datenbank des Slave-Servers.


db-app:/ # /usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf start 1-4

db-app1 :/ # /usr/local/mysq/bin/mysqld_multi --config-file=/etc/my.cnf start 1-4


************ ********


Fünf, zukünftige Tests,

Als nächstes möchte ich eine Multi-Master- und Ein-Slave-MySQL-Server-Replikationslösung erstellen! ein paar Ratschläge? Meinungen!

Es gibt Master-Server Server A, Server B und Slave-Server Server C. A und B führen unterschiedliche Datenbankanwendungen aus, vorausgesetzt, die Datenbanknamen sind unterschiedlich. Server C (vorausgesetzt, dass auf diesen drei PCs nur ein MySQL-Dienst ausgeführt wird) umfasst alle MySQL-Benutzer der Server A und B mit denselben Zugriffsrechten und ist über die Master/Slave-Methode in einen MySQL-Dienst C integriert Datenbank.


Es ist fast so, als würde man das MySQL von zwei Master-Servern zu einem Slave-Server zusammenführen.


[Verwandte Empfehlungen]

1.
Kostenloses MySQL-Video-Tutorial


2 MySQL-Dienst Teil 2


3.

Lernen Sie, wie Sie einen der MySQL-Dienste starten und stoppen

Ein Beispiel-Tutorial zur Verarbeitung speziell SQL-Anweisungen in MySQL

5. Detaillierte Erklärung, wie man SQL-Anweisungen schreibt, um Tabellen in verschiedenen Datenbanken zu löschen

Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie mehrere MySQL-Dienste auf einem Computer ausführen. 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