Score:0

การย้ายเซิร์ฟเวอร์: mysql

ธง mx

วิธีที่ดีที่สุดและเร็วที่สุดในการย้าย mysql เมื่อเปลี่ยนเซิร์ฟเวอร์คืออะไร?

ขณะนี้ฉันทำผ่าน phpmyadmin ฉันสำรองฐานข้อมูลในเซิร์ฟเวอร์เก่า เปิดผู้ใช้ใหม่ในเซิร์ฟเวอร์ใหม่ สร้างฐานข้อมูลใหม่ และอัปโหลด/กู้คืนข้อมูลสำรอง

(ฉันใช้สิ่งนี้เพื่อเพิ่มความเร็วในการกู้คืนฐานข้อมูลด้วยเทอร์มินัล mysql)

mysql -u ชื่อผู้ใช้ -p ฐานข้อมูล < /var/www/html/mysql_dump/nomedb.sql

การดำเนินการที่ยาวนานและน่าเบื่อ...สามารถทำได้ด้วยวิธีที่ดีกว่าและเร็วกว่าในการคัดลอกฐานข้อมูลและผู้ใช้ mysql ไปยังเซิร์ฟเวอร์ใหม่หรือไม่

ฉันมีการเข้าถึง ssh และเซิร์ฟเวอร์ root, เซิร์ฟเวอร์ ubuntu 20.04, apache, php8.1

----------อัปเดต---------

เพื่อความสมบูรณ์ ฉันใช้สคริปต์นี้เป็นประจำเพื่อสำรองข้อมูล mysql และดาวน์โหลดทุกอย่างด้วย rsync ไปยังดิสก์ในเครื่อง ดังนั้นการสำรองฐานข้อมูลจึงไม่ใช่ปัญหา ส่วนที่น่าเบื่อกำลังฟื้นฟูทีละส่วน... https://www.alebalweb-blog.com/66-backup-automatico-mysql-su-server-ubuntu.html (ขออภัย คำอธิบายเป็นภาษาอิตาลี แต่เป็นโค้ดเกือบทั้งหมด...)

in flag
ผู้ใช้+รหัสผ่าน+สิทธิ์อาจยุ่งยากหากเซิร์ฟเวอร์ใหม่ไม่ใช่เวอร์ชันเดียวกับแหล่งที่มา คุณรู้ทุกรหัสผ่านสำหรับบัญชีผู้ใช้หรือไม่? หรือสิ่งเหล่านี้ถูกใช้โดยผู้คน (ซึ่งตรงข้ามกับระบบ) ที่เปลี่ยนรหัสผ่าน?
alebal avatar
mx flag
ฉันคิดว่าเซิร์ฟเวอร์จะเหมือนเดิม... ไม่มากก็น้อย... ฉันติดตั้งแล้ว... ฉันรู้รหัสผ่านทั้งหมด ไม่ใช่ปัญหา
raj avatar
cn flag
raj
วิธีที่น่าเชื่อถือที่สุดในการคัดลอกฐานข้อมูล MySQL คือผ่าน mysqldump ซึ่งเป็นวิธีที่คุณทำอยู่แล้ว ไม่แนะนำให้คัดลอกไฟล์ฐานข้อมูลเพียงอย่างเดียว แทนที่จะสร้างการถ่ายโอนข้อมูลฐานข้อมูลใน phpMyAdmin คุณสามารถใช้ mysqldump โดยตรง และคัดลอกไฟล์ผลลัพธ์ไปยังเซิร์ฟเวอร์ใหม่
Score:1
ธง in

“ดีที่สุด” ค่อนข้างเป็นอัตวิสัย ซึ่งนำไปสู่ความคิดเห็น แต่นี่เป็นวิธีที่ฉันปฏิบัติตามเมื่อตั้งค่าฐานข้อมูล MySQL ใหม่โดยทั่วไป:

บนเซิร์ฟเวอร์ใหม่ â¦

  1. สร้างฐานข้อมูลทั้งหมด
    สร้างฐานข้อมูล `{dbname}` DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    สร้างฐานข้อมูล â¦
    สร้างฐานข้อมูล ⦠
    
  2. สร้างบัญชีผู้ใช้ทั้งหมดและกำหนดสิทธิ์:
    สร้างผู้ใช้ '{user}'@'localhost' ระบุด้วย mysql_native_password โดย 'superSecretPassword!123';
    ให้ทั้งหมดบน `{dbname}`.* ถึง '{user}'@'localhost';
    สร้างผู้ใช้ â¦
    ให้ทั้งหมด â¦
    

บนเซิร์ฟเวอร์ต้นทาง â¦

  1. ส่งออกฐานข้อมูลทีละรายการ:

    sudo mysqldump {dbname} -n --routines --triggers > dbname.sql
    

    บันทึก: คุณไม่จำเป็นต้องใช้บรรทัดคำสั่งหากต้องการใช้ phpMyAdmin หรือเครื่องมืออื่น

    -น ⢠ระงับคำสั่ง CREATE DATABASE ... IF EXISTS

    --กิจวัตร ⢠Dump รูทีนที่เก็บไว้ (ฟังก์ชันและขั้นตอน)

    --ทริกเกอร์ ⢠ทริกเกอร์การถ่ายโอนข้อมูลสำหรับแต่ละตารางที่ถูกทิ้ง

  2. จัดแพ็คเกจและบีบอัดดัมพ์ของฐานข้อมูลเพื่อการเคลื่อนย้ายที่ง่ายขึ้น:

    sudo tar -czvf dbs.tar.gz *.sql
    
  3. คัดลอก/ส่งไฟล์บีบอัดไปยังเซิร์ฟเวอร์ใหม่

บนเซิร์ฟเวอร์ใหม่ â¦

  1. แยกฐานข้อมูลออกจากไฟล์บีบอัด:
    น้ำมันดิน -xvf dbs.tar.sql
    
  2. นำเข้าฐานข้อมูล:
    sudo mysql dbname < dbname.sql
    sudo mysql dbname â¦
    
  3. (ไม่บังคับ) รีสตาร์ท MySQL เพื่อล้างบัฟเฟอร์:
    sudo บริการ mysql รีสตาร์ท
    
  4. เพลิดเพลินกับการพักผ่อนระยะสั้น

มีวิธีอื่นในการดำเนินการนี้ แต่ฉันทำตามขั้นตอนนี้เนื่องจากช่วยให้ฉันหลีกเลี่ยงปัญหาการเขียนทับเวอร์ชันต่างๆ ของ มายเอสคิวแอล ตารางระบบ (หากเซิร์ฟเวอร์ใหม่ไม่ใช่เวอร์ชันเดียวกัน) ในขณะเดียวกันก็ต้องแน่ใจว่าข้อมูล บัญชี สิทธิ์ และฟังก์ชัน/ขั้นตอน/ทริกเกอร์ทั้งหมดอยู่ในตำแหน่งเดิม

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา