एक ही सर्वर पर एक से अधिक MySQL उदाहरणों स्थापित करने की 'डेबियन रास्ता' क्या है?


9

आप एक ही सर्वर पर एकाधिक MySQL उदाहरणों की स्थापना के किसी भी 'डेबियन रास्ता' को जानते हो? सर्वर को कई दूरस्थ डेटाबेस से दोहराया गया डेटा प्राप्त होगा।

मैं की तरह इस्तेमाल कर सकते हैं स्क्रिप्ट mysqlsandbox लेकिन मैं डेबियन संकुल के लिए छड़ी करने के लिए पसंद करते हैं और भविष्य में ज्यादा जटिलताओं के बिना सेटअप उन्नत करने के लिए सक्षम होने के लिए करना चाहते हैं। एक अन्य समाधान mysqlmanager है - यह MySQL 5.1 के साथ काम करता है, लेकिन यह पदावनत नहीं है और 5.5 के साथ अब जारी नहीं किया गया है।

तो एक सिंगल डेबियन सर्वर पर कई MySQL इंस्टेंस चलाने का 'सबसे अच्छा अभ्यास' क्या है?


आजकल ऐसे मामलों में डॉकटर का उपयोग किया जा सकता है।
ALex_hha

जवाबों:


12

मेरा मानना है कि इसे चलाने के रूप में सरल रूप में है mysqld_multiऔर सही ढंग से अपने my.cnf की स्थापना। mysqld_multiएक पैक झालर नहीं - mysql वितरण का एक हिस्सा है।

नहीं है एक पैच बनाने के लिए /usr/share/mysql/mysqld_multi.serverमें उपयोग के लिए उपयुक्त /etc/init.dहै और एक और पैच बनाने के लिए mysqld_multiप्रयोग में फ़ाइलें /etc/mysql/conf.d

आप mysql_install_dbइस तरह के आदेश के साथ नए उदाहरणों के लिए MySQL डेटा निर्देशिकाओं को इनिशियलाइज़ कर सकते हैं :

mysql_install_db --datadir=/var/lib/mysql2

नए बनाए गए उदाहरण का रूट पासवर्ड बदलना न भूलें:

mysqladmin --port 3307 --user=root password 'new-password'

धन्यवाद; क्या आप इसे व्यवहार में उपयोग करते हैं? किसी भी डरावनी कहानियों / संकेत?
pQd

1
मेरी डरावनी कहानी एक 2 दिन की लंबी डेटा रिकवरी है क्योंकि डेबियन की mysql इनिट स्क्रिप्ट को शालीन रूप से mysql बंद नहीं किया जा रहा था क्योंकि शटडाउन बहुत लंबा था। तब से मैं डेबियन mysql पैकेज का उपयोग नहीं करता, केवल पेरकोना के बाइनरी वितरण और उसमें
इनस्क्रिप्ट

@GaborVincze - क्या यह mysqld_multi सेटअप या 'नियमित' एकल-mysql-इंस्टा इंस्टालेशन में था?
pQd

यह एक नियमित स्थापना थी। एक 5.1
गाबोर विंस्के

1
मैं व्यवहार में mysqld_multi का उपयोग करता हूं। सबसे कठिन हिस्सा यह है कि आपको mysqld_multi / mysqladmin का उपयोग / इंस्टेंस बनाम /etc/init.d/mysqld पुनरारंभ शुरू करने / बंद करने के लिए करना होगा - इसमें पूर्व-कैनेपी स्क्रिप्ट का एक बहुत बुरा नहीं है जो इसे आसान बनाता है। एक बार जब आप इसे महारत हासिल कर लेते हैं, तो यह पुरानी टोपी बन जाती है और यह कहने के लिए एक उदाहरण के लिए स्पिन करने का एक बहुत ही सुविधाजनक तरीका है, वसूली, विलंबित प्रतिकृति - जो भी हो।
22

3

डेबियन 8 पर, आप सिस्टमड मैकेनिज्म का उपयोग कर सकते हैं: इसकी अधिक आवश्यकता नहीं है mysqld_multi

नोट: मैं MariaDB संस्करण का उपयोग करता हूं! यकीन नहीं होता कि यह 'क्लासिक' MySQL पैकेज के साथ काम करता है।

से /lib/systemd/system/mariadb@.service:

मारीडब का बहु उदाहरण संस्करण। यदि आप एक बार में म्यूटेंट वर्जन चलाते हैं। इसके अलावा mariadb @ bootstrap से बूटस्ट्रैप गैलेरा के लिए उपयोग किया जाता है।

config फाइल /etc/mysql/conf.d/ मेरा {instancename} .cnf बनाएं

systemctl शुरू mariadb@{instancename}.server के रूप में शुरू

इसलिए, एक फ़ाइल बनाएं /etc/mysql/conf.d/myserver2.cnf, और इसमें नई पिड / सॉकेट / डेटाडिर फाइलें और नेटवर्क पोर्ट निर्दिष्ट करें:

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld-server2.pid
socket      = /var/run/mysqld/mysqld-server2.sock
port        = 3307
basedir     = /usr
datadir     = /var/lib/mysql-server2
tmpdir      = /tmp

संपादित करें: ध्यान रखें कि पहले MySQL उदाहरण इस कॉन्फिग फाइल को नहीं पढ़ता है, जिसके !includedir /etc/mysql/conf.d/*निचले भाग में /etc/mysql/my.cnf। यदि यह मामला है, की जगह !includedirएक साथ !includeप्रत्येक कॉन्फ़िग फ़ाइल अन्य की तुलना में myserver2.cnf की:

#!includedir /etc/mysql/conf.d/*
!include /etc/mysql/conf.d/conf1.cnf
!include /etc/mysql/conf.d/confX.cnf

MySQL सरकारी दस्तावेज़ बताते हैं कि आपने नाम के लिए है [mysqld]के रूप में [mysqld@server2]( https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html#systemd-multiple-mysql-instances ) लेकिन इस MariaDB साथ काम नहीं करता । तो बस रहने दो [mysqld]

नया डेमॉन शुरू करने से पहले, डेटादिर और आवश्यक फाइलें बनाना न भूलें:

mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2

साथ ही सिस्टमडैम डेमन विन्यास पुनः लोड करें:

systemctl daemon-reload

और अगर आप बूट पर इस डेमॉन को शुरू करना चाहते हैं:

systemctl enable mariadb@server2

इसे शुरू करने के लिए:

service mariadb@server2 start

मुख्य (गैर-इंस्टेंस्ड) mysql पढ़ता है /etc/my.cnf, इसीलिए।
माइकल हैम्पटन

मैंने अपना उत्तर संपादित किया: वास्तव में, ऐसा प्रतीत होता है कि पहले उदाहरण के लिए Server2.cnf फ़ाइल को पढ़ें !includedir /etc/mysql/conf.d/*। बेहतर सुरक्षा के लिए, मैंने प्रत्येक conf.dफ़ाइल को मैन्युअल रूप से शामिल किया है
सबसे खराब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.