Bagikan melalui


Memulihkan data dan perjalanan waktu

Penting

Fitur ini ada di Pratinjau Umum di wilayah berikut: westus, , , westus2, eastuseastus2, centralussouthcentralus, northeurope, westeurope, , australiaeast, brazilsouth, canadacentral, , centralindia, , southeastasia, . uksouth

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 instans 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 kueri 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 bacaan atau tulisan 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 Komputasi di bilah samping ruang kerja.
  2. Klik tab Lakebase Provisioned.
  3. Pilih instans database yang ingin Anda perbarui.
  4. Klik Edit di sudut kanan atas.
  5. Di bawah Jendela pemulihan (hari), 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 instans anak sama dengan peran induk di titik pemulihan yang dipilih. Ini dapat menyebabkan pengguna memiliki hak istimewa yang tidak cocok dengan hak istimewa yang saat ini diberikan pada instans induk. Lihat 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

Dengan Buat dari induk diaktifkan, ada dua parameter tambahan untuk ditentukan:

  • Nama Instans Induk: Nama instans induk yang ingin Anda buat database turunannya.
  • Sertakan data dari induk hingga: Titik historis tertentu dalam waktu yang Anda inginkan untuk data.
    • Titik waktu saat ini: Ini membuat instans anak dengan data terbaru dari instans database.
    • Tanggal dan waktu tertentu: Ini 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 write-ahead-log (WAL) 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.

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.