

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kelola cadangan aplikasi menggunakan snapshot
<a name="how-snapshots"></a>

*Snapshot* *adalah Managed Service untuk implementasi Apache Flink dari Apache Flink Savepoint.* Snapshot adalah cadangan status aplikasi yang dipicu, dibuat, dan dikelola pengguna atau layanan. [Untuk informasi tentang Apache Flink Savepoints, lihat Savepoints di Dokumentasi Apache Flink.](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/ops/state/savepoints/) Menggunakan snapshot, Anda dapat me-restart aplikasi dari snapshot tertentu dari status aplikasi.

**catatan**  
Sebaiknya aplikasi Anda membuat snapshot beberapa kali sehari untuk memulai ulang dengan benar menggunakan data status yang benar. Frekuensi yang benar untuk snapshot Anda bergantung pada logika bisnis aplikasi Anda. Mengambil snapshot yang sering memungkinkan Anda memulihkan data yang lebih baru, tetapi meningkatkan biaya dan membutuhkan lebih banyak sumber daya sistem.

Di Managed Service for Apache Flink, Anda mengelola snapshot menggunakan tindakan API berikut:
+ [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplicationSnapshot.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplicationSnapshot.html)
+ [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DeleteApplicationSnapshot.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DeleteApplicationSnapshot.html)
+ [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplicationSnapshot.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplicationSnapshot.html)
+ [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplicationSnapshots.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplicationSnapshots.html)

Untuk batas per aplikasi pada jumlah snapshot, lihat [Layanan Terkelola untuk kuota notebook Apache Flink dan Studio](limits.md). Jika aplikasi Anda mencapai batas pada snapshot, lalu secara manual membuat snapshot gagal dengan `LimitExceededException`. 

Layanan Terkelola untuk Apache Flink tidak pernah menghapus snapshot. Anda harus secara manual menghapus snapshot menggunakan tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationSnapshot.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationSnapshot.html).

Untuk memuat snapshot status aplikasi tersimpan saat memulai aplikasi, gunakan parameter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_ApplicationRestoreConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_ApplicationRestoreConfiguration.html) dari [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) atau tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html).

**Topics**
+ [Kelola pembuatan snapshot otomatis](#how-fault-snapshot-update)
+ [Pulihkan dari snapshot yang berisi data status yang tidak kompatibel](#how-fault-snapshot-restore)
+ [Tinjau contoh API snapshot](#how-fault-snapshot-examples)

## Kelola pembuatan snapshot otomatis
<a name="how-fault-snapshot-update"></a>

Jika `SnapshotsEnabled` diatur ke `true` dalam untuk aplikasi, Managed Service [ ApplicationSnapshotConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationSnapshotConfiguration.html)for Apache Flink secara otomatis membuat dan menggunakan snapshot saat aplikasi diperbarui, diskalakan, atau dihentikan untuk menyediakan semantik pemrosesan yang tepat sekali.

**catatan**  
Mengatur `ApplicationSnapshotConfiguration::SnapshotsEnabled` ke `false` akan menyebabkan kehilangan data selama pembaruan aplikasi.

**catatan**  
Layanan Terkelola untuk Apache Flink memicu savepoint perantara selama pembuatan snapshot. Untuk Flink versi 1.15 atau lebih besar, savepoint menengah tidak lagi melakukan efek samping apa pun. Lihat [Memicu savepoint](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/savepoints/#triggering-savepoints).

Snapshot yang dibuat secara otomatis memiliki kualitas berikut:
+ Snapshot dikelola oleh layanan, tetapi Anda dapat melihat snapshot menggunakan tindakan. [ ListApplicationSnapshots](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplicationSnapshots.html) Snapshot yang dibuat secara otomatis menghitung batas snapshot Anda.
+ Jika aplikasi Anda melebihi batas snapshot, snapshot yang dibuat secara manual akan gagal, tetapi Layanan Terkelola untuk layanan Apache Flink akan tetap berhasil membuat snapshot saat aplikasi diperbarui, diskalakan, atau dihentikan. Anda harus menghapus snapshot secara manual menggunakan [ DeleteApplicationSnapshot](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DeleteApplicationSnapshot.html)tindakan sebelum membuat lebih banyak snapshot secara manual.

## Pulihkan dari snapshot yang berisi data status yang tidak kompatibel
<a name="how-fault-snapshot-restore"></a>

Karena snapshot berisi informasi tentang operator, memulihkan data status dari snapshot untuk operator yang telah berubah sejak versi aplikasi sebelumnya mungkin memiliki hasil yang tak terduga. Aplikasi akan gagal jika mencoba memulihkan data status dari snapshot yang tidak sesuai dengan operator saat ini. Aplikasi yang gagal akan terhenti di status `STOPPING` atau `UPDATING`. 

Untuk memungkinkan aplikasi memulihkan dari snapshot yang berisi data status yang tidak kompatibel, atur `AllowNonRestoredState` parameter [FlinkRunConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_FlinkRunConfiguration.html)untuk `true` menggunakan tindakan. [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)

Anda akan melihat perilaku berikut ketika aplikasi dipulihkan dari snapshot usang:
+ **Operator ditambahkan:** Jika operator baru ditambahkan, titik simpan tidak memiliki data status untuk operator baru. Tidak ada kesalahan yang akan terjadi, dan tidak perlu untuk mengatur `AllowNonRestoredState`.
+ **Operator dihapus:** Jika operator yang ada dihapus, titik simpan memiliki data status untuk operator yang hilang. Kesalahan akan terjadi kecuali `AllowNonRestoredState` diatur ke `true`.
+ **Operator dimodifikasi:** Jika perubahan yang kompatibel dibuat, seperti mengubah tipe parameter ke tipe yang kompatibel, aplikasi dapat memulihkan dari snapshot usang. Untuk informasi selengkapnya tentang memulihkan dari snapshot, lihat [Savepoints](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/ops/state/savepoints/) di Dokumentasi Apache Flink. Aplikasi yang menggunakan Apache Flink versi 1.8 atau yang lebih baru mungkin dapat dipulihkan dari snapshot dengan skema yang berbeda. Aplikasi yang menggunakan Apache Flink versi 1.6 tidak dapat dipulihkan. Untuk two-phase-commit sink, sebaiknya gunakan snapshot sistem (SWs) alih-alih snapshot () buatan pengguna. CreateApplicationSnapshot

  Untuk Flink, Layanan Terkelola untuk Apache Flink memicu savepoint perantara selama pembuatan snapshot. Untuk Flink 1.15 dan seterusnya, savepoint menengah tidak lagi melakukan efek samping apa pun. Lihat [Memicu Savepoint](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/savepoints/#triggering-savepoints).

Jika Anda perlu melanjutkan aplikasi yang tidak kompatibel dengan data savepoint yang ada, sebaiknya Anda melewatkan pemulihan dari snapshot dengan menyetel `ApplicationRestoreType` parameter tindakan ke. [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html)`SKIP_RESTORE_FROM_SNAPSHOT`

Untuk informasi selengkapnya tentang cara Apache Flink menangai data status yang tidak kompatibel, lihat [Evolusi Skema Status](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/fault-tolerance/serialization/schema_evolution/) di *Dokumentasi Apache Flink*.

## Tinjau contoh API snapshot
<a name="how-fault-snapshot-examples"></a>

Bagian ini mencakup permintaan contoh tindakan API untuk menggunakan snapshot dengan aplikasi. Untuk informasi tentang cara menggunakan file JSON untuk input tindakan API, lihat [Layanan Terkelola untuk kode contoh API Apache Flink](api-examples.md).

### Aktifkan snapshot untuk aplikasi
<a name="how-fault-savepoint-examples-enable"></a>

Contoh permintaan untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) berikut mengaktifkan snapshot untuk aplikasi:

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 1,
   "ApplicationConfigurationUpdate": { 
      "ApplicationSnapshotConfigurationUpdate": { 
         "SnapshotsEnabledUpdate": "true"
       }
    }
}
```

### Buat snapshot
<a name="how-fault-savepoint-examples-create"></a>

Contoh permintaan untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplicationSnapshot.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplicationSnapshot.html) berikut membuat snapshot dari status aplikasi saat ini:

```
{
   "ApplicationName": "MyApplication",
   "SnapshotName": "MyCustomSnapshot"
}
```

### Buat daftar snapshot untuk aplikasi
<a name="how-fault-snapshot-examples-list"></a>

Contoh permintaan untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_ListApplicationSnapshots.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_ListApplicationSnapshots.html) berikut mencantumkan 50 snapshot pertama untuk status aplikasi saat ini:

```
{
   "ApplicationName": "MyApplication",
   "Limit": 50
}
```

### Rincian daftar untuk snapshot aplikasi
<a name="how-fault-snapshot-examples-describe"></a>

Contoh permintaan berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DescribeApplicationSnapshot.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DescribeApplicationSnapshot.html) mencantumkan detail untuk snapshot aplikasi tertentu:

```
{
   "ApplicationName": "MyApplication",
   "SnapshotName": "MyCustomSnapshot"
}
```

### Menghapus snapshot
<a name="how-fault-snapshot-examples-delete"></a>

Contoh permintaan berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationSnapshot.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationSnapshot.html) menghapus snapshot yang disimpan sebelumnya. Anda bisa mendapatkan nilai `SnapshotCreationTimestamp` menggunakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_ListApplicationSnapshots.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_ListApplicationSnapshots.html) atau [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationSnapshot.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationSnapshot.html):

```
{
   "ApplicationName": "MyApplication",
   "SnapshotName": "MyCustomSnapshot",
   "SnapshotCreationTimestamp": 12345678901.0,
}
```

### Mulai ulang aplikasi menggunakan snapshot bernama
<a name="how-fault-snapshot-examples-load-custom"></a>

Contoh permintaan berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) memulai aplikasi menggunakan status yang disimpan dari snapshot tertentu:

```
{
   "ApplicationName": "MyApplication",
   "RunConfiguration": { 
      "ApplicationRestoreConfiguration": { 
         "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT",
         "SnapshotName": "MyCustomSnapshot"
      }
   }
}
```

### Mulai ulang aplikasi menggunakan snapshot terbaru
<a name="how-fault-snapshot-examples-load-recent"></a>

Contoh permintaan berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) memulai aplikasi menggunakan snapshot terbaru:

```
{
   "ApplicationName": "MyApplication",
   "RunConfiguration": { 
      "ApplicationRestoreConfiguration": { 
         "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
      }
   }
}
```

### Mulai ulang aplikasi tanpa snapshot
<a name="how-fault-snapshot-examples-load-none"></a>

Contoh permintaan berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) memulai aplikasi tanpa memuat status aplikasi, bahkan jika snapshot tersedia:

```
{
   "ApplicationName": "MyApplication",
   "RunConfiguration": { 
      "ApplicationRestoreConfiguration": { 
         "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT"
      }
   }
}
```