Backup dan restore
Klik kanan sebuah koneksi di navigator lalu pilih Backup… atau Restore…. Untuk PostgreSQL dan MySQL, Selekta menjalankan client tool milik database itu yang terpasang di Mac Anda dan menampilkan progresnya. SQLite tidak butuh tool apa pun. Backup untuk SQL Server belum tersedia.
Yang dibutuhkan tiap database
| Database | Backup | Restore |
|---|---|---|
| PostgreSQL | pg_dump |
pg_restore |
| MySQL | mysqldump |
mysql |
| MariaDB | mariadb-dump atau mysqldump |
mariadb atau mysql |
| SQLite | Bawaan | Bawaan |
| SQL Server | Belum tersedia | Belum tersedia |
Tool ini tidak dibundel dengan Selekta. Pasang dengan Homebrew atau installer lain:
# client tool PostgreSQL
brew install libpq
# client tool MySQL
brew install mysql-client
Untuk PostgreSQL Anda juga bisa memakai tool yang ada di dalam Postgres.app.
Untuk SQL Server, tab Backup menawarkan Export as SQL…, yang menulis statement INSERT untuk satu tabel sekali jalan. Lihat Ekspor dan impor. Untuk backup lengkap dengan skema dan izin, jalankan BACKUP DATABASE di server.
Tempat Selekta mencari tool
Saat tab Backup terbuka, Selekta mencari tool dengan urutan berikut dan memakai yang pertama ditemukan:
- Path yang Anda pilih lewat Choose path… (file tool-nya atau folder
bin-nya). - Setiap folder di
PATHAnda. /opt/homebrew/bin,/usr/local/bin,/opt/homebrew/opt/libpq/bin,/usr/local/opt/libpq/bin,/opt/homebrew/opt/mysql-client/bin,/usr/local/mysql/bindan/Applications/Postgres.app/Contents/Versions/latest/bin.- Instalasi Homebrew berversi di
/opt/homebrew/optdan/usr/local/opt(postgresql@…,libpq,mysql@…,mysql-client,mariadb), versi terbaru lebih dulu.
Aplikasi di macOS mulai dengan PATH yang pendek, jadi folder-folder tetap itu penting meskipun tool-nya jalan di Terminal. Untuk MySQL dan MariaDB, Selekta mendahulukan tool dari vendor yang sama dengan server.
Versi tool
Tool PostgreSQL harus versi mayor yang sama dengan server atau lebih baru. pg_dump 14 tidak bisa membackup server PostgreSQL 16. Pengecekan yang sama berlaku untuk tool MySQL terhadap server MySQL dan tool MariaDB terhadap server MariaDB; tool dari vendor lain tidak dibandingkan. Kalau mysqldump 8 atau lebih baru membackup MySQL 5.7 atau MariaDB, Selekta menambahkan --column-statistics=0 untuk Anda.
Membackup database
- Klik kanan koneksi lalu pilih Backup…, atau klik kanan tabel lalu pilih Backup table….
- Scope: Whole database, Selected schemas (PostgreSQL) atau Selected tables. Pohon objek menampilkan ukuran tiap tabel dan perkiraan totalnya.
- Options: pilih format, isi dan opsi lainnya. Pratinjau perintah menampilkan persis apa yang akan dijalankan; Copy command menyalinnya.
- Destination: bawaannya
~/Backups/<koneksi>/dengan nama koneksi, database, tanggal dan jam di nama file. Ubah atau klik Browse…. - Klik Start backup.
Opsi
| Opsi | Nilai |
|---|---|
| Format (PostgreSQL) | Plain SQL (satu script .sql), Custom -Fc (.dump terkompresi, bisa direstore sebagian, disarankan) atau Directory -Fd (satu file per tabel, job paralel). Backup MySQL selalu plain SQL. |
| Content | Schema and data, Schema only atau Data only. |
| Compression | 0 sampai 9, bawaan 6. Hanya format Custom dan Directory. |
| Parallel jobs | 1 sampai 8. Hanya format Directory. |
| Include owner and privileges | PostgreSQL. Kalau mati, menambahkan --no-owner --no-privileges. |
| Add DROP statements (--clean --if-exists) | PostgreSQL. Script menghapus setiap objek sebelum membuatnya. |
Backup MySQL selalu memakai --single-transaction --routines --triggers. mysqldump menulis DROP TABLE sebelum setiap tabel secara bawaan.
Password tidak pernah menjadi bagian dari perintah. Selekta memberikannya ke tool lewat environment (PGPASSWORD atau MYSQL_PWD), dibaca dari macOS Keychain. Tool tersambung dengan cara yang sama seperti koneksinya: lewat SSH tunnel dan dengan pengaturan TLS yang sama.
Saat backup berjalan
Tab menampilkan jumlah objek yang selesai, objek yang sedang diproses, ukuran yang ditulis dan log tool. Continue in background membiarkan Anda tetap bekerja. Membatalkan akan menghentikan tool dan menghapus file yang belum selesai. Setelah selesai, Restore this backup… memulai restore dari file yang sama.
Kalau role tidak bisa membaca sebuah tabel, backup berhenti dan menyebut nama tabelnya. Pakai Exclude untuk membackup tanpa tabel itu, atau Edit connection role untuk memakai role lain.
Merestore backup
- Klik kanan koneksi tujuan lalu pilih Restore…. Pilihan ini nonaktif di koneksi read-only.
- File: pilih Target connection, Database dan Backup file.
- Contents: untuk backup Custom dan Directory, Selekta menampilkan daftar isi backup (
pg_restore --list). Hilangkan centang untuk merestore sebagian saja. Plain SQL tidak bisa direstore sebagian. - Options: restore ke database yang ada, atau Create new… dengan nama baru. Untuk arsip PostgreSQL Anda bisa mengatur Parallel jobs, Clean: drop objects first (--clean), If exists (--if-exists) dan No owner (--no-owner). Single transaction (PostgreSQL) atau Stop on first error (MySQL) membuat restore berhasil semua atau tidak sama sekali.
- Klik Restore… lalu konfirmasi.
Selekta membaca file untuk mengenali formatnya: arsip custom pg_dump, arsip directory dengan toc.dat, dump MySQL atau MariaDB, database SQLite, atau plain SQL. Dump untuk engine lain ditolak, misalnya "This is a MySQL dump; the target is PostgreSQL." File gzip harus diekstrak dulu.
Backup plain SQL ke PostgreSQL dijalankan oleh Selekta sendiri, statement demi statement, dalam satu transaksi. Kalau satu statement gagal, semuanya di-rollback.
Kalau database tujuan belum ada, restore berhenti sebelum mengubah apa pun dan menawarkan Create … and retry. Kalau restore selesai dengan error, tab menampilkan statement yang dilewati dan Copy errors menyalinnya.
SQLite
Untuk koneksi SQLite, Backup… membuka satu langkah saja. Back up to secara bawaan mengarah ke folder backups di samping file database. Selekta menyalin database itu sendiri, dan database tetap bisa dipakai selama penyalinan.
Restore from file… mengganti file database dengan file backup:
- Pilih file backup. Selekta memeriksa bahwa file itu tidak rusak.
- Konfirmasi penggantian. Di Production, ketik nama koneksinya.
- Selekta menutup tab yang terbuka di koneksi itu, memindahkan file saat ini beserta file
-waldan-shm-nya ke Trash, menaruh backup di tempatnya, lalu membuka ulang koneksi.
Apply atau buang dulu perubahan yang belum di-commit di tab yang terbuka: restore nonaktif selama ada tab di koneksi itu yang masih punya perubahan.