การสร้างการสำรองข้อมูล MySQL โดยใช้ยูทิลิตี้ XtraBackup

เพอร์โคนา เอ็กซ์ตร้าแบ็คอัพ เป็นโปรแกรมอรรถประโยชน์สำหรับการสำรองฐานข้อมูลแบบ hot MySQL.

เมื่อสร้างการสำรองข้อมูล ตารางจะไม่ถูกล็อค และระบบของคุณยังคงทำงานต่อไปโดยไม่มีข้อจำกัดใดๆ

เอ็กซ์ตร้าแบ็คอัพ 2.4 สามารถสร้างสำเนาสำรองของตารางได้ InnoDBเอ็กซ์ตร้าดีบี и มายไอซัม บนเซิร์ฟเวอร์ MySQL 5.11, 5.5, 5.6 และ 5.7และบนเซิร์ฟเวอร์ด้วย เพอร์โคนา สำหรับ MySQL с เอ็กซ์ตร้าดีบี.

ในการทำงานกับ มายเอสคิวแอล 8.x ควรใช้รุ่น XtraBackup 8.x. บทความนี้จะพูดถึงเท่านั้น เอ็กซ์ตร้าแบ็คอัพ 2.4.

ประโยชน์หลัก XtraBackup คือยูทิลิตี้นี้เหมาะสำหรับทั้งการสร้างการสำรองข้อมูลของเซิร์ฟเวอร์ที่มีการโหลดสูงและสำหรับระบบที่มีจำนวนธุรกรรมต่ำ

หากขนาดรวมของฐานข้อมูล MySQL ของคุณมีความสำคัญ (หลายสิบกิกะไบต์) แสดงว่าเป็นยูทิลิตี้มาตรฐาน mysqldump จะไม่อนุญาตให้คุณสร้างสำเนาสำรองอย่างรวดเร็วและการคืนค่าดัมพ์จะใช้เวลานาน

การติดตั้ง

การติดตั้ง XtraBackup จากพื้นที่เก็บข้อมูล ฉลาด เพอร์โคนา

รันคำสั่งต่อไปนี้ตามลำดับ:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. หลังการติดตั้ง ให้รันคำสั่ง xtrabackup -v. เนื่องจากสิ่งสำคัญคือต้องแน่ใจว่ายูทิลิตี้ทำงานอย่างถูกต้องบนเซิร์ฟเวอร์ เป็นผลให้บางสิ่งเช่นนี้ปรากฏบนหน้าจอ:

xtrabackup: อาร์กิวเมนต์เซิร์ฟเวอร์ที่รู้จัก: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup เวอร์ชัน 2.4.20 ขึ้นอยู่กับเซิร์ฟเวอร์ MySQL 5.7.26 Linux (x8664) (รหัสการแก้ไข: c8b4056)

การสร้างการสำรองข้อมูล MySQL โดยใช้ยูทิลิตี้ XtraBackup

สิทธิ์การเข้าถึง การอนุญาต และสิทธิพิเศษ 

XtraBackup ควรจะสามารถ:

  • เชื่อมต่อกับเซิร์ฟเวอร์ MySQL ของคุณ

  • มีสิทธิ์เข้าถึงไดเร็กทอรี ดาต้าไดร์

  • เมื่อสร้างสำเนาสำรองให้มีสิทธิ์เขียนไปยังพารามิเตอร์ที่ระบุ เป้าหมาย-dir แคตตาล็อก

ดาต้าไดร์คืออะไร?

ดาต้าไดร์ เป็นไดเร็กทอรีที่เซิร์ฟเวอร์ฐานข้อมูล MySQL เก็บข้อมูล มีฐานข้อมูลทั้งหมด ตารางทั้งหมดอยู่ที่นั่น ในลีนุกซ์ส่วนใหญ่ ไดเร็กทอรีเริ่มต้นคือ /var/lib/mysql.

ไดเร็กทอรี target-dir คืออะไร?

เป้าหมาย-dir - นี่คือไดเร็กทอรีที่จะบันทึกข้อมูลสำรอง

ผู้ใช้ฐานข้อมูลต้องการสิทธิ์การเข้าถึงตารางและฐานข้อมูลต่อไปนี้เพื่อสำรองข้อมูล:

  • โหลดซ้ำและล็อคตาราง

  • ลูกค้าจำลอง

  • สร้างพื้นที่ตาราง

  • กระบวนการ

  • SUPER

  • สร้าง

  • INSERT

  • SELECT

องค์ประกอบ 

องค์ประกอบ XtraBackup เสร็จสิ้นโดยใช้ตัวเลือกที่ทำงานเหมือนกับตัวเลือก MySQL มาตรฐาน

นี้หมายความว่าอย่างไร

พารามิเตอร์การกำหนดค่าสามารถระบุได้ทั้งบนบรรทัดคำสั่งหรือในไฟล์การกำหนดค่า DBMS เช่นใน /etc/my.cnf.

ยูทิลิตี้ XtraBackup อ่านพาร์ติชันหลังจากเปิดใช้งาน [mysqld] и [เอ็กซ์ตร้าแบ็คอัพ] จากไฟล์กำหนดค่า MySQL การทำเช่นนี้เพื่อให้ยูทิลิตี้สามารถใช้การตั้งค่าของ DBMS ของคุณได้โดยไม่ต้องระบุพารามิเตอร์ด้วยตนเองระหว่างการสำรองข้อมูลแต่ละครั้ง

ตัวอย่างเช่น ค่า ดาต้าไดร์ และพารามิเตอร์บางอย่าง InnoDB เราได้รับ XtraBackup จากการกำหนดค่า DBMS ของคุณ

หาก XtraBackup ทำงานคุณต้องการแทนที่พารามิเตอร์ที่อยู่ในส่วนนี้ [mysqld]จากนั้นระบุลงในไฟล์กำหนดค่าในส่วนนี้ [เอ็กซ์ตร้าแบ็คอัพ]. เนื่องจากจะอ่านในภายหลัง ลำดับความสำคัญจึงสูงขึ้น

คุณไม่จำเป็นต้องเพิ่มพารามิเตอร์ใดๆ my.cnf. สามารถระบุพารามิเตอร์ที่จำเป็นทั้งหมดบนบรรทัดคำสั่งได้ โดยปกติแล้วจะเป็นสิ่งเดียวที่สามารถวางในส่วนนี้ได้สะดวก [เอ็กซ์ตร้าแบ็คอัพ] ของคุณ my.cnf เป็นพารามิเตอร์ target_dirซึ่งโดยค่าเริ่มต้นจะระบุไดเร็กทอรีที่จะสำรองข้อมูล แต่นี่เป็นทางเลือก

ตัวอย่างการระบุเส้นทางไปยังไดเร็กทอรีด้วยสำเนาสำรอง my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

สคริปต์สำรอง

คุณสามารถใช้สคริปต์ต่อไปนี้เพื่อสร้างการสำรองข้อมูล:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

จะเกิดอะไรขึ้นระหว่างการเรียกใช้สคริปต์?

ก่อนอื่น เราล้าง (ลบ) ไดเร็กทอรีที่เราจะบันทึกสำเนาสำรอง:

rm -rf /mysql/backup.

จากนั้นจึงใช้ยูทิลิตี้ XtraBackup สร้างสำเนาสำรองและบันทึกไว้ /mysql/สำรอง/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

ก่อนหน้านี้เราสร้างผู้ใช้ใน MySQL xtrabackup ด้วยสิทธิพิเศษที่จำเป็น การใช้พารามิเตอร์ target-dir เราระบุไดเร็กทอรีที่ควรบันทึกข้อมูลสำรอง

จุดสำคัญ!

สังเกตบรรทัดสคริปต์:

xtrabackup --prepare --target-dir=/mysql/backup

ข้อมูลแคตตาล็อก /mysql/สำรอง ไม่สม่ำเสมอจนกว่าจะสุก 

ความจริงก็คือการเปลี่ยนแปลงอาจเกิดขึ้นได้ขณะคัดลอกไฟล์ การดำเนินการ xtrabackup --prepare --target-dir=/mysql/backup ทำให้การสำรองข้อมูลมีความสอดคล้องกันอย่างสมบูรณ์แบบเมื่อเวลาผ่านไป

คุณสามารถดำเนินการจัดเตรียมข้อมูลบนเครื่องใดก็ได้ ไม่จำเป็นต้องทำเช่นนี้บนเซิร์ฟเวอร์ที่มี DBMS ต้นทางอยู่ คุณสามารถคัดลอกข้อมูลสำรองไปยังเซิร์ฟเวอร์เป้าหมายและจัดเตรียมไว้ที่นั่นได้

สิ่งสุดท้ายที่เราทำคือสร้างไฟล์เก็บถาวรที่เราสำรองข้อมูลไว้:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

การกู้คืนข้อมูลสำรอง 

ก่อนที่คุณจะสามารถกู้คืนข้อมูลสำรองไปยังเซิร์ฟเวอร์เป้าหมายได้ ข้อมูลจะต้องผ่านขั้นตอนการเตรียมการ ดูด้านบนสำหรับวิธีการทำเช่นนี้

กระบวนการกู้คืนข้อมูลนั้นง่ายมาก คุณต้องแตกข้อมูลสำรองออกจากไฟล์เก็บถาวรและแทนที่ข้อมูลใน ดาต้าไดร์.

จะแทนที่ข้อมูลใน datadir ได้อย่างไร?

ลองพิจารณาสองทางเลือก

ตัวเลือก 1

ใช้ยูทิลิตี้ XtraBackup. คุณต้องระบุตัวเลือก --copy-back

คำสั่งด้านล่างจะถ่ายโอนข้อมูลสำรองไปที่ ดาต้าไดร์ เซิร์ฟเวอร์เป้าหมาย:

xtrabackup --copy-back --target-dir=/mysql/backup

ตัวเลือก 2

คุณสามารถทำได้แตกต่างออกไป ทำโดยไม่ต้องใช้ยูทิลิตี้ XtraBackup.

สิ่งที่คุณต้องทำคือคัดลอกข้อมูลสำรองไปที่ ดาต้าไดร์. คุณสามารถทำได้ด้วย cp หรือ rsync.

สิ่งสำคัญคือต้องเข้าใจว่าขั้นตอนในการกู้คืนข้อมูลสำรองนั้นเหลือเพียงการแทนที่เนื้อหาของไดเร็กทอรีเท่านั้น ดาต้าไดร์.

ก่อนที่คุณจะเริ่มกู้คืนข้อมูลสำรองบนเซิร์ฟเวอร์เป้าหมาย คุณต้อง:

  • หยุดเซิร์ฟเวอร์ MySQL

  • โฟลเดอร์เปล่า ดาต้าไดร์ หรือย้ายเนื้อหาไปยังตำแหน่งอื่น แคตตาล็อก ดาต้าไดร์ จะต้องว่างเปล่า

หลังจากเสร็จสิ้นการถ่ายโอนข้อมูลไปที่ ดาต้าไดร์ เซิร์ฟเวอร์ MySQL สามารถเริ่มต้นได้

วัสดุที่ใช้

เอกสารอย่างเป็นทางการ เพอร์โคนา XtraBackup.

ที่มา: will.com

เพิ่มความคิดเห็น