Topik ini menjelaskan cara migrasi data dari kluster ClickHouse yang dikelola sendiri ke kluster ApsaraDB for ClickHouse Enterprise Edition menggunakan konsol atau migrasi manual.
Prasyarat
Kluster yang dikelola sendiri: Anda telah membuat akun database dan kata sandi. Akun tersebut harus memiliki izin baca pada database dan tabel serta izin untuk mengeksekusi perintah SYSTEM. Untuk migrasi tabel eksternal yang berisi kata sandi akun, akun tersebut juga harus memiliki izin
displaySecretsInShowAndSelect.Kluster tujuan: Anda telah membuat akun database dan kata sandi dengan izin penuh.
Konektivitas jaringan
Jika kluster yang dikelola sendiri dan kluster tujuan berada di VPC yang sama, tambahkan alamat IP semua node di kluster tujuan dan blok CIDR IPv4 vSwitch-nya ke daftar putih kluster yang dikelola sendiri.
Untuk informasi tentang cara mengonfigurasi daftar putih di ApsaraDB for ClickHouse, lihat Konfigurasi daftar putih.
Untuk informasi tentang cara mengonfigurasi daftar putih di kluster yang dikelola sendiri, lihat dokumentasi produk Anda.
Anda dapat menjalankan perintah
SELECT * FROM system.clusters WHERE internal_replication = 1;untuk melihat alamat IP semua node di kluster ApsaraDB for ClickHouse.
Jika kluster yang dikelola sendiri dan kluster tujuan berada di VPC yang berbeda, atau jika kluster yang dikelola sendiri di-host di pusat data lokal atau penyedia cloud lain, selesaikan terlebih dahulu masalah konektivitas jaringan. Untuk informasi selengkapnya, lihat Bagaimana cara menetapkan konektivitas jaringan antara kluster tujuan dan sumber data?.
CatatanDalam kasus ini, pemetaan IP mungkin diperlukan untuk menghindari konflik blok CIDR antar-VPC yang berbeda. Jika Anda melakukan pemetaan IP, tambahkan alamat IP yang dipetakan ke daftar putih kedua kluster.
Validasi migrasi
Sebelum memulai migrasi data, buat lingkungan staging untuk memvalidasi kompatibilitas bisnis, performa, dan apakah migrasi dapat diselesaikan dengan sukses. Setelah validasi berhasil, lanjutkan migrasi di lingkungan produksi. Langkah ini sangat penting karena membantu Anda mengidentifikasi dan menyelesaikan potensi masalah lebih awal, memastikan migrasi berjalan lancar, serta menghindari dampak yang tidak perlu pada lingkungan produksi Anda.
Buat tugas migrasi untuk migrasi data.
Lakukan analisis bottleneck performa untuk menentukan apakah migrasi dapat diselesaikan.
Anda dapat memvalidasi kompatibilitas dengan salah satu cara berikut:
Validasi manual. Untuk informasi selengkapnya, lihat Analisis dan penyelesaian kompatibilitas.
Validasi berbasis konsol. Untuk informasi selengkapnya, lihat (Opsional) Periksa kompatibilitas SQL.
Pilih solusi
Solusi migrasi | Keunggulan | Kekurangan | Skenario |
Migrasi berbasis konsol | Menyediakan antarmuka visual dan tidak memerlukan migrasi metadata manual. | Hanya mendukung migrasi penuh dan inkremental seluruh kluster. Anda tidak dapat memigrasikan database, tabel, atau subset data historis tertentu. | Migrasi seluruh kluster. |
Migrasi manual | Memberikan kontrol penuh atas database dan tabel mana yang akan dimigrasikan. | Memerlukan operasi kompleks dan migrasi metadata manual. |
|
Prosedur
Migrasi berbasis konsol
Catatan
Selama migrasi
Operasi merge dijeda untuk tabel yang sedang dimigrasikan di kluster tujuan, tetapi tidak di kluster yang dikelola sendiri.
CatatanJika migrasi berlangsung terlalu lama, metadata akan menumpuk secara berlebihan di kluster tujuan. Kami merekomendasikan agar tugas migrasi berjalan tidak lebih dari lima hari. Tugas yang melebihi durasi ini akan dibatalkan secara otomatis.
Kluster tujuan harus menggunakan kluster default. Jika kluster yang dikelola sendiri menggunakan nama berbeda, definisi kluster dalam tabel terdistribusi akan dikonversi secara otomatis ke default.
Konten migrasi yang didukung
Beberapa mesin tabel dikonversi selama migrasi. Untuk detail konversi mesin setelah migrasi, lihat tabel berikut.
Skema database: Tabel berikut mencantumkan mesin database yang didukung beserta aturan konversinya.
Nama mesin
Deskripsi konversi mesin
Atomic
Diganti dengan database Replicated
Replicated
Tidak berubah
Ordinary
Diganti dengan database Replicated
Skema tabel: Tabel berikut mencantumkan mesin tabel yang mendukung migrasi.
Nama mesin
Deskripsi konversi mesin
MaterializedView
Tidak berubah
View
GenerateRandom
Buffer
URL
Null
Merge
SharedMergeTree
SharedVersionedCollapsingMergeTree
SharedSummingMergeTree
SharedReplacingMergeTree
SharedAggregatingMergeTree
SharedCollapsingMergeTree
SharedGraphiteMergeTree
MergeTree
Akan diganti dengan SharedMergeTree
ReplicatedMergeTree
VersionedCollapsingMergeTree
Akan diganti dengan SharedVersionedCollapsingMergeTree
ReplicatedVersionedCollapsingMergeTree
SummingMergeTree
Akan diganti dengan SharedSummingMergeTree
ReplicatedSummingMergeTree
ReplacingMergeTree
Akan diganti dengan SharedReplacingMergeTree
ReplicatedReplacingMergeTree
AggregatingMergeTree
Akan diganti dengan SharedAggregatingMergeTree
ReplicatedAggregatingMergeTree
ReplicatedCollapsingMergeTree
Akan diganti dengan SharedCollapsingMergeTree
CollapsingMergeTree
GraphiteMergeTree
Akan diganti dengan SharedGraphiteMergeTree
ReplicatedGraphiteMergeTree
Data: Memigrasikan data secara inkremental dari tabel keluarga MergeTree.
Skema database dan tabel yang tercantum di atas dapat dimigrasikan secara normal. Untuk skema lainnya, tangani secara manual berdasarkan peringatan atau pesan error selama migrasi.
Jika data Anda tidak memenuhi kondisi di atas, pilih migrasi manual.
Dampak pada kluster
Kluster yang dikelola sendiri
Penggunaan CPU dan memori meningkat saat membaca data dari kluster yang dikelola sendiri.
Operasi DDL tidak diizinkan.
Kluster tujuan
Penggunaan CPU dan memori meningkat saat menulis data ke kluster tujuan.
Operasi DDL tidak diizinkan pada tabel yang sedang dimigrasikan. Tabel yang tidak terlibat dalam migrasi tidak terpengaruh.
Operasi merge dijeda untuk tabel yang sedang dimigrasikan. Tabel yang tidak terlibat dalam migrasi tetap melakukan merge.
Setelah migrasi selesai, kluster melakukan operasi merge secara intensif untuk beberapa waktu, meningkatkan penggunaan I/O dan berpotensi meningkatkan latensi permintaan bisnis. Kami merekomendasikan agar Anda menghitung durasi merge setelah migrasi dan merencanakan langkah mitigasi dampak latensi.
Langkah 1: Periksa kluster yang dikelola sendiri dan aktifkan tabel sistem
Sebelum migrasi data, modifikasi file config.xml berdasarkan apakah system.part_log dan system.query_log diaktifkan di kluster yang dikelola sendiri untuk mendukung migrasi inkremental.
Jika system.part_log dan system.query_log belum diaktifkan
Jika Anda belum mengaktifkan system.part_log dan system.query_log, tambahkan konfigurasi berikut ke file config.xml.
system.part_log
<part_log>
<database>system</database>
<table>part_log</table>
<partition_by>event_date</partition_by>
<order_by>event_time</order_by>
<ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</part_log>system.query_log
<query_log>
<database>system</database>
<table>query_log</table>
<partition_by>event_date</partition_by>
<order_by>event_time</order_by>
<ttl>event_date + INTERVAL 15 DAY DELETE</ttl>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>system.part_log dan system.query_log telah diaktifkan
Bandingkan konfigurasi
system.part_logdansystem.query_logdi file config.xml dengan konten berikut. Jika ada ketidaksesuaian, ubah konfigurasinya agar sesuai. Jika tidak, migrasi mungkin gagal atau berjalan lambat.system.part_log
<part_log> <database>system</database> <table>part_log</table> <partition_by>event_date</partition_by> <order_by>event_time</order_by> <ttl>event_date + INTERVAL 15 DAY DELETE</ttl> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </part_log>system.query_log
<query_log> <database>system</database> <table>query_log</table> <partition_by>event_date</partition_by> <order_by>event_time</order_by> <ttl>event_date + INTERVAL 15 DAY DELETE</ttl> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </query_log>Setelah mengubah konfigurasi, jalankan pernyataan
drop table system.part_logdandrop table system.query_log. Tabelsystem.part_logdansystem.query_logakan dibuat ulang secara otomatis saat Anda memasukkan data ke tabel bisnis.
Langkah 2: Konfigurasi kluster tujuan agar sesuai dengan versi kluster yang dikelola sendiri
Untuk memastikan kluster tujuan berperilaku semirip mungkin dengan kluster yang dikelola sendiri, hubungkan ke kluster tujuan dan atur parameter compatibility agar sesuai dengan versi kluster yang dikelola sendiri.
Mengatur compatibility ke versi yang lebih rendah akan menonaktifkan beberapa fitur baru, seperti ParallelReplica.
Contoh:
SELECT currentProfiles(); // Mendapatkan profil yang digunakan oleh pengguna
SELECT
profile_name,
setting_name,
value
FROM system.settings_profile_elements
WHERE (setting_name = 'compatibility') AND (profile_name = 'xxxx'); // Menanyakan pengaturan compatibility
ALTER PROFILE XXXX SETTINGS compatibility = '23.8'; // Mengubah profilLangkah 3: Buat tugas migrasi
Masuk ke Konsol ApsaraDB for ClickHouse. Pada halaman Clusters, pilih Enterprise Edition Clusters, lalu klik ID kluster yang dituju.
Pada panel navigasi kiri, pilih .
Klik Create Migration Task.
Pilih instans sumber dan tujuan.
Item konfigurasi
Deskripsi
Contoh
Task Name
Nama tugas hanya boleh berisi huruf dan angka. Nama bersifat tidak case-sensitive dan harus unik.
MigrationTask1229
Source Cluster Name
Jalankan
SELECT * FROM system.clusters;untuk mendapatkan nama kluster instans yang dikelola sendiri.default
VPC IP Address
Alamat IP dan port setiap shard di kluster, dipisahkan koma. Format:
IP:PORT,IP:PORT,....Jalankan pernyataan SQL berikut untuk mendapatkan alamat IP dan port kluster yang dikelola sendiri:
SELECT shard_num, replica_num, host_address as ip, port FROM system.clusters WHERE cluster = '<cluster_name>' and replica_num = 1;Parameter:
cluster_name: Nama kluster tujuan.
replica_num=1 memilih replika pertama. Anda juga dapat memilih replika lain atau memilih satu replika per shard secara manual.
PentingJangan gunakan nama domain VPC atau alamat SLB ClickHouse.
Jika pemetaan IP dan port diterapkan untuk Alibaba Cloud, konfigurasikan IP dan port yang dipetakan berdasarkan konektivitas jaringan.
192.168.0.5:9000,192.168.0.6:9000
Database Account
Akun database kluster yang dikelola sendiri.
test
Database Password
Password akun database untuk kluster yang dikelola sendiri.
test******
Source Instance Kernel Version
Klik Get Version.
22.8.5.29
Berdasarkan versi instans sumber, lakukan operasi yang sesuai:
Jika versi instans sumber 22.10 atau lebih baru, klik Next.
Jika versi instans sumber lebih lama dari 22.10, masukkan Destination Instance Information seperti diminta dan klik Next.
Jika pengambilan versi gagal, periksa kesalahan seperti informasi instans sumber salah atau masalah konektivitas jaringan. Perbaiki masalah tersebut dan klik Get Version lagi.
CatatanKarena ketidakcocokan parameter antara edisi komunitas lama dan Edisi Perusahaan, jika versi instans sumber lebih lama dari 22.10, Anda harus menggunakan sinkronisasi push dari sumber ke tujuan. Dalam kasus ini, Anda harus memetakan IP tujuan ke jaringan yang dikelola sendiri. Jika jaringan yang dikelola sendiri dan instans Edisi Perusahaan berada di VPC yang sama atau terhubung melalui peering VPC, Anda dapat langsung menggunakan alamat IP aslinya.
Periksa konektivitas dan konfigurasi.
Klik Start Check.
Selama pemeriksaan, klik ikon
di pojok kanan atas untuk melihat progres real-time.Setelah pemeriksaan selesai, lanjutkan berdasarkan hasilnya.
Pilih result level dan item pemeriksaan, lalu klik tombol
untuk melihat detail. Hasil diinterpretasikan sebagai berikut:Success: Jika semua pemeriksaan lolos, klik Next untuk melanjutkan.
Warning: Ini adalah masalah non-blocking. Pastikan apakah masalah tersebut memengaruhi bisnis atau migrasi Anda. Anda dapat mengabaikan peringatan atau memperbaiki masalah tersebut lalu klik Start Check lagi untuk memeriksa ulang.
Error: Ini adalah masalah blocking. Perbaiki error tersebut lalu klik Start Check lagi untuk memeriksa ulang.
Untuk pesan error dan solusinya, lihat FAQ.
Periksa skema database dan tabel.
Klik Start Check.
Selama pemeriksaan, klik ikon
di pojok kanan atas untuk melihat progres real-time.Setelah pemeriksaan selesai, lanjutkan berdasarkan hasilnya.
Untuk interpretasi hasil, lihat Langkah 5.
Migrasi skema database dan tabel.
Klik Start Migration.
Selama migrasi, klik ikon
di pojok kanan atas untuk melihat progres real-time.Setelah inspeksi selesai, Anda dapat melanjutkan ke langkah berikutnya berdasarkan hasil inspeksi.
Untuk interpretasi hasil, lihat Langkah 5.
(Opsional) Periksa kompatibilitas SQL.
Pemeriksaan kompatibilitas SQL memutar ulang pernyataan SQL dari instans yang dikelola sendiri di instans tujuan untuk memverifikasi kompatibilitas sintaksis lintas versi kernel. Putuskan apakah akan melakukan langkah ini berdasarkan kebutuhan Anda.
Untuk melewati, klik Skip.
Untuk melakukan pemeriksaan, pilih request replay time dan klik Start Check. Setelah pemeriksaan berhasil, klik Next. Untuk pemeriksaan yang gagal, lihat Langkah 5 untuk penyelesaian.
PentingPemeriksaan ini hanya memvalidasi kompatibilitas sintaksis dan tidak memerlukan data. Untuk menguji dengan data, migrasikan sebagian data terlebih dahulu pada langkah berikutnya.
False positive dapat terjadi karena ketidakcocokan versi client dengan instans tujuan. Validasi pernyataan SQL secara manual jika diperlukan.
Mulai sinkronisasi.
Klik Start Sync.
Selama sinkronisasi, klik ikon
di pojok kanan atas untuk melihat progres real-time.Saat proses mencapai Migrate Data, beralihlah ke tab Migrate Data dan klik tombol
untuk melihat Migration Progress dan estimated remaining time.PentingPantau Migration Progress secara ketat. Berdasarkan estimated remaining time, hentikan penulisan ke kluster yang dikelola sendiri dan tangani tabel mesin Kafka dan RabbitMQ.
Saat Migration Progress mencapai 100% dan Anda memastikan bahwa instans sumber telah menghentikan penulisan, klik Stop untuk mengakhiri migrasi dan melanjutkan.

Setelah sinkronisasi selesai, klik Completed.
PentingSetelah langkah "Start synchronization" selesai, tugas migrasi menjadi terkunci dan tidak dapat diubah. Gunakan tombol Previous, Next, atau Refresh untuk melihat hasil langkah.
Langkah 4: Migrasi data bisnis untuk tabel non-MergeTree
Selama migrasi, tabel non-MergeTree hanya mendukung migrasi skema (seperti tabel MySQL) atau tidak dimigrasikan sama sekali (seperti tabel Log). Setelah migrasi, beberapa tabel di kluster tujuan mungkin memiliki skema tetapi tidak memiliki data. Selesaikan migrasi data secara manual sebagai berikut:
Login ke kluster yang dikelola sendiri dan jalankan pernyataan berikut untuk mengidentifikasi tabel non-MergeTree yang memerlukan migrasi data:
SELECT `database` AS database_name, `name` AS table_name, `engine` FROM `system`.`tables` WHERE (`engine` NOT LIKE '%MergeTree%') AND (`engine` != 'Distributed') AND (`engine` != 'MaterializedView') AND (`engine` NOT IN ('Kafka', 'RabbitMQ')) AND (`database` NOT IN ('system', 'INFORMATION_SCHEMA', 'information_schema')) AND (`database` NOT IN ( SELECT `name` FROM `system`.`databases` WHERE `engine` IN ('MySQL', 'MaterializedMySQL', 'MaterializeMySQL', 'Lazy', 'PostgreSQL', 'MaterializedPostgreSQL', 'SQLite') ))Login ke kluster tujuan dan gunakan fungsi remote untuk migrasi data.
Migrasi manual
Migrasi data dari kluster ClickHouse yang dikelola sendiri ke ApsaraDB for ClickHouse Enterprise Edition
Di ApsaraDB for ClickHouse Enterprise Edition, terlepas dari apakah tabel sumber Anda di-sharding atau direplikasi, cukup buat tabel tujuan yang sesuai (abaikan parameter Engine karena sistem secara otomatis menggunakan mesin tabel SharedMergeTree). Kluster ApsaraDB for ClickHouse Enterprise Edition menangani skalabilitas vertikal dan horizontal secara otomatis. Anda tidak perlu mengelola implementasi replikasi atau sharding.
Ikhtisar
Prosedur migrasi data dari kluster ClickHouse yang dikelola sendiri ke kluster ApsaraDB for ClickHouse Enterprise Edition adalah sebagai berikut.
Tambahkan pengguna read-only ke kluster sumber.
Salin skema tabel sumber ke kluster tujuan.
Jika kluster sumber mendukung akses jaringan eksternal, tarik data dari kluster sumber ke kluster tujuan. Jika tidak, dorong data dari kluster sumber ke kluster tujuan.
(Opsional) Anda dapat menghapus alamat IP kluster sumber dari kluster tujuan.
Hapus pengguna read-only dari kluster sumber.
Prosedur
Lakukan operasi berikut pada kluster sumber (tabel sumber berisi data):
Tambahkan pengguna read-only untuk tabel db.table.
CREATE USER exporter IDENTIFIED WITH SHA256_PASSWORD BY 'password-here' SETTINGS readonly = 1;GRANT SELECT ON db.table TO exporter;Salin skema tabel sumber.
SELECT create_table_query FROM system.tables WHERE database = 'db' and table = 'table'
Lakukan operasi berikut pada kluster tujuan.
Buat database.
CREATE DATABASE dbBuat tabel tujuan menggunakan pernyataan
CREATE TABLEdari tabel sumber.CatatanSaat menjalankan pernyataan
CREATE TABLE, ubah ENGINE menjadi SharedMergeTree tetapi jangan sertakan parameter apa pun karena kluster ApsaraDB for ClickHouse Enterprise Edition selalu mereplikasi tabel dan menyediakan parameter yang benar. Pertahankan klausaORDER BY,PRIMARY KEY,PARTITION BY,SAMPLE BY,TTL, danSETTINGSuntuk memastikan tabel dibuat dengan benar di kluster tujuan ApsaraDB for ClickHouse Enterprise Edition.CREATE TABLE db.table ...Gunakan fungsi
Remoteuntuk menarik atau mendorong data.CatatanJika server ClickHouse sumber tidak dapat diakses dari jaringan eksternal, dorong data alih-alih menariknya karena fungsi
Remoteberfungsi untuk operasi SELECT maupun INSERT.Di kluster tujuan, gunakan fungsi
Remoteuntuk menarik data dari tabel sumber di kluster sumber.
INSERT INTO db.table SELECT * FROM remote('source-hostname:9000', db, table, 'exporter', 'password-here')Di kluster sumber, gunakan fungsi
Remoteuntuk mendorong data ke kluster tujuan.
CatatanUntuk mengizinkan fungsi
Remoteterhubung ke kluster ApsaraDB for ClickHouse Enterprise Edition Anda, tambahkan alamat IP kluster sumber ke daftar putih kluster tujuan. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih.INSERT INTO FUNCTION remote('target-hostname:9000', 'db.table', 'default', 'PASS') SELECT * FROM db.table
FAQ
Pesan error dan solusi selama pemeriksaan konektivitas dan konfigurasi
Pesan error | Makna | Solusi |
| Koneksi jaringan ke kluster yang dikelola sendiri timeout. | Atasi masalah jaringan berdasarkan pesan error. |
| Kluster yang dikonfigurasi saat pembuatan tugas migrasi tidak ada di kluster yang dikelola sendiri. | Tanyakan kluster yang tersedia di kluster yang dikelola sendiri menggunakan SQL dan perbarui konfigurasi tugas migrasi. |
| Satu atau beberapa tabel sistem berikut tidak ada di kluster yang dikelola sendiri: | Buat tabel sistem yang hilang di kluster yang dikelola sendiri. |
| Zona waktu kluster yang dikelola sendiri dan tujuan tidak cocok. | Ubah zona waktu agar sesuai. |
| Pengaturan compatibility kluster tujuan tidak sesuai dengan versi kluster yang dikelola sendiri. | Sesuaikan pengaturan compatibility kluster tujuan agar sesuai dengan versi kluster yang dikelola sendiri. Penting Mengatur compatibility ke versi yang lebih rendah akan menonaktifkan beberapa fitur baru, seperti ParallelReplica. |
Pesan error dan solusi selama pemeriksaan skema
Pesan error | Makna | Solusi |
| Tabel database tidak konsisten di seluruh node di kluster yang dikelola sendiri. | Periksa dan selesaikan ketidaksesuaian di seluruh node di kluster yang dikelola sendiri. |
| Password tabel disembunyikan. | Atur display_secrets_in_show_and_select=1 dan restart. Catatan: Ini memerlukan akun memiliki izin displaySecretsInShowAndSelect. |
| Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi. | Pertimbangkan untuk beralih ke mesin database yang didukung tujuan. |
| Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi. | Sistem secara otomatis menggantinya dengan database Replicated untuk melewati exception migrasi. |
| Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi. | Gunakan DTS (Data Transmission Service) untuk sinkronisasi atau buat database dengan nama yang sama untuk melewati exception migrasi. |
| Mesin database di kluster yang dikelola sendiri tidak mendukung migrasi. | Ia diabaikan secara otomatis selama migrasi. |
| ApsaraDB for ClickHouse Enterprise Edition tidak merekomendasikan penggunaan tabel terdistribusi. | Hapus tabel terdistribusi di kluster yang dikelola sendiri dan tanyakan tabel MergeTree dasarnya secara langsung setelah migrasi. |
| Mesin eksternal direferensikan. Masalah akses dapat terjadi, tetapi tidak dijamin. | Konfirmasi apakah alamat IP yang direferensikan dapat diakses dari instans tujuan. Jika tidak, tetapkan konektivitas jaringan dan tambahkan IP ke daftar putih. |
| Untuk beberapa mesin, hanya skema tabel yang dimigrasikan; migrasi data tidak didukung. | Migrasikan data secara manual menggunakan fungsi remote atau metode lain. |
| Migrasi data tidak didukung untuk beberapa mesin. | Buat tabel MergeTree dengan nama yang sama di kluster tujuan dan migrasikan data secara manual. |
| Migrasi data tidak didukung untuk beberapa mesin. | Lihat Langkah 4 dalam prosedur. |
| Selama pemeriksaan skema, tabel yang sesuai di instans tujuan harus kosong. | Hapus data dari tabel yang sesuai di instans tujuan. |
| Hanya fungsi yang ditentukan pengguna ( | Buat fungsi yang sesuai secara manual di instans tujuan. |
Lainnya
Untuk masalah lain selama migrasi dan solusinya, lihat FAQ.
