Memulihkan data dan perjalanan waktu

Penting

Lakebase Provisioned adalah penawaran Lakebase asli yang menggunakan komputasi yang disediakan yang Anda skalakan secara manual. Untuk wilayah yang didukung, lihat Ketersediaan wilayah. Untuk versi terbaru Lakebase, dengan komputasi penskalaan otomatis, skala-ke-nol, pencabangan, dan pemulihan instan, lihat Penskalaan Otomatis Lakebase.

Instans Lakebase baru akan dibuat sebagai proyek Autoscaling. Peluncuran dimulai 12 Maret 2026. Untuk informasi lebih lanjut, lihat Penskalaan otomatis yang diaktifkan secara default.

Halaman ini menjelaskan cara menggunakan instans anak untuk memulihkan data dan melakukan perjalanan waktu pada instans database Lakebase Anda.

Kapan Anda harus membuat instans anak?

Membuat instans anak berguna dalam skenario berikut:

  • Pemulihan kehilangan data yang tidak disengaja: Jika tabel penting dihapus pada pukul 10:23 kemarin, Anda dapat membuat instans turunan yang disetel ke pukul 10:22 untuk mengekstrak data yang hilang saja dan menggabungkannya kembali.
  • Lingkungan pengujian dan QA: Kloning lingkungan seperti produksi dari titik mana pun dalam X hari terakhir (seperti yang ditentukan oleh jendela pemulihan Anda) untuk memvalidasi perubahan skema atau menjalankan pengujian integrasi.
  • Kepatuhan dan audit: Sediakan instans anak yang mencerminkan status database pada waktu tertentu di masa lalu untuk audit internal, rekonsiliasi keuangan, atau analisis forensik.

Apa itu instance anak?

Instans anak adalah klon copy-on-write dari instans database asli. Ini dapat dibuat dari titik waktu saat ini atau dari titik waktu historis dalam jendela pemulihan. Jendela pemulihan menentukan rentang waktu (2-35 hari) tempat Anda dapat melakukan pemulihan titik waktu. Jendela pemulihan ditentukan saat membuat instans database. Anda dapat membuat instans anak kapan saja dalam jendela pemulihan ini, tanpa menunggu rekam jepret manual atau ekspor database penuh.

Setelah Anda membuat instans anak, instans tersebut tersedia untuk query hingga dihapus. Tidak ada kedaluwarsa otomatis yang terkait dengan jendela pemulihan induk. Ini memastikan Anda selalu memiliki akses ke data titik waktu di mana instans turunan dibuat, bahkan jika jendela pemulihan dari induk telah kedaluwarsa.

Instans anak diisolasi dari induk. Setiap operasi baca atau tulis yang Anda lakukan pada instans anak tidak berpengaruh pada instans sumber. Modifikasi yang dilakukan pada instans anak menggunakan mekanisme copy-on-write, sehingga perubahan disimpan sebagai "delta". Ini membuat data yang tidak dimodifikasi dibagikan dan meminimalkan penyimpanan tambahan.

Membuat instans anak untuk perjalanan waktu dan memulihkan data

Membuat instans anak berguna dalam skenario berikut:

  • Pemulihan kehilangan data yang tidak disengaja: Jika tabel penting dihapus pada pukul 10:23 kemarin, Anda dapat membuat instans turunan yang disetel ke pukul 10:22 untuk mengekstrak data yang hilang saja dan menggabungkannya kembali.
  • Lingkungan pengujian dan QA: Kloning lingkungan seperti produksi dari titik mana pun dalam X hari terakhir (seperti yang ditentukan oleh jendela pemulihan Anda) untuk memvalidasi perubahan skema atau menjalankan pengujian integrasi.
  • Kepatuhan dan audit: Sediakan instans anak yang mencerminkan status database pada waktu tertentu di masa lalu untuk audit internal, rekonsiliasi keuangan, atau analisis forensik.

Instruksi langkah demi langkah

Langkah 1: (Opsional) Mengonfigurasi jendela pemulihan pada instans database induk

Nilai yang valid untuk jendela pemulihan antara 2 hingga 35 hari, inklusif. Jendela default adalah 7 hari. Anda dapat menentukan jendela pemulihan pada instans database saat membuat instans. Lihat Buat instans database.

Gunakan UI atau API untuk mengubah jendela pemulihan instans database:

Antarmuka Pengguna

  1. Klik ikon Aplikasi.Aplikasi di sudut kanan atas dan pilih Lakebase Postgres.
  2. Klik Disediakan untuk membuka halaman Instans yang disediakan .
  3. Pilih instans database yang ingin Anda perbarui.
  4. Klik Edit di sudut kanan atas.
  5. Di bawah Pengaturan tingkat lanjut, atur jumlah hari untuk jendela pemulihan.
  6. Kliklah Simpan.

melengkung

curl -s -X PATCH --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances/my-instance -d '{"retention_window_in_days": 14}'

Langkah 2: Membuat instans anak

Peran dan izin dari instans anak sama dengan peran dan izin dari induknya pada titik pemulihan yang dipilih. Ini dapat menyebabkan pengguna memiliki hak istimewa yang tidak cocok dengan hak istimewa yang saat ini diberikan pada instans induk. Tampilkan peran identitas Azure Databricks dan cabut hak istimewa yang kedaluarsa pada instans anak.

Buat instans turunan dengan mengaktifkan Buat dari induk selama pembuatan instans database reguler. Lihat Membuat dan mengelola instans database.

Antarmuka Pengguna

  1. Klik ikon Aplikasi.Aplikasi di sudut kanan atas dan pilih Lakebase Postgres.
  2. Klik Disediakan untuk membuka halaman Instans yang disediakan .
  3. Klik Buat instance database.
  4. Konfigurasikan instans Anda:
    • Nama: Masukkan nama instans database (hanya 1-63 karakter, huruf, dan tanda hubung).
    • Kapasitas: Pilih ukuran komputasi (default: 2 CU). Lihat Ukuran instans.
    • Kebijakan penggunaan tanpa server: Pilih kebijakan anggaran untuk mengaitkan penggunaan dan penagihan tanpa server (opsional). Lihat Kebijakan penggunaan tanpa server.
  5. Perluas Pengaturan Tingkat Lanjut.
  6. Aktifkan Buat dari induk.
  7. Konfigurasikan pengaturan instans anak:
    • Nama instans induk: Masukkan nama instans induk yang ingin Anda buat database turunannya.
    • Sertakan data dari induk hingga: Pilih titik historis tertentu pada waktu yang Anda inginkan datanya.
      • Titik waktu saat ini: Membuat instans anak dengan data terbaru dari instans database.
      • Tanggal dan waktu tertentu: Membuat instans anak pada titik waktu tertentu dalam jendela pemulihan instans database. Instans anak berisi semua data pada titik waktu tertentu.
      • Nomor Urutan Log Tertentu: Membuat instans anak dari nomor urutan log WAL (Write-Ahead Log) tertentu (LSN) di jendela pemulihan. PostgreSQL menggunakan WAL untuk mendukung pemulihan dan menetapkan LSN ke setiap catatan WAL. Instans anak berisi semua data di WAL LSN tersebut. Untuk informasi lebih lanjut mengenai WALs, lihat Wal Internals. Untuk mendapatkan nilai LSN saat ini, lihat Fungsi kontrol cadangan.
  8. Klik Buat.

melengkung

Buat instans anak menggunakan data terbaru dari instans database.

curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child"}}'

Buat instans anak dengan data dari tanggal dan waktu tertentu, yang ditentukan dalam UTC.

curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child", "branch_timestamp":"2025-05-23T17:21:00Z"}}'

Buat sebuah instans anak dengan data dari suatu WAL LSN tertentu dari sebuah instans database.

curl -s -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" $DBR_URL/database/instances -d '{"name": "test", "capacity": "CU_2", "parent_instance_ref": {"name": "test-child", "lsn":"0/2A156E"}}'

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import DatabaseInstance

# Initialize the Workspace client
w = WorkspaceClient()

parent_instance_name = "test-child"
instance_name = "test"

# Create a child instance using the most recent data from a database instance.
instance = w.database.create_database_instance(
    DatabaseInstance(
        name="my-database-instance",
        capacity="CU_1",
        parent_instance_ref={
            "name": parent_instance_name
        }
    )
)

# Create a child instance with data from a specific date and time, specified in UTC.
instance = w.database.create_database_instance(
    DatabaseInstance(
        name=instance_name,
        capacity="CU_1",
        parent_instance_ref={
            "name": parent_instance_name,
            "branch_timestamp": "2025-05-23T17:21:00Z"
        }
    )
)

# Create a child instance with data from a specific WAL LSN of a database instance.
instance = w.database.create_database_instance(
    DatabaseInstance(
        name=instance_name,
        capacity="CU_1",
        parent_instance_ref={
            "name": parent_instance_name,
            "lsn": "0/2A156E"
        }
    )
)

antarmuka baris perintah (CLI)

# Create a database instance from the most recent data of a parent instance
databricks database create-database-instance my-database-instance \
  --capacity CU_1 \
  --parent-instance-ref '{"name": "my-parent-instance"}'

# Create a database instance from a specific date and time, specified in UTC
databricks database create-database-instance \
  --json '{
    "name": "my-database-instance",
    "capacity": "CU_2",
    "parent_instance_ref": {
      "name": "my-parent-instance",
      "branch_timestamp": "2025-05-23T17:21:00Z"
    }
  }'

# Create a database instance from a specific WAL LSN of a parent instance
databricks database create-database-instance \
  --json '{
    "name": "my-database-instance",
    "capacity": "CU_2",
    "parent_instance_ref": {
      "name": "my-parent-instance",
      "lsn": "0/2A156E"
    }
  }'

Langkah 3 (Opsional): Memulihkan data

Setelah membuat instans anak pada titik waktu tertentu, Anda dapat memulihkan data dari instans anak kembali ke instans produksi Anda. Ini berguna untuk memulihkan dari kehilangan atau kerusakan data yang tidak disengaja.

Untuk memulihkan data:

  1. Sambungkan ke instans anak menggunakan klien PostgreSQL atau metode koneksi pilihan Anda. Lihat Koneksi dan Pencarian Data.
  2. Tulis skrip untuk menyalin data yang diperlukan dari instans anak ke instans produksi Anda. Skrip harus melakukan hal berikut:
    • Mengkueri tabel atau data tertentu yang Anda butuhkan dari instans anak
    • Menyisipkan atau memperbarui data dalam instans produksi Anda
    • Menangani konflik atau transformasi data sesuai kebutuhan
  3. Uji operasi pemulihan pada subkumpulan kecil data terlebih dahulu untuk memastikan kebenaran.
  4. Jalankan skrip pemulihan lengkap untuk menyalin semua data yang diperlukan kembali ke produksi.
  5. Hapus instans anak setelah berhasil memulihkan data dan memverifikasi instans produksi sudah benar. Untuk menghapus instans Anda, lihat Menghapus instans.

Keterbatasan

  • Hanya satu instans anak yang dapat dibuat pada satu waktu untuk instans database.
  • Instans induk tidak dapat dihapus kecuali instans anak dihapus.
  • Instans anak dirancang untuk pengujian atau pemulihan jangka pendek. Modifikasi berat pada anak atau induk dapat menyebabkan sistem mengurangi berbagi data dan mempertahankan salinan lengkap untuk anak. Penggunaan dan biaya penyimpanan dapat bertambah agar sesuai dengan instans database mandiri.