क्या मैं संपूर्ण / var / lib / mysql फ़ोल्डर को किसी भिन्न सर्वर पर कॉपी कर सकता हूं? (mysql vs mariadb, विभिन्न संस्करण)


9

मेरे पास MySQL के साथ एक Linux सिस्टम (LMDE) था। अधिकांश डेटाबेस के लिए सिस्टम ने innodb_file_per_table का उपयोग किया। (संस्करण के बारे में निश्चित नहीं है, जो कि एलएमडीई में "नवीनतम" है)

मैं अब मारियाबीडी के साथ एक नई प्रणाली (मंज़रो / आर्क) पर हूं।

$ mysql --version
mysql  Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1

पुराने सिस्टम में बहुत सारे बड़े डेटाबेस थे, कि मैं वास्तव में mysqldump के साथ कॉपी नहीं करना पसंद करूंगा। मैं बहुत पुराने सिस्टम से / var / lib / mysql फ़ोल्डर की प्रतिलिपि बनाना पसंद करूंगा।

क्या यह संभव है?


मजेदार। अब मुझे सटीक विपरीत दिशा की आवश्यकता है, आर्क टू मिंट (उबंटू पर आधारित), और फिर से मैं क्लूलेस हूं। मैं / var / lib / mysql की जगह लेने के बाद "start: Job शुरू करने में विफल रहा"।
दान

जवाबों:


20

हाँ यह संभव है। (मैंने सवाल लिखते हुए यह पता लगाया)

  1. नए आर्क सिस्टम में MariaDB स्थापित करें, सत्यापित करें कि यह काम करता है।
    /Etc/mysql/my.cnf में अपने परिवर्तन करें। जैसे innodb_file_per_table।
    (इसमें से अधिक इस सवाल के दायरे से बाहर है)
  2. sudo systemctl stop mysqld
    (आप दोनों सर्वरों को बंद करना चाहते हैं, लेकिन मेरे मामले में अन्य पहले से ही बंद था)
  3. / Var / lib / mysql फ़ोल्डर का नाम बदलें, जैसे / var / lib / _mysql।
  4. पुराने डेबियन (LMDE) सिस्टम से पुराने / var / lib / mysql फ़ोल्डर की प्रतिलिपि बनाएँ।
  5. Mysql में फ़ाइल स्वामित्व को पुनर्स्थापित करें: mysql / var / lib / mysql में सब कुछ के लिए:
    sudo chown -R mysql:mysql /var/lib/mysql
  6. sudo systemctl start mysqld
    ->Job for mysqld.service failed. See "systemctl status mysqld.service" and "journalctl -xe" for details.
  7. sudo systemctl status mysqld
    -> इससे पता चलता है कि सेवा चल रही है, लेकिन कुछ चीजें गलत हो रही हैं। यह वही है जो mysql_upgrad के लिए है।
  8. mysql_upgrade -u root -p
    टिप्पणियाँ:
    • यह पुराने सिस्टम से mysql रूट पासवर्ड है!
    • मुझे अमान्य डेटाबेस नाम के कारण एक बचे हुए फ़ोल्डर को / var / lib / mysql से निकालना पड़ा।
    • फ़ाइल / var / lib / mysql / mysql_upgrad_info को राइट करने की आवश्यकता है।
    • प्रक्रिया में थोड़ा समय लग सकता है।
  9. sudo systemctl restart mysqld

गुफा: जाहिरा तौर पर आप एक कम MySQL संस्करण में डाउनग्रेड नहीं कर सकते। मैंने अपने डेटाबेस को MySQL 5.5 (या इसके बजाय, मारियाडीबी) पर माइग्रेट करने की कोशिश की, और सर्वर शुरू नहीं होगा। मुझे इसके बजाय MySQL 5.6 स्थापित करना था। (MySQL 5.6 के लिए मारियाडीबी मेरे लिनक्स डिस्ट्रो पर उपलब्ध नहीं है)।


1
यह प्रभावशाली लगता है, +1। लेकिन: बस mysql को दोनों तरफ से रोकना, rsync-ing / var / lib / mysql, और फिर शुरू करना पर्याप्त नहीं है?
पेटेर - मोनिका

4
आपको यह भी पता होना चाहिए कि इस प्रक्रिया के साथ सर्वर कॉन्फिग कॉपी नहीं किया गया होगा। जब आप कुछ नए डिफॉल्ट्स को स्वीकार करना चाहते हैं, तो आप शायद यह भी सुनिश्चित करना चाहेंगे कि आप किसी भी तरह के कस्टमाइज़ किए गए वेरिएबल को भी कॉपी कर सकें /etc/my.cnf
रिचर्ड

@ रीचर्ड: सच। वास्तव में मुझे इसमें से कुछ करना था, मुझे अभी याद नहीं है कि मैंने क्या बदला है। एक बदलाव यह था कि मैंने innodb_file_per_table को सक्षम किया।
दान

@PeterHorvath नहीं, mysql_upgrad आवश्यक था।
दान

बस इतना कहकर, मैंने बस मन्जारो से मिंट की तरफ वापसी की। इसने काम किया, लेकिन फिर से MySQL 5.6 का उपयोग करना महत्वपूर्ण था, न कि मारबाडी 5.5।
दान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.