Verkürzung der Zeit für die physische Migration zu Amazon Aurora MySQL - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verkürzung der Zeit für die physische Migration zu Amazon Aurora MySQL

Mit den folgenden Datenbankänderungen können Sie den Vorgang der Migration einer Datenbank zu Amazon Aurora MySQL beschleunigen.

Wichtig

Stellen Sie sicher, dass Sie diese Updates auf einer Kopie der Produktionsdatenbank und nicht auf der Produktionsdatenbank selbst durchführen. Anschließend können Sie die Kopie sichern und zu Ihrem Aurora MySQL DB-Cluster wiederherstellen, um Service-Unterbrechungen in der Produktionsdatenbank vermeiden.

Nicht unterstützte Tabellentypen

Aurora MySQL unterstützt nur die InnoDB-Engine für Datenbanktabellen. Wenn die Datenbank MyISAM-Tabellen enthält, müssen diese vor der Migration nach Aurora MySQL konvertiert werden. Während der Migration wird für die Konvertierung von MyISAM nach InnoDB zusätzlicher Speicherplatz benötigt.

Um das Risiko zu senken, dass der Speicherplatz nicht ausreicht, oder um den Migrationsvorgang zu beschleunigen, wandeln Sie alle MyISAM-Tabellen vor der Migration in InnoDB-Tabellen um. Die Größe der resultierenden InnoDB-Tabelle entspricht den Größenanforderungen von Aurora MySQL für diese Tabelle. Führen Sie zum Umwandeln einer MyISAM-Tabelle in eine InnoDB-Tabelle den folgenden Befehl aus:

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

Aurora MySQL unterstützt keine komprimierten Tabellen oder Seiten, d. h. Tabellen, die mit ROW_FORMAT=COMPRESSED oder erstellt wurdenCOMPRESSION = {"zlib"|"lz4"}.

Um das Risiko zu senken, dass der Speicherplatz nicht ausreicht, oder um den Migrationsvorgang zu beschleunigen, erweitern Sie komprimierte Tabellen, indem Sie ROW_FORMAT auf DEFAULT, COMPACT, DYNAMIC oder REDUNDANT einstellen. Legen Sie für komprimierte Seiten festCOMPRESSION="none".

Weitere Informationen finden Sie unter InnoDB-Zeilenformate und InnoDB-Tabellen- und Seitenkomprimierung in der MySQL-Dokumentation.

Sie können mit dem folgenden SQL-Skript alle Datenbanktabellen der MySQL-DB-Instance auflisten, die MyISAM-Tabellen oder komprimierte Tabellen sind.

-- 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' );

Benutzerkonten mit nicht unterstützten Rechten

Benutzerkonten mit Rechten, die von Aurora MySQL nicht unterstützt werden, werden ohne die nicht unterstützten Rechte importiert. Die Liste der unterstützten Rechte finden Sie unter Rollenbasiertes Berechtigungsmodell.

Sie können die folgende SQL-Abfrage in Ihrer Quelldatenbank ausführen, um die Benutzerkonten aufzulisten, die nicht unterstützte Rechte haben.

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

Dynamische Rechte in Aurora MySQL Version 3

Dynamische Rechte werden nicht importiert. Aurora MySQL Version 3 unterstützt die folgenden dynamischen Rechte.

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

Das folgende Beispielskript gewährt den Benutzerkonten im Aurora MySQL-DB-Cluster die unterstützten dynamischen Rechte.

-- 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

Gespeicherte Objekte mit 'rdsadmin'@'localhost' als Definierer

Funktionen, Prozeduren, Ansichten, Ereignisse und Trigger mit 'rdsadmin'@'localhost' als Definierer werden nicht importiert.

Mit dem folgenden SQL-Skript können die in Ihrer MySQL-Datenbank gespeicherten Objekte mit nicht unterstützten Definierern auflisten.

-- 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';