全部产品
Search
文档中心

ApsaraDB for SelectDB:Beberapa kluster komputasi

更新时间:Jul 30, 2025

Sebuah instans ApsaraDB for SelectDB dapat mencakup beberapa kluster komputasi. Kluster ini digunakan untuk memproses beban kerja yang berbeda, seperti pemisahan pembacaan dan penulisan data atau pemisahan data online dari data offline. Pendekatan ini memungkinkan isolasi beban kerja antar sistem bisnis yang berbeda. Topik ini menjelaskan cara menggunakan beberapa kluster komputasi untuk mengisolasi sumber daya komputasi dalam sebuah instans ApsaraDB for SelectDB.

Cara kerjanya

ApsaraDB for SelectDB menggunakan arsitektur cloud-native dengan pemisahan komputasi dan penyimpanan. Dalam arsitektur ini, sumber daya komputasi lapisan atas berbagi set data yang sama. ApsaraDB for SelectDB mendukung penggunaan beberapa kluster komputasi berdasarkan arsitektur ini. Sebuah instans dapat mencakup beberapa kluster komputasi yang berbagi penyimpanan data dasar.

Kluster komputasi berfungsi sebagai kelompok sumber daya komputasi atau antrian komputasi dalam sistem terdistribusi. Kluster ini mengoordinasikan satu atau lebih unit komputasi untuk menyelesaikan tugas komputasi. Dalam sebuah instans ApsaraDB for SelectDB, sumber daya komputasi dari beberapa kluster komputasi diisolasi secara fisik. Anda dapat menggunakan kluster ini untuk memproses beban kerja yang berbeda, seperti pemisahan pembacaan dan penulisan data atau pemisahan data online dari data offline. Dengan cara ini, Anda dapat mengisolasi beban kerja dan mencegah saling ganggu antar sistem bisnis yang berbeda.

Contoh

Dalam contoh ini, sebuah instans mencakup beberapa kluster komputasi, serta dua akun, test_01 dan test_02, dibuat. Akun test_01 digunakan untuk memproses permintaan komputasi Sistem Bisnis A dan diberikan izin untuk mengakses kluster cluster_01. Akun test_02 digunakan untuk memproses permintaan komputasi Sistem Bisnis B dan diberikan izin untuk mengakses kluster cluster_02. Kedua akun tersebut dapat mengakses semua data dalam instans.

  1. Hubungkan ke instans menggunakan akun admin dan inisialisasi akun test_01 dan test_02. Contoh kode:

    mysql> CREATE USER test_01 IDENTIFIED BY 'testPassword';
    Query OK, 0 rows affected (0.06 sec)
    
    mysql> CREATE USER test_02 IDENTIFIED BY 'testPassword';
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> GRANT ALL ON *.* TO test_01;
    Query OK, 0 rows affected (0.07 sec)
    
    mysql> GRANT ALL ON *.* TO test_02;
    Query OK, 0 rows affected (0.05 sec)
    
    mysql> GRANT USAGE_PRIV ON CLUSTER cluster_01 TO test_01;
    Query OK, 0 rows affected (0.05 sec)
    
    mysql> GRANT USAGE_PRIV ON CLUSTER cluster_02 TO test_02;
    Query OK, 0 rows affected (0.04 sec)
  2. Kueri kluster yang tersedia dalam akun admin. Contoh kode:

    mysql> SHOW clusters;
    +------------+------------+-------+
    | cluster    | is_current | users |
    +------------+------------+-------+
    | cluster_01 | FALSE      |       |
    | cluster_02 | TRUE       |       |
    +------------+------------+-------+
    2 rows in set (0.04 sec)

    Hasilnya menunjukkan bahwa akun admin memiliki izin untuk mengakses dua kluster dan mengakses kluster cluster_02 secara default.

  3. Hubungkan ke instans menggunakan akun test_01 dan kueri kluster yang tersedia. Contoh kode:

    mysql> SHOW clusters;
    +------------+------------+-------+
    | cluster    | is_current | users |
    +------------+------------+-------+
    | cluster_01 | TRUE       |       |
    +------------+------------+-------+
    1 row in set (0.03 sec)

    Hasilnya menunjukkan bahwa akun test_01 hanya diizinkan untuk mengakses kluster cluster_01.

  4. Masukkan data uji menggunakan akun test_01. Contoh kode:

    mysql> CREATE TABLE golds_log
    (
        user_id  bigint,
        accounts string,
        change_type string,
        golds    bigint,
        log_time int
    ) DISTRIBUTED BY HASH(`user_id`) BUCKETS 3;
    Query OK, 0 rows affected (0.06 sec)
    
    mysql> INSERT INTO golds_log VALUES
        -> (3645356,'wds7654321(4171752)','swim',1700,152607152),
        -> (2016869,'dqyx123456789(2376699)','kebisingan',1140,152607152),
        -> (3630468,'dke3776611(4156064)','white',1200,152602752);
    Query OK, 3 rows affected (0.20 sec)
    {'label':'insert_9707a9905aab4805_b8b9d28aadcd96e6', 'status':'VISIBLE', 'txnId':'15313504260617216'}
  5. Hubungkan ke instans menggunakan akun test_02 dan kueri kluster yang tersedia. Contoh kode:

    mysql> SHOW clusters;
    +------------+------------+-------+
    | cluster    | is_current | users |
    +------------+------------+-------+
    | cluster_02 | TRUE       |       |
    +------------+------------+-------+
    1 row in set (0.04 sec)

    Hasilnya menunjukkan bahwa akun test_02 hanya diizinkan untuk mengakses kluster cluster_02.

  6. Kueri data uji menggunakan akun test_02. Contoh kode:

    mysql> SELECT * FROM golds_log;
    +---------+------------------------+------------------+-------+-----------+
    | user_id | accounts               | change_type      | golds | log_time  |
    +---------+------------------------+------------------+-------+-----------+
    | 3630468 | dke3776611(4156064)    | kebisingan       |  1200 | 152602752 |
    | 2016869 | dqyx123456789(2376699) | whitewo          |  1140 | 152607152 |
    | 3645356 | wds7654321(4171752)    | swim             |  1700 | 152607152 |
    +---------+------------------------+------------------+-------+-----------+
    3 rows in set (0.13 sec)

    Hasilnya menunjukkan bahwa kluster yang berbeda berbagi data dalam instans yang sama.

  7. Hubungkan ke instans menggunakan akun admin dan buat akun test_03. Jangan berikan izin akses kluster kepada akun test_03. Contoh kode:

    mysql> CREATE USER test_03 IDENTIFIED BY 'testPassword';
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> GRANT ALL ON *.* TO test_03;
    Query OK, 0 rows affected (0.04 sec)
  8. Hubungkan ke instans menggunakan akun test_03 dan kueri data uji. Dalam hal ini, kesalahan dilaporkan karena akun test_03 tidak memiliki izin untuk mengakses kluster dalam instans. Contoh kode:

    mysql> SELECT * FROM golds_log;
    ERROR 1105 (HY000): errCode = 2, detailMessage = 90363 have no queryable replicas. err: 90364's backend -1 does not exist or not alive, or you may not have permission to access the current cluster, clusterName=null