PolarDB for MySQL menyediakan fitur Fast Import yang memungkinkan Anda melakukan kueri terhadap seluruh data database dan tabel dalam tugas pemulihan hanya dalam waktu sekitar 5 hingga 10 menit setelah mengirimkan tugas pemulihan—tanpa perlu menunggu hingga tugas tersebut selesai, terlepas dari ukuran data yang dipulihkan.
Ikhtisar skenario
Fitur Fast Import kompatibel dengan proses pemulihan database dan tabel baru, dan operasi kueri dapat dilakukan secara bersamaan dengan tugas pemulihan.
Fitur Fast Import mempercepat dua skenario berikut:
-
Ketika data atau tabel tidak sengaja dihapus dan titik waktu spesifik tidak dapat ditentukan, tugas pemulihan tradisional mungkin memerlukan waktu lama untuk diselesaikan. Dengan Fast Import, Anda dapat segera melakukan kueri dan memverifikasi data tanpa menunggu tugas pemulihan selesai.
-
Ketika sejumlah kecil data tidak sengaja dihapus tetapi tabelnya besar, Fast Import memungkinkan Anda menggunakan
INSERT ... SELECT ...untuk dengan cepat mengekstrak data yang diperlukan dari tabel dalam tugas pemulihan dan memasukkannya ke dalam tabel tempat data dihapus, sehingga meningkatkan efisiensi operasional.
Persyaratan versi
Versi engine database yang didukung adalah MySQL 8.0.1, dengan versi minor minimal 8.0.1.1.49. Anda dapat memastikan versi kluster Anda dengan menanyakan nomor versi.
Perhatian
Fitur ini saat ini berada dalam fase rilis canary. Untuk menggunakannya, Anda dapat menghubungi kami untuk bergabung dalam daftar putih guna mengaktifkannya.
-
Hanya konfigurasi file-per-table (konfigurasi default) yang didukung untuk tabel non-terkompresi dan non-terenkripsi. Data dapat dikueri selama eksekusi tugas pemulihan.
-
Jika jumlah tabel dalam tugas pemulihan kurang dari 1.000, sistem secara default mengaktifkan fitur
Fast Import, sehingga Anda dapat melakukan kueri terhadap seluruh data selama proses pemulihan.CatatanJika jumlah tugas pemulihan melebihi 1.000, sistem tidak mengaktifkan fitur
Fast Import. Alur manajemen tugas secara otomatis menentukan apakah fiturFast Importakan diaktifkan berdasarkan tugas yang Anda kirimkan. -
Operasi kueri hanya didukung pada node read/write (RW) dan node read-only (RO). Jika terdapat node read-only (RO) penyimpanan kolom, Anda dapat menggunakan sintaks HINT untuk memaksa mengarahkan kueri ke node read/write (RW) atau node read-only (RO) penyimpanan baris. Jika tidak, data mungkin tidak dikembalikan.
-
Saat sumber daya
buffer poolmencukupi, akses ke tabel dalam status pemulihan memberikan efisiensi yang setara dengan akses ke tabel normal. Namun, dalam skenario beban kerja tinggi, efisiensi akses ke tabel dalam status pemulihan dibatasi untuk mengurangi dampak terhadap operasi bisnis normal. -
Sebelum tugas pemulihan selesai, tabel target untuk pemulihan hanya dapat diakses dalam mode read-only.
Petunjuk penggunaan
Kirimkan tugas pemulihan database dan tabel
Setelah mengirimkan tugas pemulihan database dan tabel, Anda dapat membuka halaman detail tugas melalui tautan detail di pojok kanan atas halaman.
Tugas pemulihan database dan tabel terdiri dari enam langkah:
-
Inisialisasi tugas
-
Pemulihan penuh pada node temporary
-
Pemulihan inkremental pada node temporary (jika diperlukan)
-
Pra-pemrosesan pemulihan database dan tabel
-
Pemulihan database dan tabel
-
Selesaikan tugas dan bebaskan sumber daya
Di halaman detail tugas, Anda dapat melihat progres real-time tugas tersebut. Setelah Langkah 4 selesai, Anda dapat memastikan bahwa tugas pemulihan telah membuat database atau tabel target dengan menjalankan pernyataan seperti show databases atau show tables. Pada tahap ini, Anda dapat melakukan kueri terhadap seluruh data database atau tabel target.
Akses cepat read-only
Anda dapat melakukan kueri terhadap tabel information_schema.fast_import_tablespaces untuk mendapatkan informasi tentang semua tabel yang mendukung akses read-only cepat dalam tugas pemulihan saat ini.
Tabel yang sedang diimpor dapat diakses dalam mode read-only cepat, tetapi nama tabel spesifik tidak ditampilkan dalam hasil kueri berikut. Anda dapat menjalankan perintah SHOW PROCESSLIST untuk melihat pernyataan SQL yang mengandung dbms_rman.import guna memperoleh nama tabel yang sedang dipulihkan.
SELECT * FROM information_schema.fast_import_tablespaces;
-
Tabel dalam status pemulihan dapat diakses dalam mode read-only dengan data lengkap.
| 106 | root | 127.0.0.1:49055 | NULL | Sleep | 13 | | NULL | | 146 | xxx | xxx | NULL | Sleep | 43 | | NULL | | 366 | xxx | xxx | NULL | Polar Log Dump | 0 | Reading log from innodb | NULL | | 368 | xxx | xxx | NULL | Polar Log Ack | 0 | Receiving from client | NULL | | 788 | xxx | xxx | NULL | Sleep | 295 | | NULL | | xxx | xxx | xxx | NULL | Query | 332 | altering table | /* rds internal mark */ call dbms_rman.import('test', 'sbtest1_bk03211652' | | 216448 | xxx | xxx | information_schema | Sleep | 7 | | NULL | | 216915 | xxx | xxx | NULL | Sleep | 0 | | NULL | | 216916 | xxx | xxx | NULL | Sleep | 0 | | NULL | | 536879884 | xxx | | test | Query | 0 | starting | show processlist | 31 rows in set (0.00 sec) mysql> show tables; +----------------------+ | Tables_in_test | +----------------------+ | sbtest1 | | sbtest1_bk03211652 | | sbtest2 | | sbtest2_bk03211652 | +----------------------+ 4 rows in set (0.00 sec) mysql> select count(*) from sbtest1; +-----------+ | count(*) | +-----------+ | 100000000 | +-----------+ 1 row in set (4.64 sec) mysql> select count(*) from sbtest1_bk03211652; +-----------+ | count(*) | +-----------+ | 100000000 | +-----------+ 1 row in set (48.21 sec) -
Tabel lain yang diaktifkan akses cepatnya dapat diakses dalam mode read-only dengan data lengkap.
mysql> select * from information_schema.fast_import_tablespaces; +----------------+-------------------------+------------------------------------------------------------------+ | LOCAL_SPACE_ID | SPACE_NAME | REMOTE_DATA_PATH | +----------------+-------------------------+------------------------------------------------------------------+ | 18 | test/sbtest2_bk03211652 | xxx/test/sbtest2_bk03211652.ibd | +----------------+-------------------------+------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show tables; +------------------------+ | Tables_in_test | +------------------------+ | sbtest1 | | sbtest1_bk03211652 | | sbtest2 | | sbtest2_bk03211652 | +------------------------+ 4 rows in set (0.00 sec) mysql> select count(*) from sbtest2_bk03211652; +----------+ | count(*) | +----------+ | 1000 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from sbtest2; +----------+ | count(*) | +----------+ | 1000 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from sbtest1; +-----------+ | count(*) | +-----------+ | 100000000 | +-----------+ 1 row in set (19.39 sec) mysql> select count(*) from sbtest1_bk03211652; +-----------+ | count(*) | +-----------+ | 100000000 | +-----------+ 1 row in set (4.39 sec) mysql> show processlist;