ฉันสามารถแชร์ไฟล์ฐานข้อมูล MySql กับ Windows ในการบู๊ตคู่ได้หรือไม่


12

ฉันต้องการใช้ทั้งใน Ubuntu และ Windows (บูตคู่) ไฟล์ฐานข้อมูล MySql ของฉันที่อยู่ในพาร์ติชัน NTFS มันจะทำงานอย่างไร gotchas ใด ๆ


4
เพื่อบันทึกชุมชน: ผู้ใช้ถามเกี่ยวกับความเข้ากันได้ของรูปแบบข้อมูล MySQL ระหว่าง Ubuntu Linux และ Microsoft Windows ผู้ใช้สงสัยว่าข้อมูลที่จัดเก็บในรูปแบบ Ubuntu Linux สำหรับ MySQL นั้นเข้ากันได้กับวิธีที่ MySQL รุ่น Windows จัดเก็บข้อมูลหรือไม่เพื่อให้สามารถแก้ไขและกู้คืนข้อมูลฐานข้อมูลทั้งใน Windows และ MySQL
Thomas Ward

A:ฉันมีให้แค่คำตอบที่กว้างขวางคำถามนี้ที่นี่ในUnix และ Linux StackExchange
มุมมองรูปไข่

คำตอบ:


9

ใช่มันใช้งานได้ แต่มีนิสัยแปลก ๆ MySQL ใช้รูปแบบไฟล์เดียวกันข้ามแพลตฟอร์มดังนั้นทุกอย่างที่คุณต้องการคือการแชร์ไดเรกทอรีข้อมูล ปัญหาหนึ่งคือไดเรกทอรีข้อมูลจำเป็นต้องมี mysql ในฐานะเจ้าของและกลุ่มใน Ubuntu และ Windows ไม่คำนึงถึงขนาดตัวพิมพ์และ Linux เป็นแบบตรงตามตัวพิมพ์ใหญ่ - เล็กดังนั้นควรรักษาชื่อให้เหมือนกัน: ทั้งชื่อตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ แต่ไม่ควรผสมกัน

ตั้งแต่ต้นจนจบ หากคุณมีสิ่งที่ตั้งไว้แล้วอาจต้องมีการปรับแต่งเพื่อให้เหมาะกับการตั้งค่าของคุณ

  • ติดตั้งและตั้งค่า MySQL บนทั้งสองระบบ
  • หยุดเซิร์ฟเวอร์ mysql หากกำลังทำงาน
  • สร้างพาร์ติชัน NTFS ใหม่ ทำเครื่องหมายชื่ออุปกรณ์ (ลองโทรsdXNหาตอนนี้)
  • ย้ายไดเรกทอรีข้อมูล mysql จาก Ubuntu ไปยังพาร์ติชันใหม่

    mkdir /{mountpoint}/mysql_data
    sudo mv /var/lib/mysql /{mountpoint/mysql_data
    

    ใช้mvบันทึกสิทธิ์

  • สร้างไดเรกทอรี mysql ใหม่

    sudo mkdir /var/lib/mysql
    
  • ติดพาร์ติชัน NTFS /var/lib/mysqlที่ เปลี่ยนชื่อไฟล์เป็นสิ่งที่ได้รับเมื่อคุณสร้างพาร์ติชัน NTFS

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • เพื่อ automount ในการบูตหาพาร์ทิชัน UUID /etc/fstabและสถานที่เกิดเหตุและแก้ไข

    ls -l /dev/disk/by-uuid
    locale -a
    sudo gedit /etc/fstab   
    UUID={number_found_with_the_ls-l} /var/lib/mysql ntfs-3g uid=mysql,gid=mysql,umask=0077,locale={your_locale}.utf8  0  0
    
  • เปลี่ยนเส้นทาง 'datadir' /etc/mysql/my.cnfเป็นชี้ไปที่/var/lib/mysql/mysql_data

  • เริ่มเซิร์ฟเวอร์ mysql และทดสอบ

  • แก้ไขไฟล์my.iniกำหนดค่าWindows ( ) และตั้งค่า 'datadir' เป็นX:/mysql_data(แทนที่X:ตำแหน่งที่คุณติดตั้งใต้ Windows)

รวบรวมจากหัวข้อ 1442148 บน UF.org

ฉันได้รับรุ่น Ubuntu แล้ว ยังไม่ทดลองบางส่วนเนื่องจากฉันไม่มี Windows


คำตอบที่ดีมาก! เพียงแค่สองความเห็น: มีชื่อกรณีผสมจำนวนมากแล้วและใช้lower_case_table_names=1งานได้ดี หากไม่มีตัวเลือกการเมานท์ของคุณฉันจะพบข้อผิดพลาดนี้ (ซึ่งเป็นข้อบกพร่อง IMHO แน่นอน)
maaartinus

"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" ให้ข้อผิดพลาด ดูunix.stackexchange.com/questions/310433/…
มุมมองรูปไข่

1

หากคุณเพิ่มพาร์ติชัน linux ให้กับสภาพแวดล้อมแบบ Windows เท่านั้นก่อนหน้านี้คุณสามารถใช้ฐานข้อมูลแทนการปรับแต่งเล็กน้อย รุ่นยาวที่นี่รุ่นสั้น:

คุณจะต้องmount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysqlทำงานเมื่อเริ่มต้น (สมมติว่าคุณติดตั้ง windows drive ของคุณเพื่อ/media/windowsใช้ fstab)

ในการตรวจสอบขนาดบันทึกของ Innodb คุณจะต้องย้ายบันทึก Innodb สำหรับพาร์ติชัน Ubuntu ในmy.cnfเพิ่มinnodb_log_group_home_dir = /var/log/mysqlเพื่อให้บันทึกไปติดกับบันทึกข้อผิดพลาด mysql

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