ฉันสามารถคัดลอกโฟลเดอร์ / var / lib / mysql ทั้งหมดไปยังเซิร์ฟเวอร์อื่นได้หรือไม่ (mysql vs mariadb รุ่นอื่น)


9

ฉันเคยมีระบบ Linux (LMDE) กับ MySQL ระบบใช้ innodb_file_per_table สำหรับฐานข้อมูลส่วนใหญ่ (ไม่แน่ใจเกี่ยวกับรุ่นสิ่งที่เป็น "ล่าสุด" ใน LMDE)

ตอนนี้ฉันอยู่ในระบบใหม่ (Manjaro / Arch) กับ MariaDB

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

ระบบเก่ามีฐานข้อมูลขนาดใหญ่มากมายซึ่งฉันไม่ต้องการคัดลอกด้วย mysqldump ฉันอยากจะคัดลอกโฟลเดอร์ / var / lib / mysql จากระบบเก่า

เป็นไปได้ไหม


ตลก. ตอนนี้ฉันต้องการทิศทางตรงกันข้าม, Arch to Mint (จาก Ubuntu) และอีกครั้งที่ฉันไร้เดียงสา ฉันได้รับ "เริ่มต้น: งานล้มเหลวในการเริ่มต้น" หลังจากแทนที่ / var / lib / mysql
donquixote

คำตอบ:


20

ใช่มันเป็นไปได้ (ฉันคิดออกในขณะที่เขียนคำถาม)

  1. ติดตั้ง MariaDB ในระบบ Arch ใหม่ยืนยันว่าใช้งานได้
    ทำการเปลี่ยนแปลงของคุณกับ /etc/mysql/my.cnf เช่น innodb_file_per_table
    (มากกว่านี้อยู่นอกขอบเขตสำหรับคำถามนี้)
  2. sudo systemctl stop mysqld.
    (คุณต้องการหยุดเซิร์ฟเวอร์ทั้งสอง แต่ในกรณีของฉันเซิร์ฟเวอร์อื่นปิดอยู่)
  3. เปลี่ยนชื่อโฟลเดอร์ / var / lib / mysql เช่นเป็น / var / lib / _mysql
  4. คัดลอกโฟลเดอร์เก่า / var / lib / mysql จากระบบ Debian (LMDE) เก่า
  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_upgrade ใช้
  8. mysql_upgrade -u root -p
    หมายเหตุ:
    • มันเป็นรหัสผ่านรูทของ mysql จากระบบเก่า!
    • ฉันต้องลบหนึ่งโฟลเดอร์ที่เหลือจาก / var / lib / mysql เนื่องจากชื่อฐานข้อมูลไม่ถูกต้อง
    • ไฟล์ / var / lib / mysql / mysql_upgrade_info ต้องสามารถเขียนได้
    • กระบวนการอาจใช้เวลาสักครู่
  9. sudo systemctl restart mysqld.

ถ้ำ: เห็นได้ชัดว่าคุณไม่สามารถปรับลดรุ่นเป็นรุ่น MySQL ที่ต่ำกว่า ฉันพยายามย้ายฐานข้อมูลของฉันไปยัง MySQL 5.5 (หรือมากกว่านั้นคือ MariaDB ที่เกี่ยวข้อง) และเซิร์ฟเวอร์จะไม่เริ่ม ฉันต้องติดตั้ง MySQL 5.6 แทน (MariaDB ที่สอดคล้องกับ MySQL 5.6 ไม่พร้อมใช้งานบน distro Linux ของฉัน)


1
มันน่าประทับใจ +1 แต่: เพียงหยุด mysql ทั้งสองข้าง rsync-ing / var / lib / mysql แล้วเริ่มต้นก็ยังไม่พอ
peterh - Reinstate Monica

4
คุณควรทราบว่าการกำหนดค่าเซิร์ฟเวอร์จะไม่ถูกคัดลอกด้วยกระบวนการนี้ แม้ว่าคุณอาจต้องการยอมรับค่าเริ่มต้นใหม่บางส่วนคุณอาจต้องแน่ใจว่าคุณคัดลอกตัวแปรที่กำหนดเอง/etc/my.cnfเช่นกัน
ริชาร์ด

@ Richard: จริง ในความเป็นจริงฉันต้องทำสิ่งนี้ฉันจำไม่ได้ว่าสิ่งที่ฉันเปลี่ยนไป การเปลี่ยนแปลงอย่างหนึ่งคือฉันเปิดใช้งาน innodb_file_per_table
donquixote

@ PeterHorvath ไม่จำเป็นต้อง mysql_upgrade
donquixote

แค่พูดว่าฉันเพิ่งทำแบบนั้นจาก Manjaro กลับไปที่โรงกษาปณ์ มันใช้งานได้ แต่มันสำคัญมากที่จะใช้ MySQL 5.6 ไม่ใช่ MariaDB 5.5
donquixote
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.