

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

# Tugas umum DBA untuk instans DB MySQL
<a name="Appendix.MySQL.CommonDBATasks"></a>

Dalam konten berikut, Anda dapat menemukan deskripsi implementasi khusus Amazon RDS dari beberapa tugas DBA umum untuk instans DB yang menjalankan mesin database MySQL. Untuk memberikan pengalaman layanan terkelola, Amazon RDS tidak memberikan akses shell ke instans DB. Selain itu, Amazon RDS juga membatasi akses ke prosedur dan tabel sistem tertentu yang memerlukan hak istimewa tingkat lanjut. 

Untuk informasi tentang cara bekerja dengan file log MySQL di Amazon RDS, lihat [File log ](USER_LogAccess.Concepts.MySQL.md).

## Memahami pengguna yang telah ditentukan
<a name="Appendix.MySQL.CommonDBATasks.users"></a>

Amazon RDS secara otomatis membuat beberapa pengguna yang telah ditentukan dengan RDS baru untuk instans MySQL DB. Pengguna yang telah ditentukan sebelumnya dan hak istimewa mereka tidak dapat diubah. Anda tidak dapat menghapus, mengganti nama, atau memodifikasi hak istimewa untuk pengguna yang telah ditentukan ini. Mencoba untuk melakukannya akan mengakibatkan kesalahan. 
+ **rdsadmin** — Pengguna yang dibuat untuk menangani banyak tugas manajemen yang administrator dengan `superuser` hak istimewa akan melakukan pada database MySQL mandiri. Pengguna ini digunakan secara internal oleh RDS untuk MySQL untuk banyak tugas manajemen. 
+ **rdsrepladmin** — Pengguna yang digunakan secara internal oleh Amazon RDS untuk mendukung aktivitas replikasi pada RDS untuk instans dan cluster MySQL DB. 

Untuk informasi tentang tugas DBA umum lainnya, lihat topik berikut.

**Topics**
+ [Memahami pengguna yang telah ditentukan](#Appendix.MySQL.CommonDBATasks.users)
+ [Model hak istimewa berbasis peran untuk My RDS SQL](Appendix.MySQL.CommonDBATasks.privilege-model.md)
+ [Hak istimewa dinamis untuk RDS untuk MySQL](Appendix.MySQL.CommonDBATasks.dynamic-privileges.md)
+ [Mengakhiri sesi atau kueri RDS untuk My SQL](Appendix.MySQL.CommonDBATasks.End.md)
+ [Melewatkan kesalahan replikasi saat ini untuk RDS untuk MySQL](Appendix.MySQL.CommonDBATasks.SkipError.md)
+ [Bekerja dengan ruang meja InnoDB untuk meningkatkan waktu pemulihan kerusakan untuk RDS untuk MySQL](Appendix.MySQL.CommonDBATasks.Tables.md)
+ [Mengelola Riwayat Status Global untuk RDS untuk MySQL](Appendix.MySQL.CommonDBATasks.GoSH.md)
+ [Mengkonfigurasi ukuran kolam buffer dan mengulang kapasitas log di MySQL 8.4](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)

# Model hak istimewa berbasis peran untuk My RDS SQL
<a name="Appendix.MySQL.CommonDBATasks.privilege-model"></a>

Dimulai dengan RDS untuk SQL versi Saya 8.0.36, Anda tidak dapat memodifikasi tabel di `mysql` database secara langsung. Secara khusus, Anda tidak dapat membuat pengguna database dengan melakukan operasi bahasa manipulasi data (DML) pada `grant` tabel. Sebagai gantinya, Anda menggunakan pernyataan SQL manajemen akun Saya seperti`CREATE USER`,`GRANT`, dan `REVOKE` untuk memberikan hak istimewa berbasis peran kepada pengguna. Anda juga tidak dapat membuat jenis objek lain seperti prosedur tersimpan dalam basis data `mysql`. Anda masih dapat mengueri tabel `mysql`. Jika Anda menggunakan replikasi log biner, perubahan yang dilakukan langsung ke `mysql` tabel pada instans DB sumber tidak direplikasi ke cluster target.

Dalam beberapa kasus, aplikasi Anda mungkin menggunakan pintasan untuk membuat pengguna atau objek lain dengan melakukan penyisipan ke dalam tabel `mysql`. Jika demikian, ubah kode aplikasi Anda untuk menggunakan pernyataan yang sesuai seperti `CREATE USER`.

Untuk mengekspor metadata bagi pengguna database selama migrasi dari SQL database Saya eksternal, gunakan salah satu metode berikut:
+ Gunakan utilitas dump instance My SQL Shell dengan filter untuk mengecualikan pengguna, peran, dan hibah. Contoh berikut menunjukkan sintaks perintah untuk digunakan. Pastikan `outputUrl` itu kosong.

  ```
  mysqlsh user@host -- util.dumpInstance(outputUrl,{excludeSchemas:['mysql'],users: true})
  ```

  Untuk informasi selengkapnya, lihat [Instance Dump Utility, Schema Dump Utility, dan Table Dump Utility](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html) di Manual Referensi Saya. SQL
+ Gunakan utilitas `mysqlpump` klien. Contoh ini mencakup semua tabel kecuali untuk tabel dalam database `mysql` sistem. Ini juga mencakup `CREATE USER` dan `GRANT` pernyataan untuk mereproduksi semua SQL pengguna Saya dalam database yang dimigrasi.

  ```
  mysqlpump --exclude-databases=mysql --users
  ```

  Utilitas `mysqlpump` klien tidak lagi tersedia dengan My SQL 8.4. Sebaliknya, gunakan `mysqldump`.

Untuk menyederhanakan pengelolaan izin bagi banyak pengguna atau aplikasi, Anda dapat menggunakan pernyataan `CREATE ROLE` untuk membuat peran yang memiliki serangkaian izin. Kemudian, Anda dapat menggunakan pernyataan `GRANT` dan `SET ROLE` serta fungsi `current_role` untuk menetapkan peran ke pengguna atau aplikasi, mengganti peran saat ini, dan memeriksa peran mana yang berlaku. Untuk informasi selengkapnya tentang sistem izin berbasis peran di My SQL 8.0, lihat [Menggunakan Peran](https://dev.mysql.com/doc/refman/8.0/en/roles.html) di Manual Referensi SayaSQL.

**penting**  
Kami sangat menyarankan agar Anda tidak menggunakan pengguna master secara langsung di aplikasi Anda. Sebagai gantinya, ikuti praktik terbaik menggunakan pengguna basis data yang dibuat dengan hak akses paling rendah yang diperlukan untuk aplikasi Anda.

Dimulai dengan versi 8.0.36, RDS untuk My SQL termasuk peran khusus yang memiliki semua hak istimewa berikut. Peran ini bernama `rds_superuser_role`. Pengguna administratif utama untuk setiap instans DB sudah memiliki peran ini diberikan. Peran `rds_superuser_role` mencakup hak akses berikut untuk semua objek basis data:
+  `ALTER` 
+  `APPLICATION_PASSWORD_ADMIN` 
+  `ALTER ROUTINE` 
+  `CREATE` 
+  `CREATE ROLE` 
+  `CREATE ROUTINE` 
+  `CREATE TEMPORARY TABLES` 
+  `CREATE USER` 
+  `CREATE VIEW` 
+  `DELETE` 
+  `DROP` 
+  `DROP ROLE` 
+  `EVENT` 
+  `EXECUTE` 
+  `INDEX` 
+  `INSERT` 
+  `LOCK TABLES` 
+  `PROCESS` 
+  `REFERENCES` 
+  `RELOAD` 
+  `REPLICATION CLIENT` 
+  `REPLICATION SLAVE` 
+  `ROLE_ADMIN` 
+  `SET_USER_ID` 
+  `SELECT` 
+  `SHOW DATABASES` 
+  `SHOW VIEW` 
+  `TRIGGER` 
+  `UPDATE` 
+  `XA_RECOVER_ADMIN`

 Definisi peran juga mencakup `WITH GRANT OPTION` sehingga pengguna administratif dapat memberikan peran tersebut kepada pengguna lain. Secara khusus, administrator harus memberikan hak istimewa apa pun yang diperlukan untuk melakukan replikasi log biner dengan SQL klaster Saya sebagai target.

**Tip**  
 Untuk melihat detail lengkap izin, gunakan pernyataan berikut.  

```
SHOW GRANTS FOR rds_superuser_role@'%';
```

 Saat Anda memberikan akses dengan menggunakan peran RDS untuk SQL versi Saya 8.0.36 dan yang lebih tinggi, Anda juga mengaktifkan peran dengan menggunakan pernyataan `SET ROLE role_name` atau`SET ROLE ALL`. Contoh berikut menunjukkan caranya. Ganti nama peran yang sesuai untuk `CUSTOM_ROLE`.

```
# Grant role to user
mysql> GRANT CUSTOM_ROLE TO 'user'@'domain-or-ip-address'

# Check the current roles for your user. In this case, the CUSTOM_ROLE role has not been activated.
# Only the rds_superuser_role is currently in effect.
mysql> SELECT CURRENT_ROLE();
+--------------------------+
| CURRENT_ROLE()           |
+--------------------------+
| `rds_superuser_role`@`%` |
+--------------------------+
1 row in set (0.00 sec)

# Activate all roles associated with this user using SET ROLE.
# You can activate specific roles or all roles.
# In this case, the user only has 2 roles, so we specify ALL.
mysql> SET ROLE ALL;
Query OK, 0 rows affected (0.00 sec)

# Verify role is now active
mysql> SELECT CURRENT_ROLE();
+--------------------------------------------------+
| CURRENT_ROLE()                                   |
+--------------------------------------------------+
| `CUSTOM_ROLE`@`%`,`rds_superuser_role`@`%` |
+--------------------------------------------------+
```

# Hak istimewa dinamis untuk RDS untuk MySQL
<a name="Appendix.MySQL.CommonDBATasks.dynamic-privileges"></a>

Hak istimewa dinamis adalah hak istimewa MySQL yang dapat Anda berikan secara eksplisit dengan menggunakan pernyataan tersebut. `GRANT` Bergantung pada versi RDS untuk MySQL Anda, RDS memungkinkan Anda untuk memberikan hanya hak istimewa dinamis tertentu. RDS melarang beberapa hak istimewa ini karena dapat mengganggu operasi database tertentu, seperti replikasi dan pencadangan.

Tabel berikut menunjukkan hak istimewa mana yang dapat Anda berikan untuk versi MySQL yang berbeda. Jika Anda memutakhirkan dari versi MySQL yang lebih rendah dari 8.0.36 ke versi 8.0.36 atau lebih tinggi, Anda mungkin harus memperbarui kode aplikasi Anda jika pemberian hak istimewa tertentu tidak lagi diizinkan.


| Keistimewaan | MySQL 8.0.35 dan lebih rendah | MySQL 8.0.36 dan versi minor yang lebih tinggi | MySQL 8.4.3 dan lebih tinggi | 
| --- | --- | --- | --- | 
|  [ALLOW\$1NONEXISTENT\$1DEFINER](https://dev.mysql.com/doc/refman/8.4/en/privileges-provided.html#priv_allow-nonexistent-definer)   |  Tidak tersedia  |  Tidak tersedia  |  Dilarang  | 
|  [APPLICATION\$1PASSWORD\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_application-password-admin)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [AUDIT\$1ABORT\$1EXEMPT](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_audit-abort-exempt)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [AUDIT\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_audit-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [OTENTIKASI\$1POLICY\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_authentication-policy-admin)  |  Diizinkan  |  Dilarang  | Dilarang | 
|  [BACKUP\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_backup-admin)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [BINLOG\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_binlog-admin)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [BINLOG\$1ENCRYPTION\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_binlog-encryption-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [KLONE\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_clone-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [CONNECTION\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_connection-admin)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [ENCRYPTION\$1KEY\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_encryption-key-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [FIREWALL\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_firewall-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [FIREWALL\$1EXEMPT](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_firewall-exempt)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [FIREWALL\$1PENGGUNA](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_firewall-user)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [FLUSH\$1OPTIMIZER\$1COSTS](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_flush-optimizer-costs)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [FLUSH\$1PRIVILEGES](https://dev.mysql.com/doc/refman/8.4/en/privileges-provided.html#priv_flush-privileges)  |  Tidak tersedia  |  Tidak tersedia  |  Diizinkan  | 
|  [FLUSH\$1STATUS](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_flush-status)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [FLUSH\$1TABLES](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_flush-tables)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [FLUSH\$1USER\$1RESOURCES](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_flush-user-resources)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [GROUP\$1REPLICATION\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_group-replication-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [GROUP\$1REPLICATION\$1STREAM](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_group-replication-stream)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [INNODB\$1REDO\$1LOG\$1ARCHIVE](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_innodb-redo-log-archive)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [INNODB\$1REDO\$1LOG\$1ENABLE](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_innodb-redo-log-enable)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [MASKING\$1DICTIONARIES\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_masking-dictionaries-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [NDB\$1STORED\$1USER](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_ndb-stored-user)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [OPTIMIZE\$1LOCAL\$1TABLE](https://dev.mysql.com/doc/refman/8.4/en/privileges-provided.html#priv_optimize-local-table)  |  Tidak tersedia  |  Tidak tersedia  |  Dilarang  | 
|  [PASSWORDLESS\$1USER\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_passwordless-user-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [PERSIST\$1RO\$1VARIABLES\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_persist-ro-variables-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [REPLIKASI\$1APPLIER](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_replication-applier)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [REPLIKASI\$1SLAVE\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_replication-slave-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [SUMBER DAYA\$1GROUP\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_resource-group-admin)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [RESOURCE\$1GROUP\$1USER](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_resource-group-user)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [PERAN\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_role-admin)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [SENSITIVE\$1VARIABLES\$1OBSERVER](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_sensitive-variables-observer)  |  Diizinkan  |  Diizinkan  | Diizinkan | 
|  [SERVICE\$1CONNECTION\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_service-connection-admin)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [SESSION\$1VARIABLES\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_session-variables-admin)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [SET\$1ANY\$1DEFINIER](https://dev.mysql.com/doc/refman/8.4/en/privileges-provided.html#priv_set-any-definer)  |  Tidak tersedia  |  Tidak tersedia  |  Diizinkan  | 
|  [SET\$1USER\$1ID](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_set-user-id)  |  Diizinkan  |  Diizinkan  |  Tidak tersedia  | 
|  [SHOW\$1RUTINITAS](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_show-routine)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 
|  [SKIP\$1QUERY\$1REWRITE](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_skip-query-rewrite)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [SYSTEM\$1USER](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_system-user)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [SYSTEM\$1VARIABLES\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_system-variables-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [TABLE\$1ENCRYPTION\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_table-encryption-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [TELEMETRY\$1LOG\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_telemetry-log-admin)  |  Diizinkan  |  Dilarang  |  Dilarang  | 
|  [TP\$1CONNECTION\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_tp-connection-admin)  |  Dilarang  |  Dilarang  | Dilarang | 
|  [TRANSAKSI\$1GTID\$1TAG](https://dev.mysql.com/doc/refman/8.4/en/privileges-provided.html#priv_transaction-gtid-tag)   |  Tidak tersedia  |  Tidak tersedia  | Dilarang | 
|  [VERSI\$1TOKEN\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_version-token-admin)  |  Dilarang  |  Dilarang  |  Dilarang  | 
|  [XA\$1RECOVER\$1ADMIN](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_xa-recover-admin)  |  Diizinkan  |  Diizinkan  |  Diizinkan  | 

# Mengakhiri sesi atau kueri RDS untuk My SQL
<a name="Appendix.MySQL.CommonDBATasks.End"></a>

Anda dapat mengakhiri sesi atau kueri pengguna di instans DB dengan menggunakan perintah `rds_kill` dan `rds_kill_query`. Pertama sambungkan ke instans My SQL DB Anda, lalu keluarkan perintah yang sesuai seperti yang ditunjukkan berikut. Untuk informasi selengkapnya, lihat [Menghubungkan ke instans MySQL DB Anda](USER_ConnectToInstance.md). 

```
CALL mysql.rds_kill(thread-ID)
CALL mysql.rds_kill_query(thread-ID)
```

Misalnya, untuk mengakhiri sesi yang berjalan di thread 99, ketikkan hal berikut: 

```
CALL mysql.rds_kill(99); 
```

Untuk mengakhiri kueri yang sedang berjalan pada thread 99, ketikkan hal berikut: 

```
CALL mysql.rds_kill_query(99); 
```

# Melewatkan kesalahan replikasi saat ini untuk RDS untuk MySQL
<a name="Appendix.MySQL.CommonDBATasks.SkipError"></a>

Anda dapat melewati kesalahan pada replika baca jika kesalahan tersebut menyebabkan replika baca Anda berhenti merespons dan kesalahan tersebut tidak memengaruhi integritas data Anda. 

**catatan**  
Pertama, pastikan bahwa kesalahan tersebut dapat dilewati dengan aman. Di utilitas MySQL, hubungkan ke replika baca dan jalankan perintah MySQL berikut:   

```
SHOW REPLICA STATUS\G 
```
Untuk informasi tentang nilai yang dikembalikan, lihat [dokumentasi MySQL](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html).  
Versi MySQL sebelumnya menggunakan `SHOW SLAVE STATUS`, bukan `SHOW REPLICA STATUS`. Jika Anda menggunakan versi MySQL sebelum 8.0.23, gunakan `SHOW SLAVE STATUS`. 

Anda dapat melewati kesalahan pada replika baca dengan cara berikut.

**Topics**
+ [Memanggil prosedur mysql.rds\$1skip\$1repl\$1error](#Appendix.MySQL.CommonDBATasks.SkipError.procedure)
+ [Mengatur parameter slave\$1skip\$1errors](#Appendix.MySQL.CommonDBATasks.SkipError.parameter)

## Memanggil prosedur mysql.rds\$1skip\$1repl\$1error
<a name="Appendix.MySQL.CommonDBATasks.SkipError.procedure"></a>

Amazon RDS menyediakan prosedur tersimpan yang dapat Anda panggil untuk melewati kesalahan pada replika baca Anda. Pertama, hubungkan ke replika baca Anda, lalu jalankan perintah yang sesuai seperti yang ditunjukkan berikut ini. Untuk informasi selengkapnya, lihat [Menghubungkan ke instans MySQL DB Anda](USER_ConnectToInstance.md). 

 Untuk melewati kesalahan, jalankan perintah berikut.

```
CALL mysql.rds_skip_repl_error; 
```

Perintah ini tidak berpengaruh jika Anda menjalankannya di instans DB sumber, atau di replika baca yang belum mengalami kesalahan replikasi. 

Untuk informasi selengkapnya, seperti versi MySQL yang mendukung `mysql.rds_skip_repl_error`, lihat [mysql.rds\$1skip\$1repl\$1error](mysql-stored-proc-replicating.md#mysql_rds_skip_repl_error). 

**penting**  
Jika Anda mencoba untuk memanggil `mysql.rds_skip_repl_error` dan menemukan kesalahan berikut: `ERROR 1305 (42000): PROCEDURE mysql.rds_skip_repl_error does not exist`, tingkatkan instans DB MySQL Anda ke versi minor terbaru atau salah satu versi minor minimum yang tercantum dalam [mysql.rds\$1skip\$1repl\$1error](mysql-stored-proc-replicating.md#mysql_rds_skip_repl_error).

## Mengatur parameter slave\$1skip\$1errors
<a name="Appendix.MySQL.CommonDBATasks.SkipError.parameter"></a>

Untuk melewati satu atau beberapa kesalahan, Anda dapat mengatur parameter `slave_skip_errors` statis pada replika baca. Anda dapat mengatur parameter ini untuk melewati satu atau beberapa kode kesalahan replikasi spesifik. Saat ini, Anda dapat mengatur parameter ini hanya untuk instans DB RDS for MySQL 5.7. Setelah Anda mengubah pengaturan untuk parameter ini, pastikan untuk melakukan boot ulang instans DB Anda agar pengaturan baru dapat diterapkan. Untuk informasi tentang cara mengatur parameter ini, lihat [dokumentasi MySQL](https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html#sysvar_slave_skip_errors).

Sebaiknya atur parameter ini dalam grup parameter DB terpisah. Anda dapat mengaitkan grup parameter DB ini hanya dengan replika baca yang perlu melewati kesalahan. Mengikuti praktik terbaik ini akan mengurangi potensi dampak pada instans DB dan replica baca lainnya.

**penting**  
Mengatur nilai nondefault untuk parameter ini dapat menyebabkan inkonsistensi replikasi. Atur parameter ini ke nilai nondefault hanya jika Anda tidak memiliki opsi lain untuk menyelesaikan masalah dan Anda yakin bahwa akan ada potensi dampak pada data replika baca Anda.

# Bekerja dengan ruang meja InnoDB untuk meningkatkan waktu pemulihan kerusakan untuk RDS untuk MySQL
<a name="Appendix.MySQL.CommonDBATasks.Tables"></a>

Setiap tabel di MySQL terdiri dari definisi, data, dan indeks tabel. Mesin penyimpanan InnoDB MySQL menyimpan data dan indeks tabel di *tablespace*. InnoDB membuat tablespace bersama global yang berisi kamus data dan metadata relevan lainnya, serta dapat berisi data dan indeks tabel. InnoDB juga dapat membuat tablespace terpisah untuk setiap tabel dan partisi. Tablespace terpisah ini disimpan dalam file berekstensi .ibd dan judul setiap tablespace berisi nomor pengidentifikasi unik. 

Amazon RDS menyediakan parameter dalam grup parameter MySQL yang disebut `innodb_file_per_table`. Parameter ini mengontrol apakah InnoDB menambahkan data dan indeks tabel baru ke tablespace bersama (dengan menetapkan nilai parameter ke 0) atau ke tablespace terpisah (dengan menetapkan nilai parameter ke 1). Amazon RDS menetapkan nilai default untuk parameter `innodb_file_per_table` ke 1, yang memungkinkan Anda meletakkan tabel InnoDB terpisah dan mengklaim ulang penyimpanan yang digunakan oleh tabel tersebut untuk instans DB. Biasanya, penetapan parameter `innodb_file_per_table` ke 1 adalah pengaturan yang direkomendasikan.

Anda harus menetapkan parameter `innodb_file_per_table` ke 0 ketika Anda memiliki tabel dalam jumlah besar. Misalnya, Anda memiliki lebih dari 1.000 tabel saat menggunakan penyimpanan SSD standar (magnetik) atau SSD umum atau lebih dari 10.000 tabel saat Anda menggunakan penyimpanan IOPS yang Tersedia. Saat Anda menetapkan parameter ini ke 0, tablespace terpisah tidak dibuat dan hal ini dapat meningkatkan waktu yang diperlukan untuk pemulihan crash basis data. 

MySQL memproses setiap file metadata, yang mencakup tablespace, selama siklus pemulihan crash. Waktu yang diperlukan oleh MySQL untuk memproses informasi metadata di tablespace bersama dapat diabaikan, dibandingkan dengan waktu yang diperlukan untuk memproses ribuan file tablespace ketika ada beberapa tablespace. Karena nomor tablespace disimpan di judul setiap file, waktu gabungan untuk membaca semua file tablespace tersebut bisa mencapai beberapa jam. Misalnya, pemrosesan sejuta tablespace InnoDB pada penyimpanan standar selama siklus pemulihan crash dapat memakan waktu mulai lima hingga delapan jam. Dalam beberapa kasus, InnoDB dapat menentukan apakah pembersihan tambahan diperlukan setelah siklus pemulihan crash selesai sehingga siklus pemulihan crash akan dimulai lagi. Hal ini akan memperpanjang waktu pemulihan. Perlu diperhatikan bahwa siklus pemulihan crash juga melibatkan transaksi rolling back, perbaikan halaman yang rusak, dan operasi lain selain pemrosesan informasi tablespace. 

Karena parameter `innodb_file_per_table` berada di grup parameter, Anda dapat mengubah nilai parameter dengan mengedit grup parameter yang digunakan oleh instans DB Anda tanpa perlu melakukan boot ulang instans DB. Setelah pengaturan diubah, misalnya, dari 1 (buat tabel terpisah) ke 0 (gunakan tablespace bersama), tabel InnoDB baru akan ditambahkan ke tablespace bersama sedangkan tabel yang ada tetap memiliki tablespace terpisah. Untuk memindahkan tabel InnoDB ke tablespace bersama, Anda harus menggunakan perintah `ALTER TABLE`.

## Memigrasikan beberapa tablespace ke tablespace bersama
<a name="Appendix.MySQL.CommonDBATasks.MigrateMultiTbs"></a>

Anda dapat memindahkan metadata tabel InnoDB dari tablespace-nya ke tablespace bersama. Hal ini akan membuat ulang metadata tabel sesuai dengan pengaturan parameter `innodb_file_per_table`. Pertama, hubungkan ke instans MySQL DB Anda, lalu jalankan perintah yang sesuai seperti yang ditunjukkan berikut. Untuk informasi selengkapnya, lihat [Menghubungkan ke instans MySQL DB Anda](USER_ConnectToInstance.md). 

```
ALTER TABLE table_name ENGINE = InnoDB, ALGORITHM=COPY; 
```

Misalnya, kueri berikut mengembalikan pernyataan `ALTER TABLE` untuk setiap tabel InnoDB yang tidak ada di tablespace bersama.

**Untuk instans DB MySQL 5.7:**

```
SELECT CONCAT('ALTER TABLE `', 
REPLACE(LEFT(NAME , INSTR((NAME), '/') - 1), '`', '``'), '`.`', 
REPLACE(SUBSTR(NAME FROM INSTR(NAME, '/') + 1), '`', '``'), '` ENGINE=InnoDB, ALGORITHM=COPY;') AS Query 
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES 
WHERE SPACE <> 0 AND LEFT(NAME, INSTR((NAME), '/') - 1) NOT IN ('mysql','');
```

**Untuk instans MySQL 8.4 dan 8.0 DB:**

```
SELECT CONCAT('ALTER TABLE `', 
REPLACE(LEFT(NAME , INSTR((NAME), '/') - 1), '`', '``'), '`.`', 
REPLACE(SUBSTR(NAME FROM INSTR(NAME, '/') + 1), '`', '``'), '` ENGINE=InnoDB, ALGORITHM=COPY;') AS Query 
FROM INFORMATION_SCHEMA.INNODB_TABLES 
WHERE SPACE <> 0 AND LEFT(NAME, INSTR((NAME), '/') - 1) NOT IN ('mysql','');
```

Pembuatan ulang tabel MySQL untuk memindahkan metadata tabel tersebut ke tablespace bersama memerlukan ruang penyimpanan tambahan sementara guna membuat ulang tabel. Jadi, instans DB harus memiliki ruang penyimpanan yang tersedia. Selama pembuatan ulang, tabel dikunci dan tidak dapat diakses oleh kueri. Untuk tabel kecil atau tabel yang jarang diakses, hal ini mungkin tidak menjadi masalah. Untuk tabel besar atau tabel yang sering diakses dalam lingkungan yang sangat serentak, Anda dapat membuat ulang tabel pada replika baca. 

Anda dapat membuat replika baca dan memigrasi metadata tabel ke tablespace bersama pada replika baca. Meskipun pernyataan ALTER TABLE memblokir akses pada replika baca, instans DB sumber tidak terpengaruh. Instans DB sumber akan terus membuat log binernya, sementara replika baca mengalami lag selama proses pembuatan ulang tabel. Karena pembuatan ulang ini memerlukan ruang penyimpanan tambahan dan file log pemutaran ulang bisa menjadi besar, Anda harus membuat replika baca dengan alokasi penyimpanan yang lebih besar dari instans DB sumber.

Guna membuat replika baca dan membuat ulang InnoDB untuk menggunakan tablespace bersama, lakukan langkah-langkah berikut:

1. Pastikan retensi cadangan diaktifkan di instans DB sumber sehingga pencatatan biner diaktifkan. 

1. Gunakan Konsol Manajemen AWS atau AWS CLI untuk membuat replika baca untuk instance DB sumber. Karena pembuatan replika baca melibatkan banyak proses yang sama seperti pemulihan crash, proses pembuatannya dapat memakan waktu lama jika ada tablespace InnoDB dalam jumlah besar. Alokasikan lebih banyak ruang penyimpanan pada replika baca dibandingkan dengan yang saat ini digunakan pada instans DB sumber.

1. Setelah replika baca dibuat, buat grup parameter dengan pengaturan parameter `read_only = 0` dan `innodb_file_per_table = 0`. Kemudian hubungkan grup parameter dengan replika baca. 

1. Terbitkan pernyataan SQL berikut untuk semua tabel yang ingin Anda migrasikan pada replika:

   ```
   ALTER TABLE name ENGINE = InnoDB
   ```

1. Saat semua pernyataan `ALTER TABLE` Anda pada replika baca selesai, pastikan bahwa replika baca tersebut telah terhubung ke instans DB sumber dan bahwa kedua instans tersebut sudah sinkron. 

1. Gunakan konsol atau CLI untuk mempromosikan replika baca sebagai instans. Pastikan grup parameter yang digunakan untuk instans DB mandiri baru telah menetapkan parameter `innodb_file_per_table` ke 0. Ubah nama instans DB mandiri baru, lalu arahkan aplikasi apa pun ke instans DB mandiri baru. 

# Mengelola Riwayat Status Global untuk RDS untuk MySQL
<a name="Appendix.MySQL.CommonDBATasks.GoSH"></a>

**Tip**  
Untuk menganalisis performa basis data, Anda juga dapat menggunakan Wawasan Performa di Amazon RDS. Untuk informasi selengkapnya, lihat [Memantau muatan DB dengan Wawasan Performa di Amazon RDS](USER_PerfInsights.md).

MySQL mempertahankan banyak variabel status yang memberikan informasi tentang operasinya. Nilai variabel tersebut dapat membantu Anda mendeteksi masalah penguncian atau memori pada instans DB. Nilai variabel status ini bersifat kumulatif sejak instans DB dimulai terakhir kali. Anda dapat menetapkan ulang sebagian besar variabel status ke 0 dengan menggunakan perintah `FLUSH STATUS`. 

Agar dapat memantau nilai ini dari waktu ke waktu, Amazon RDS menyediakan serangkaian prosedur yang akan mengambil snapshot nilai-nilai variabel status ini dari waktu ke waktu dan menuliskannya ke tabel, beserta perubahan apa pun yang dibuat sejak snapshot terakhir. Infrastruktur ini, yang disebut Global Status History (GoSH), diinstal di seluruh instans DB MySQL mulai versi 5.5.23. GoSH dinonaktifkan secara default. 

Untuk mengaktifkan GoSH, aktifkan penjadwal peristiwa terlebih dahulu dari grup parameter DB dengan menetapkan parameter `event_scheduler` ke `ON`. Untuk instans DB MySQL yang menjalankan MySQL 5.7, tetapkan juga parameter `show_compatibility_56` ke `1`. Untuk informasi tentang cara membuat dan memodifikasi grup parameter DB, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md). Untuk informasi tentang dampak dari pengaktifan parameter ini, lihat [show\$1compatibility\$156](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_show_compatibility_56) di *Panduan Referensi MySQL 5.7*.

Anda kemudian dapat menggunakan prosedur dalam tabel berikut untuk mengaktifkan dan mengonfigurasi GoSH. Pertama, hubungkan ke instans DB MySQL Anda, lalu jalankan perintah yang sesuai seperti yang ditunjukkan berikut. Untuk informasi selengkapnya, lihat [Menghubungkan ke instans MySQL DB Anda](USER_ConnectToInstance.md). Untuk setiap prosedur, jalankan perintah berikut dan ganti **procedure-name**: 

```
CALL procedure-name; 
```

Tabel berikut mencantumkan semua prosedur yang dapat Anda gunakan untuk **procedure-name**perintah sebelumnya.


| Prosedur | Deskripsi | 
| --- | --- | 
| `mysql.rds_enable_gsh_collector` |  Mengaktifkan GoSH untuk mengambil snapshot default pada interval yang ditentukan oleh `rds_set_gsh_collector`.   | 
| `mysql.rds_set_gsh_collector` |  Menentukan interval, dalam menit, antara snapshot. Nilai default-nya adalah 5.   | 
| `mysql.rds_disable_gsh_collector` |  Menonaktifkan snapshot.   | 
| `mysql.rds_collect_global_status_history` |  Mengambil snapshot sesuai permintaan.   | 
| `mysql.rds_enable_gsh_rotation` |  Mengaktifkan rotasi konten tabel `mysql.rds_global_status_history` ke `mysql.rds_global_status_history_old` pada interval yang ditentukan oleh `rds_set_gsh_rotation`.   | 
| `mysql.rds_set_gsh_rotation` |  Menentukan interval, dalam hari, antara rotasi tabel. Nilai default-nya adalah 7.   | 
| `mysql.rds_disable_gsh_rotation` |  Menonaktifkan rotasi tabel.   | 
| `mysql.rds_rotate_global_status_history` |  Merotasi konten tabel `mysql.rds_global_status_history` ke `mysql.rds_global_status_history_old` sesuai permintaan.   | 

Saat GoSH berjalan, Anda dapat mengueri tabel tujuan penulisannya. Misalnya, untuk mengueri rasio hit kumpulan buffer Innodb, Anda dapat menjalankan kueri berikut: 

```
select a.collection_end, a.collection_start, (( a.variable_Delta-b.variable_delta)/a.variable_delta)*100 as "HitRatio" 
    from mysql.rds_global_status_history as a join mysql.rds_global_status_history as b on a.collection_end = b.collection_end
    where a. variable_name = 'Innodb_buffer_pool_read_requests' and b.variable_name = 'Innodb_buffer_pool_reads'
```

# Mengkonfigurasi ukuran kolam buffer dan mengulang kapasitas log di MySQL 8.4
<a name="Appendix.MySQL.CommonDBATasks.Config.Size.8.4"></a>

Di MySQL 8.4, Amazon RDS mengaktifkan parameter secara default. `innodb_dedicated_server` Dengan `innodb_dedicated_server` parameter, mesin database menghitung `innodb_buffer_pool_size` dan `innodb_redo_log_capacity` parameter. Untuk informasi tentang bagaimana parameter ini dihitung, lihat [Mengonfigurasi Ukuran Kolam Buffer InnoDB](https://dev.mysql.com/doc/refman/8.4/en/innodb-buffer-pool-resize.html) [dan Redo Log](https://dev.mysql.com/doc/refman/8.4/en/innodb-redo-log.html) dalam dokumentasi MySQL.

Dengan `innodb_dedicated_server` diaktifkan, `innodb_buffer_pool_size` parameter dihitung berdasarkan memori kelas instans DB. Tabel berikut menunjukkan memori server terdeteksi dan ukuran kolam buffer yang sesuai.


| Memori server yang terdeteksi | Ukuran kolam penyangga | 
| --- | --- | 
|  < 1 GB  |  Nilai default 128 MB  | 
|  1 GB hingga 4 GB  |  *Detected server memory*\$1 0,5  | 
|  > 4 GB  |  *Detected server memory*\$1 0,75  | 

`innodb_redo_log_capacity`Parameter secara otomatis menskalakan dengan kelas instance ke (jumlah CPUs v/ 2) GB hingga maksimum 16 GB. Kelas instans yang lebih besar memiliki kapasitas redo log yang lebih besar, yang dapat meningkatkan kinerja dan ketahanan untuk beban kerja intensif penulisan. 

Sebelum memutakhirkan dari MySQL 8.0 ke MySQL 8.4, pastikan untuk menambah ruang penyimpanan Anda untuk mengakomodasi potensi peningkatan ukuran redo log yang mungkin terjadi setelah upgrade selesai. Untuk informasi selengkapnya, lihat [Meningkatkan kapasitas penyimpanan instans DB](USER_PIOPS.ModifyingExisting.md).

Jika Anda tidak ingin `innodb_dedicated_server` parameter menghitung nilai untuk `innodb_redo_log_capacity` parameter `innodb_buffer_pool_size` dan, Anda dapat mengganti nilai ini dengan menetapkan nilai tertentu untuk mereka dalam grup parameter kustom. Atau, Anda dapat menonaktifkan `innodb_dedicated_server` parameter dan menetapkan nilai untuk `innodb_buffer_pool_size` dan `innodb_redo_log_capacity` parameter dalam grup parameter kustom. Untuk informasi selengkapnya, lihat [Grup parameter kustom dan default](parameter-groups-overview.md#parameter-groups-overview.custom).

Jika Anda menonaktifkan `innodb_dedicated_server` parameter dengan menyetelnya ke `0` dan tidak menetapkan nilai untuk `innodb_redo_log_capacity` parameter `innodb_buffer_pool_size` dan, maka Amazon RDS menetapkan dua parameter terakhir menjadi 128 MB dan 100 MB, masing-masing. Default ini mengakibatkan kinerja yang buruk pada kelas instance yang lebih besar.