15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
21.10.2024
2 +1

Cara Mencadangkan Database MySQL Dengan MySQL Workbench

MySQL Workbench adalah alat administrasi database visual lintas platform yang menyertakan utilitas Data Export bawaan yang mampu menghasilkan backup logis penuh dari database MySQL dan MariaDB sebagai file dump .sql yang portabel. Backup logis yang dihasilkan dengan cara ini menangkap skema DDL dan data DML sebagai pernyataan SQL biasa, membuatnya mudah dibaca manusia, ramah version-control, dan dapat dipulihkan di instance MySQL yang kompatibel terlepas dari sistem operasi atau storage engine.

Panduan ini memandu setiap tahap proses backup — mulai dari pengaturan koneksi awal hingga konfigurasi ekspor, verifikasi, dan otomatisasi — sekaligus mencakup trade-off arsitektur yang menentukan apakah alat ekspor MySQL Workbench adalah pilihan yang tepat untuk lingkungan Anda.

Mengapa Backup Logis Penting (dan Kapan Tidak Cukup)

Fungsi Data Export MySQL Workbench membungkus utilitas mysqldump dalam GUI. Artinya outputnya adalah backup logis: sekumpulan pernyataan SQL berurutan (CREATE TABLE, INSERT INTO, dll.) yang merekonstruksi database dari awal saat diputar ulang. Ini berbeda dengan backup fisik (salinan file data mentah yang dihasilkan oleh alat seperti Percona XtraBackup atau MySQL Enterprise Backup), yang menyalin file tablespace InnoDB secara langsung.

AtributBackup Logis (Workbench / mysqldump)Backup Fisik (XtraBackup)
Format outputTeks `.sql` biasaFile tablespace InnoDB biner
PortabilitasServer yang kompatibel dengan MySQL mana punVersi mayor yang sama, arsitektur OS yang sama
Kecepatan backup (DB besar)Lambat — serialisasi baris per barisCepat — salinan tingkat file
Kecepatan pemulihanLambat — memutar ulang setiap pernyataan SQLCepat — salinan file + crash recovery
GranularitasTabel, database, atau instance penuhInstance penuh atau tablespace individual
Jaminan konsistensi`–single-transaction` (InnoDB) atau kunci tabelHot backup dengan redo log InnoDB
Dapat dibaca manusiaYaTidak
Cocok untukDev/staging, DB kecil hingga menengah, migrasiDatabase produksi berukuran besar

Untuk database di bawah beberapa gigabyte pada VPS Hosting atau lingkungan shared, backup logis melalui MySQL Workbench sepenuhnya praktis. Untuk database produksi berukuran ratusan gigabyte, Anda harus memperlakukan ekspor Workbench sebagai alat tambahan atau alat lingkungan pengembangan dan mengandalkan backup fisik atau berbasis binary-log untuk target RPO/RTO produksi.

Langkah 1: Instal MySQL Workbench dan Verifikasi Kompatibilitas

Unduh MySQL Workbench dari halaman Unduhan MySQL resmi. Installer tersedia untuk paket Linux Windows, macOS, dan Ubuntu/Debian/Fedora.

Keselarasan versi sangat penting. MySQL Workbench 8.0.x harus digunakan terhadap server MySQL 8.0.x. Menggunakan klien Workbench yang jauh lebih lama terhadap server yang lebih baru (atau sebaliknya) dapat menyebabkan wizard ekspor secara diam-diam menghilangkan objek yang tidak dapat diuraikannya, seperti generated column, functional index, atau klausa validasi skema JSON yang diperkenalkan dalam rilis yang lebih baru.

Setelah instalasi, konfirmasikan versi klien sesuai dengan server Anda:

SELECT VERSION();

Jalankan kueri ini segera setelah terhubung untuk memverifikasi versi server sebelum melanjutkan ekspor apa pun.

Langkah 2: Buat dan Uji Koneksi Server

Luncurkan MySQL Workbench. Di layar beranda, temukan panel MySQL Connections dan klik ikon + untuk membuka dialog pengaturan koneksi.

Isi kolom berikut:

  • Connection Name — label deskriptif (mis., prod-db-01)
  • Hostname — alamat IP atau FQDN server
  • Port — defaultnya adalah 3306; ubah jika server Anda menggunakan port non-standar
  • Username — akun pengguna MySQL
  • Password — simpan di vault Workbench atau masukkan saat waktu koneksi

Klik Test Connection. Pengujian yang berhasil mengonfirmasi keterjangkauan TCP dan validitas kredensial. Jika pengujian gagal, penyebab umum meliputi:

    bind-address server MySQL diatur ke 127.0.0.1, memblokir koneksi jarak jauh
    Aturan firewall yang memblokir port 3306
  • Akun pengguna tidak memiliki hak PROCESS atau SELECT yang diperlukan untuk ekspor
  • Hak minimum yang diperlukan untuk ekspor penuh:

    GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, EVENT, PROCESS ON *.* TO 'backup_user'@'%';

    Jangan pernah menggunakan akun root untuk operasi backup rutin. Buat pengguna backup khusus yang hanya-baca dan berikan hanya apa yang diperlukan.

    Langkah 3: Buka Alat Data Export

    Setelah terhubung, navigasikan ke Server > Data Export di bilah menu atas. Ini membuka panel Data Export, yang merupakan front-end GUI untuk mysqldump.

    Panel dibagi menjadi dua bagian utama:

    • Panel kiri — mencantumkan semua database yang terlihat oleh pengguna yang terhubung
    • Panel kanan — menampilkan format ekspor, tujuan output, dan opsi lanjutan

    Langkah 4: Pilih Database dan Tabel

    Di panel kiri, centang kotak di sebelah setiap database yang ingin Anda sertakan dalam backup. Memperluas node database memperlihatkan tabel individual, memungkinkan Anda melakukan ekspor parsial — misalnya, hanya mencadangkan tabel users atau tabel orders tanpa mengekspor tabel logging atau analitik besar yang dapat diregenerasi.

    Tips praktis: Jika Anda menjalankan CMS seperti WordPress atau aplikasi kustom di Shared Web Hosting, Anda biasanya memiliki satu database aplikasi. Pilih seluruhnya. Jika Anda mengelola aplikasi multi-tenant dengan puluhan database di Dedicated Server, pertimbangkan untuk membuat skrip ekspor per-database daripada mengekspor semuanya melalui GUI dalam satu kali proses.

    Langkah 5: Konfigurasikan Opsi Ekspor

    Langkah ini berisi keputusan paling penting dalam seluruh proses.

    Jenis Konten Ekspor

    Di bawah Objects to Export, pilih apa yang akan dimuat dalam dump:

    • Dump Structure and Data — mengekspor DDL (CREATE TABLE, CREATE VIEW, stored procedure, trigger, event) dan semua data baris. Ini adalah pilihan yang tepat untuk backup yang lengkap dan dapat dipulihkan.
    • Dump Data Only — hanya mengekspor pernyataan INSERT. Gunakan ini saat memigrasikan data ke dalam skema yang sudah ada.
    • Dump Structure Only — hanya mengekspor DDL. Berguna untuk mereplikasi skema ke lingkungan staging tanpa menyalin data produksi yang sensitif.

    Tujuan Output

    • Export to Dump Project Folder — membuat satu file .sql per tabel di dalam direktori. Berguna saat Anda perlu memulihkan tabel individual secara selektif, tetapi menghasilkan banyak file untuk database besar.
    • Export to Self-Contained File — menulis seluruh ekspor ke dalam satu file .sql. Ini adalah pilihan standar untuk sebagian besar skenario backup, karena menghasilkan satu artefak yang mudah dikompresi, ditransfer, dan disimpan.

    Klik Browse untuk mengatur jalur output. Pilih lokasi di luar web root dan, idealnya, pada volume terpisah dari direktori data database.

    Opsi Lanjutan (Kritis untuk Konsistensi)

    Klik Advanced Options untuk memperlihatkan flag mysqldump yang mendasarinya. Perhatikan dengan seksama:

    • --single-transaction — membungkus seluruh ekspor InnoDB dalam satu transaksi repeatable-read, menghasilkan snapshot yang konsisten tanpa mengunci tabel. Ini sangat penting untuk database produksi langsung yang menggunakan InnoDB. Aktifkan.
    • --routines — menyertakan stored procedure dan fungsi. Dinonaktifkan secara default di beberapa versi Workbench.
    • --events — menyertakan event terjadwal.
    • --triggers — disertakan secara default; verifikasi bahwa ini dicentang.
    • --hex-blob — mengekspor kolom BLOB, BINARY, dan VARBINARY sebagai string heksadesimal, mencegah kerusakan encoding selama pemulihan pada sistem dengan default character set yang berbeda.

    Jika Anda mengekspor database yang menggunakan klausa DEFINER yang terikat pada pengguna tertentu (umum dengan view dan stored procedure), ketahuilah bahwa memulihkan dump di server yang berbeda akan gagal jika pengguna tersebut tidak ada. Hapus atau ganti klausa DEFINER sebelum memulihkan:

    sed 's/DEFINER=[^ ]* //g' original_dump.sql > cleaned_dump.sql

    Langkah 6: Jalankan Ekspor

    Klik Start Export. MySQL Workbench menampilkan log kemajuan real-time yang menunjukkan setiap objek saat diproses. Untuk database besar, ini bisa memakan waktu beberapa menit hingga jam tergantung pada volume data, jumlah tabel, dan kapasitas I/O server.

    Pantau output log dengan cermat. Peringatan seperti Access denied for table atau Table doesn't exist mengindikasikan kesenjangan hak atau inkonsistensi skema yang akan menghasilkan backup yang tidak lengkap. Jangan abaikan ini sebagai hal kosmetik — backup yang tidak lengkap bukanlah backup.

    Setelah selesai, log akan menampilkan Export completed dengan timestamp.

    Langkah 7: Verifikasi File Backup

    Navigasikan ke direktori output dan konfirmasikan file .sql ada dan memiliki ukuran non-nol. Kemudian buka file di editor teks atau jalankan pemeriksaan integritas cepat:

    head -50 your_backup.sql
    tail -20 your_backup.sql

    Dump yang valid dimulai dengan blok komentar yang berisi versi mysqldump dan versi server, diikuti oleh pernyataan SET untuk character set dan pemeriksaan foreign key. Diakhiri dengan komentar -- Dump completed on YYYY-MM-DD HH:MM:SS terakhir. Jika file terpotong atau berakhir secara tiba-tiba, ekspor terputus dan backup tidak dapat digunakan.

    Untuk keyakinan tambahan, lakukan uji pemulihan ke database non-produksi:

    mysql -u root -p test_restore_db < your_backup.sql

    Kemudian periksa jumlah baris terhadap sumber:

    SELECT COUNT(*) FROM test_restore_db.your_critical_table;

    Backup yang belum pernah diuji adalah asumsi, bukan jaminan.

    Langkah 8: Kompres dan Amankan File Backup

    Dump .sql mentah dapat dikompresi dengan sangat baik karena struktur teksnya yang berulang. Kompres segera setelah ekspor:

    gzip -9 your_backup.sql

    Ini biasanya mengurangi ukuran file sebesar 70–90%. Untuk database yang berisi data pelanggan sensitif, enkripsi arsip yang dikompresi sebelum menyimpan atau mentransfernya:

    openssl enc -aes-256-cbc -salt -pbkdf2 -in your_backup.sql.gz -out your_backup.sql.gz.enc -k 'your-strong-passphrase'

    Simpan passphrase secara terpisah dari file backup — jangan pernah di direktori atau repositori yang sama.

    Jika aplikasi Anda menggunakan HTTPS (yang diberlakukan oleh SSL Certificate), terapkan disiplin yang sama pada transfer backup: jangan pernah memindahkan dump database yang tidak terenkripsi melalui HTTP biasa atau FTP yang tidak terenkripsi.

    Mengotomatiskan Backup MySQL Tanpa GUI MySQL Workbench

    MySQL Workbench tidak memiliki penjadwal bawaan. Untuk backup berulang, panggil mysqldump langsung dari skrip shell dan jadwalkan dengan cron atau timer systemd.

    Skrip Shell untuk Backup Harian Otomatis

    #!/bin/bash
    
    DB_USER="backup_user"
    DB_PASS="your_password"
    DB_NAME="your_database"
    BACKUP_DIR="/var/backups/mysql"
    DATE=$(date +%F_%H-%M-%S)
    FILENAME="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql.gz"
    
    mkdir -p "$BACKUP_DIR"
    
    mysqldump 
      --user="$DB_USER" 
      --password="$DB_PASS" 
      --single-transaction 
      --routines 
      --triggers 
      --events 
      --hex-blob 
      "$DB_NAME" | gzip -9 > "$FILENAME"
    
    # Retain only the last 14 days of backups
    find "$BACKUP_DIR" -name "*.sql.gz" -mtime +14 -delete

    Jadwalkan skrip ini untuk berjalan setiap hari pukul 02:00 AM:

    crontab -e

    Tambahkan baris berikut:

    0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

    Catatan keamanan: Menyimpan password dalam skrip shell dapat diterima hanya jika skrip memiliki izin chmod 700 dan dimiliki oleh pengguna yang menjalankan cron job. Pendekatan yang lebih aman adalah menggunakan file opsi MySQL:

    # /root/.my.cnf — permissions must be 600
    [client]
    user=backup_user
    password=your_password

    Kemudian hapus flag --user dan --password dari skrip sepenuhnya; mysqldump akan membaca kredensial dari .my.cnf secara otomatis.

    Untuk tim yang mengelola beberapa database di berbagai server, pertimbangkan untuk memasangkan otomatisasi ini dengan VPS dengan cPanel, yang menyertakan manajer backup terjadwal bawaan yang menangani retensi, tujuan penyimpanan jarak jauh, dan notifikasi email tanpa skrip manual.

    Memulihkan Backup yang Dibuat Dengan MySQL Workbench

    Pemulihan dari dump yang dihasilkan Workbench sangat mudah tetapi memerlukan perhatian pada beberapa detail.

    Buat database target jika belum ada:

    CREATE DATABASE restored_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    Pulihkan dari file dump:

    mysql -u root -p restored_db < your_backup.sql

    Jika dump dibuat dengan flag --databases atau --all-databases (yang menyematkan pernyataan CREATE DATABASE dan USE), jangan tentukan database target di baris perintah — dump menanganinya secara internal. Ekspor database tunggal Workbench tidak menyertakan pernyataan ini secara default, jadi Anda harus membuat dan menentukan database target secara manual.

    Untuk dump yang dikompresi:

    gunzip -c your_backup.sql.gz | mysql -u root -p restored_db

    Pantau output pemulihan untuk kesalahan. Pelanggaran batasan foreign key selama pemulihan biasanya disebabkan oleh urutan impor tabel. Jika ini terjadi, nonaktifkan sementara pemeriksaan foreign key:

    SET FOREIGN_KEY_CHECKS = 0;
    -- run restore
    SET FOREIGN_KEY_CHECKS = 1;

    Matriks Keputusan: Kapan Menggunakan Setiap Metode Backup

    SkenarioAlat yang Direkomendasikan
    Database kecil, backup manual sesekaliMySQL Workbench Data Export
    Backup harian otomatis di Linux VPS`mysqldump` melalui skrip cron
    Database InnoDB besar, downtime minimalPercona XtraBackup
    Persyaratan pemulihan point-in-timeBinary log + full dump
    Hosting terkelola dengan penjadwal GUIcPanel Backup Manager
    Migrasi lintas versiLogical dump (mysqldump / Workbench)
    Disaster recovery dengan RPO sub-menitMySQL Group Replication + physical backup

    Daftar Periksa Poin Teknis Utama

    • Gunakan pengguna backup khusus dengan hak SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, EVENT, dan PROCESS — jangan pernah root.
    • Selalu aktifkan --single-transaction untuk tabel InnoDB guna menghindari penguncian dan memastikan snapshot yang konsisten.
    • Sertakan flag --routines, --triggers, dan --events; Workbench mungkin tidak mengaktifkan semua ini secara default.
    • Verifikasi file dump berakhir dengan komentar -- Dump completed sebelum menganggapnya valid.
    • Uji pemulihan ke database non-produksi secara berkala — minimal, bulanan.
    • Kompres dump segera dengan gzip dan enkripsi arsip sensitif dengan AES-256 sebelum transfer atau penyimpanan offsite.
    • Hapus atau ganti klausa DEFINER jika memulihkan ke server dengan kumpulan pengguna yang berbeda.
    • Untuk database yang lebih besar dari ~10 GB, evaluasi alat backup fisik; backup logis pada skala tersebut memperkenalkan waktu pemulihan yang tidak dapat diterima untuk sebagian besar SLA.
    • Simpan backup di volume terpisah atau lokasi jarak jauh — backup di disk yang sama dengan database yang dilindunginya bukanlah backup.

    Pertanyaan yang Sering Diajukan

    Apakah MySQL Workbench mengunci tabel selama ekspor?

    Untuk tabel InnoDB dengan opsi --single-transaction yang diaktifkan, tidak ada kunci tabel yang diperoleh. Ekspor menggunakan snapshot pembacaan yang konsisten. Untuk tabel MyISAM, mysqldump memperoleh kunci baca karena MyISAM tidak mendukung konsistensi transaksional. Jika database Anda mencampur storage engine, ekspor akan mengunci tabel MyISAM sementara tabel InnoDB dibaca secara transaksional.

    Bisakah saya mencadangkan server MySQL jarak jauh dengan MySQL Workbench?

    Ya. MySQL Workbench terhubung melalui TCP ke server MySQL mana pun yang dapat dijangkau. Konfigurasikan koneksi dengan IP atau hostname host jarak jauh dan pastikan port 3306 (atau port kustom Anda) terbuka di firewall. Untuk server tanpa akses publik langsung, Workbench mendukung SSH tunneling secara native — konfigurasikan di tab SSH dalam dialog koneksi.

    Apa perbedaan antara “Export to Dump Project Folder” dan “Export to Self-Contained File”?

    Opsi folder proyek membuat satu file .sql per tabel, yang memungkinkan pemulihan tingkat tabel secara selektif tetapi menghasilkan banyak file. Opsi file self-contained menulis semuanya ke dalam satu file .sql, yang lebih mudah dikelola, dikompresi, dan ditransfer. Untuk sebagian besar kasus penggunaan, file self-contained adalah pilihan yang tepat.

    Seberapa besar file backup .sql saya dibandingkan dengan ukuran database sebenarnya?

    Dump .sql mentah biasanya 1,5x hingga 3x lebih besar dari ukuran database on-disk sebenarnya karena data baris diserialisasi sebagai pernyataan INSERT yang verbose. Setelah kompresi gzip, dump biasanya menyusut menjadi 10–30% dari ukuran database asli, membuat backup logis yang dikompresi sangat efisien dalam penyimpanan untuk dataset yang banyak mengandung teks.

    Bisakah MySQL Workbench mencadangkan view, stored procedure, dan trigger?

    Ya, tetapi hanya jika opsi yang sesuai diaktifkan secara eksplisit. Di panel Advanced Options, verifikasi bahwa --routines (untuk stored procedure dan fungsi) dan --events dicentang. Trigger disertakan secara default. View disertakan sebagai bagian dari ekspor skema saat “Dump Structure and Data” atau “Dump Structure Only” dipilih.

    15%

    Hemat 15% di Semua Layanan Hosting

    Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

    Gunakan kode:

    Skills
    Memulai