Bagaimana memulihkan dump mysql lebih cepat?

Pada artikel ini, saya akan menjelaskan berbagai cara untuk membuat cadangan di server database MySQL. Seperti yang kita ketahui, data merupakan aset berharga bagi organisasi. Sebagai administrator basis data, tugas utama dan krusial kami adalah menjaga agar data tetap tersedia dan aman. Jika sistem atau pusat data gagal, database rusak, dan kehilangan data, kami harus dapat memulihkannya dalam SLA yang ditentukan

Platform basis data yang berbeda menyediakan berbagai metode untuk membuat cadangan dan memulihkan basis data. Banyak vendor menyediakan solusi perangkat lunak dan perangkat keras canggih yang dapat membantu mencadangkan basis data, dan dapat memulihkan basis data dalam RTO dan RPO yang ditentukan

Di sini, kami tidak akan membahas solusi pencadangan vendor pihak ketiga mana pun. Saya akan menjelaskan metode asli yang digunakan untuk membuat cadangan database. Kami dapat membuat cadangan database MySQL menggunakan salah satu metode berikut

  1. Hasilkan cadangan menggunakan utilitas mysqldump
  2. Hasilkan cadangan Inkremental menggunakan Log Biner
  3. Hasilkan cadangan menggunakan Replikasi Budak

Pada artikel ini, saya akan menjelaskan bagaimana kita dapat menggunakan mysqldump untuk membuat cadangan database MySQL

Hasilkan cadangan menggunakan utilitas mysqldump

Mysqldump adalah utilitas baris perintah yang digunakan untuk menghasilkan cadangan logis dari database MySQL. Ini menghasilkan Pernyataan SQL yang dapat digunakan untuk membuat ulang objek dan data database. Perintah juga dapat digunakan untuk menghasilkan keluaran dalam format XML, teks terbatas, atau CSV

Perintah ini mudah digunakan, tetapi satu-satunya masalah yang terjadi saat memulihkan database. Seperti yang saya sebutkan, ketika kami membuat cadangan database MySQL, itu membuat file cadangan yang berisi perintah SQL yang diperlukan untuk membangun kembali atau memulihkan database. Sekarang, saat kita mengembalikan database, perintah mengeksekusi semua Pernyataan SQL untuk membuat tabel dan memasukkan data. Jika Anda memiliki database yang besar, maka proses pemulihan membutuhkan waktu lama untuk diselesaikan

Catatan. Secara default, perintah mysqldump tidak membuang database information_schema, performance_schema, dan database ndbinfo MySQL Cluster

Jika Anda ingin menyertakan tabel information_schema, Anda harus secara eksplisit menentukan nama database dalam perintah mysqldump, sertakan juga opsi —skip-lock-tables

Ada banyak pilihan dan fitur yang bisa digunakan dengan mysqldump. Anda dapat melihat daftar opsi lengkap di sini. Saya akan pergi ke beberapa fitur dasar. Berikut ini adalah sintaks utilitas mysqldump

1

mysqldump -u [pengguna name] p [password] [options] [database_name] [tablename] > [dumpfilename.sql]

Parameternya adalah sebagai berikut

  1. -u [nama_pengguna]. Ini adalah nama pengguna untuk terhubung ke server MySQL. Untuk menghasilkan cadangan menggunakan mysqldump, 'Pilih' untuk membuang tabel, 'Tampilkan Tampilan' untuk tampilan, 'Pemicu' untuk pemicu. Jika Anda tidak menggunakan —opsi transaksi tunggal, maka hak istimewa 'Kunci Tabel' harus diberikan kepada pengguna
  2. -p [kata sandi]. Kata sandi yang valid dari pengguna MySQL
  3. [pilihan]. Opsi konfigurasi untuk menyesuaikan cadangan
  4. [nama basis data]. Nama database yang ingin Anda ambil cadangannya
  5. [nama tabel]. Ini adalah parameter opsional. Jika Anda ingin mengambil tabel khusus cadangan, maka Anda dapat menentukan nama dalam perintah
  6. “<” OR ”>”: This character indicates whether we are generating the backup of the database or restoring the database. You can use “>” to generate the backup and “<” to restore the backup
  7. [dumpfilename. sql]. Jalur dan nama file cadangan. Seperti yang saya sebutkan, kami dapat membuat cadangan dalam XML, teks terbatas, atau file SQL sehingga kami dapat memberikan ekstensi file yang sesuai

Hasilkan cadangan dari satu basis data

Misalnya, Anda ingin membuat cadangan dari database tunggal, jalankan perintah berikut. Perintah tersebut akan menghasilkan cadangan database "sakila" dengan struktur dan data di sakila_20200424. .sql

1

mysqldump -u root -p sakila > C:\MySQLBackup\sakila_20200424. sql

Ketika Anda menjalankan perintah ini, itu meminta kata sandi. Berikan kata sandi yang sesuai. Lihat gambar berikut

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Setelah cadangan berhasil dibuat, mari kita buka file cadangan untuk melihat konten file cadangan. Buka lokasi cadangan dan klik dua kali pada folder “sakila_20200424. sql”.

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Seperti yang Anda lihat pada gambar di atas, file cadangan berisi berbagai pernyataan T-SQL yang dapat digunakan untuk membuat ulang objek

Menghasilkan cadangan dari beberapa database atau semua database

Misalnya, Anda ingin membuat cadangan lebih dari satu database. Anda harus menambahkan opsi —databases di perintah mysqldump. Perintah berikut akan menghasilkan cadangan database "sakila" dan "karyawan" dengan struktur dan data

1

mysqldump -u root -p --databases sakila employees > C:\MySQLBackup\sakila_employees_20200424. sql

Lihat gambar berikut

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Demikian pula, jika Anda ingin membuat cadangan semua database, Anda harus menggunakan opsi –all-databases di perintah mysqldump. Perintah berikut akan menghasilkan cadangan semua database dalam MySQL Server

1

mysqldump -u root -p --all-databases > C:\MySQLBackup\all_databases_20200424. sql

Lihat gambar berikut

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Hasilkan cadangan struktur basis data

Jika Anda ingin membuat cadangan dari struktur database, maka Anda harus menggunakan opsi –no-data pada perintah mysqldump. Perintah berikut menghasilkan cadangan struktur basis data dari basis data sakila

1

mysqldump -u root -p --no-data sakila > C:\MySQLBackup\sakila_objects_definition_20200424. sql

Lihat gambar berikut

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Hasilkan cadangan dari tabel tertentu

Jika Anda ingin membuat cadangan dari tabel tertentu, Anda harus menentukan nama tabel setelah nama database. Perintah berikut menghasilkan cadangan tabel aktor dari database sakila

1

mysqldump -u root -p sakila actor payment > C:\MySQLBackup\actor_payment_table_20200424. sql

Jika Anda ingin membuat cadangan lebih dari satu tabel, maka Anda harus memisahkan nama tabel dengan spasi, perintah berikut menghasilkan cadangan aktor dan tabel pembayaran dari database sakila

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Menghasilkan cadangan data database

Jika Anda ingin membuat cadangan data tanpa struktur database, maka Anda harus menggunakan opsi –no-create-info pada perintah mysqldump. Perintah berikut menghasilkan cadangan data dari database sakila

1

mysqldump -u root -p sakila --no-create-info > C:\MySQLBackup\sakila_data_only_20200424. sql

Lihat gambar berikut

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Mari kita lihat isi dari file cadangan

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Seperti yang Anda lihat pada screenshot di atas, file cadangan berisi berbagai pernyataan T-SQL yang dapat digunakan untuk memasukkan data ke dalam tabel

Kembalikan Database MySQL

Mengembalikan database MySQL menggunakan mysqldump sederhana. Untuk memulihkan database, Anda harus membuat database kosong. Pertama, mari kita jatuhkan dan buat ulang database sakila dengan menjalankan perintah berikut

1

2

3

4

5

mysql> jatuhkan database sakila;

Kueri OK, 24 baris affected (0.35 dtk)

mysql> buat database sakila;

Kueri OK, 1 baris affected (0.01 dtk)

MySQL>

Saat Anda memulihkan database, alih-alih menggunakan mysqldump, Anda harus menggunakan mysql; . Jalankan perintah berikut untuk mengembalikan database sakila

1

mysql -u root -p sakila < C:\MySQLBackup\sakila_20200424. sql

Setelah perintah berhasil dijalankan, jalankan perintah berikut untuk memverifikasi bahwa semua objek telah dibuat di database sakila

mysql> gunakan sakila;
Basis data berubah
mysql> tampilkan tabel;

Lihat gambar berikut

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Mengembalikan tabel tertentu dalam database

Misalnya, seseorang menjatuhkan tabel dari database. Alih-alih memulihkan seluruh database, kami dapat memulihkan tabel yang dijatuhkan dari cadangan yang tersedia. Untuk mendemonstrasikan, jatuhkan tabel aktor dari database sakila dengan menjalankan perintah berikut pada alat baris perintah MySQL

1

2

3

mysql> gunakan sakila;

Database diubah

mysql> jatuhkan tabel aktor;

Untuk mengembalikan tabel aktor, lakukan proses langkah demi langkah berikut

Langkah 1

Buat database dummy bernama sakila_dummy dan pulihkan cadangan database sakila di atasnya. Berikut perintahnya

1

2

3

mysql> buat database sakila_dummy;

mysql> gunakan sakila_dummy;

mysql> sumber C. \MySQLBackup\sakila_20200424. sql

Langkah 2

Cadangkan tabel aktor ke sakila_dummy_actor_20200424. .sql. Berikut perintahnya

1

C. \Pengguna\Nisarg> . mysqldump -u root -p sakila_dummy actor > C:\MySQLBackup\sakila_dummy_actor_20200424. sql

Langkah 3

Pulihkan tabel aktor dari folder “sakila_dummy_actor_20200424. sql”. Berikut ini adalah perintah pada alat baris perintah MySQL

1

mysql> sumber C. \MySQLBackup\sakila_dummy_actor_20200424. sql

Jalankan perintah berikut untuk memverifikasi bahwa tabel telah berhasil dipulihkan

1

2

3

mysql> gunakan sakila;

Database diubah

mysql> tampilkan tabel;

Lihat gambar berikut

Bagaimana memulihkan dump mysql lebih cepat?
Bagaimana memulihkan dump mysql lebih cepat?

Ringkasan

Pada artikel ini, saya telah menjelaskan bagaimana kita dapat menggunakan utilitas baris perintah mysqldump untuk menghasilkan yang berikut ini

Bagaimana cara mempercepat pemulihan dump MySQL?

Ringkasan (untuk performa pemulihan dump terbaik). .
Atur innodb_buffer_pool_size menjadi setengah dari RAM
Setel innodb_log_file_size ke 1G
Setel innodb_flush_log_at_trx_commit ke 0
Menonaktifkan innodb_double_write disarankan hanya untuk kinerja tercepat, ini harus diaktifkan pada produksi

Berapa lama dump MySQL berlangsung?

Diperlukan hampir 20 menit 19 detik untuk membuang semua database dengan ukuran total sekitar 10 GB.

Bagaimana cara meningkatkan kecepatan impor MySQL?

Jika Anda menggunakan mysqlimport maka saya sarankan Anda gunakan opsi kompres untuk mengompres data antara klien dan server . Parameter lain yang harus Anda tingkatkan untuk mempercepat impor adalah parameter max_allowed_packet dan atur ke >512MB di my. cnf dan mulai ulang server.

Apa cara tercepat untuk membuang basis data?

Binary dump adalah cara tercepat untuk membuang database. File dump biner bersifat portabel di semua platform, apa pun jenis CPU-nya.