

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

# Mengurangi waktu migrasi fisik ke Amazon Aurora MySQL
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks"></a>

Anda dapat membuat modifikasi basis data berikut untuk mempercepat proses migrasi basis data ke Amazon Aurora MySQL.

**penting**  
Pastikan untuk melakukan pembaruan ini pada salinan basis data produksi, bukan pada basis data produksi. Kemudian, Anda dapat mencadangkan salinan ini dan memulihkannya ke klaster DB Aurora MySQL untuk menghindari gangguan layanan apa pun pada basis data produksi Anda.

## Jenis tabel yang tidak didukung
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Tables"></a>

Aurora MySQL hanya mendukung mesin InnoDB untuk tabel basis data. Jika Anda memiliki tabel MyISAM di basis data Anda, tabel tersebut harus dikonversi sebelum bermigrasi ke Aurora MySQL. Proses konversi memerlukan ruang tambahan untuk konversi MyISAM ke InnoDB selama prosedur migrasi.

Untuk mengurangi kemungkinan Anda kehabisan ruang atau untuk mempercepat proses migrasi, konversikan semua tabel MyISAM Anda ke tabel InnoDB sebelum memigrasikannya. Ukuran tabel InnoDB yang dihasilkan akan setara dengan ukuran yang diperlukan oleh Aurora MySQL untuk tabel tersebut. Untuk mengonversi tabel MyISAM ke InnoDB, jalankan perintah berikut:

```
ALTER TABLE schema.table_name engine=innodb, algorithm=copy;
```

Aurora MySQL tidak mendukung tabel atau halaman terkompresi, yaitu tabel yang dibuat dengan `ROW_FORMAT=COMPRESSED` atau `COMPRESSION = {"zlib"|"lz4"}`.

Untuk mengurangi kemungkinan Anda kehabisan ruang atau untuk mempercepat proses migrasi, perluas tabel terkompresi Anda dengan mengatur `ROW_FORMAT` ke `DEFAULT`, `COMPACT`, `DYNAMIC`, atau `REDUNDANT`. Untuk halaman terkompresi, atur `COMPRESSION="none"`.

Untuk informasi selengkapnya, lihat [InnoDB row formats](https://dev.mysql.com/doc/refman/8.0/en/innodb-row-format.html) dan [InnoDB table and page compression](https://dev.mysql.com/doc/refman/8.0/en/innodb-compression.html) dalam dokumentasi MySQL.

Anda dapat menggunakan skrip SQL berikut pada instans DB MySQL yang ada untuk menampilkan daftar tabel dalam basis data Anda yang merupakan tabel MyISAM atau tabel terkompresi.

```
-- This script examines a MySQL database for conditions that block
-- migrating the database into Aurora MySQL.
-- It must be run from an account that has read permission for the
-- INFORMATION_SCHEMA database.

-- Verify that this is a supported version of MySQL.

select msg as `==> Checking current version of MySQL.`
from
  (
  select
    'This script should be run on MySQL version 5.6 or higher. ' +
    'Earlier versions are not supported.' as msg,
    cast(substring_index(version(), '.', 1) as unsigned) * 100 +
      cast(substring_index(substring_index(version(), '.', 2), '.', -1)
      as unsigned)
    as major_minor
  ) as T
where major_minor <> 506;


-- List MyISAM and compressed tables. Include the table size.

select concat(TABLE_SCHEMA, '.', TABLE_NAME) as `==> MyISAM or Compressed Tables`,
round(((data_length + index_length) / 1024 / 1024), 2) "Approx size (MB)"
from INFORMATION_SCHEMA.TABLES
where
  ENGINE <> 'InnoDB'
  and
  (
    -- User tables
    TABLE_SCHEMA not in ('mysql', 'performance_schema',
                         'information_schema')
    or
    -- Non-standard system tables
    (
      TABLE_SCHEMA = 'mysql' and TABLE_NAME not in
        (
          'columns_priv', 'db', 'event', 'func', 'general_log',
          'help_category', 'help_keyword', 'help_relation',
          'help_topic', 'host', 'ndb_binlog_index', 'plugin',
          'proc', 'procs_priv', 'proxies_priv', 'servers', 'slow_log',
          'tables_priv', 'time_zone', 'time_zone_leap_second',
          'time_zone_name', 'time_zone_transition',
          'time_zone_transition_type', 'user'
        )
    )
  )
  or
  (
    -- Compressed tables
       ROW_FORMAT = 'Compressed'
  );
```

## Akun pengguna dengan hak akses yang tidak didukung
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Users"></a>

Akun pengguna dengan hak akses yang tidak didukung oleh Aurora MySQL akan diimpor tanpa hak akses yang tidak didukung. Untuk daftar hak akses yang didukung, lihat [Model hak akses berbasis peran](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model).

Anda dapat menjalankan kueri SQL berikut pada basis data sumber Anda untuk menampilkan daftar akun pengguna yang memiliki hak akses yang tidak didukung.

```
SELECT
    user,
    host
FROM
    mysql.user
WHERE
    Shutdown_priv = 'y'
    OR File_priv = 'y'
    OR Super_priv = 'y'
    OR Create_tablespace_priv = 'y';
```

## Hak akses dinamis di Aurora MySQL versi 3
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Dynamic"></a>

Hak akses dinamis tidak akan diimpor. Aurora MySQL versi 3 mendukung hak akses dinamis berikut.

```
'APPLICATION_PASSWORD_ADMIN',
'CONNECTION_ADMIN',
'REPLICATION_APPLIER',
'ROLE_ADMIN',
'SESSION_VARIABLES_ADMIN',
'SET_USER_ID',
'XA_RECOVER_ADMIN'
```

Contoh skrip berikut memberikan hak akses dinamis yang didukung ke akun pengguna di klaster DB Aurora MySQL.

```
-- This script finds the user accounts that have Aurora MySQL supported dynamic privileges 
-- and grants them to corresponding user accounts in the Aurora MySQL DB cluster.

/home/ec2-user/opt/mysql/8.0.26/bin/mysql -uusername -pxxxxx -P8026 -h127.0.0.1 -BNe "SELECT
  CONCAT('GRANT ', GRANTS, ' ON *.* TO ', GRANTEE ,';') AS grant_statement
  FROM (select GRANTEE, group_concat(privilege_type) AS GRANTS FROM information_schema.user_privileges 
      WHERE privilege_type IN (
        'APPLICATION_PASSWORD_ADMIN',
        'CONNECTION_ADMIN',
        'REPLICATION_APPLIER',
        'ROLE_ADMIN',
        'SESSION_VARIABLES_ADMIN',
        'SET_USER_ID',
        'XA_RECOVER_ADMIN')
      AND GRANTEE NOT IN (\"'mysql.session'@'localhost'\",\"'mysql.infoschema'@'localhost'\",\"'mysql.sys'@'localhost'\") GROUP BY GRANTEE)
      AS PRIVGRANTS; " | /home/ec2-user/opt/mysql/8.0.26/bin/mysql -u master_username -p master_password -h DB_cluster_endpoint
```

## Objek tersimpan dengan 'rdsadmin'@'localhost' sebagai pendefinisi
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Objects"></a>

Fungsi, prosedur, tampilan, peristiwa, dan pemicu dengan `'rdsadmin'@'localhost'` sebagai pendefinisi tidak akan diimpor.

Anda dapat menggunakan skrip SQL berikut pada basis data MySQL sumber Anda untuk menampilkan daftar objek tersimpan yang memiliki pendefinisi yang tidak didukung.

```
-- This SQL query lists routines with `rdsadmin`@`localhost` as the definer.

SELECT
    ROUTINE_SCHEMA,
    ROUTINE_NAME
FROM
    information_schema.routines
WHERE
    definer = 'rdsadmin@localhost';

-- This SQL query lists triggers with `rdsadmin`@`localhost` as the definer.

SELECT
    TRIGGER_SCHEMA,
    TRIGGER_NAME,
    DEFINER
FROM
    information_schema.triggers
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists events with `rdsadmin`@`localhost` as the definer.

SELECT
    EVENT_SCHEMA,
    EVENT_NAME
FROM
    information_schema.events
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists views with `rdsadmin`@`localhost` as the definer.
SELECT
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    information_schema.views
WHERE
    DEFINER = 'rdsadmin@localhost';
```