Невозможно восстановить поврежденные таблицы в экземпляре RDS - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь перенести схему таблиц одной базы данных, используя Alembic, в мой экземпляр AWS RDS Aurora MySQL 5.6.

Я правильно настроил alembic так, что таблица alembic_version существует в правильной базе данных для моего приложения и содержит одну строку с начальной версией первой ревизии.

Однако, когда я пытаюсь автоматически сгенерировать новую ревизию, возникают следующие ошибки:

INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate.compare] Detected removed table 'mysql.innodb_index_stats'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.events_stages_current'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.setup_consumers'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.events_waits_history_long'
INFO  [alembic.autogenerate.compare] Detected removed table 'mysql.slave_relay_log_info'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.host_cache'
INFO  [alembic.autogenerate.compare] Detected removed table 'mysql.db'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.rds_events_threads_waits_current'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.rds_events_threads_waits_lock_current'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.session_connect_attrs'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.setup_objects'
INFO  [alembic.autogenerate.compare] Detected removed table 'mysql.event'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.events_statements_summary_global_by_event_name'
INFO  [alembic.autogenerate.compare] Detected removed table 'mysql.rds_configuration'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.socket_summary_by_event_name'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.events_stages_history_long'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.file_summary_by_instance'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.setup_timers'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.events_statements_summary_by_thread_by_event_name'
INFO  [alembic.autogenerate.compare] Detected removed table 'performance_schema.table_io_waits_summary_by_index_usage'

Traceback (most recent call last):
... (traceback here)

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (144, "Table './mysql/time_zone_transition' is marked as crashed and last (automatic?) repair failed")
[SQL: SHOW CREATE TABLE `mysql`.`time_zone_transition`]

Эти инструкции INFO странные, так как я не удалял эти таблицы по умолчанию вручнуюкоторый создает MySQL, поэтому я предполагаю, что это делает AWS.

Если я получаю доступ к базе данных с помощью инструмента mysql CLI, > use mysql и > repair table time_zone_transition, я получаю следующие ошибки:

mysql> repair table time_zone_transition;
+----------------------------+--------+----------+-----------------------------------------------------------------------------------------------------------+
| Table                      | Op     | Msg_type | Msg_text                                                                                                  |
+----------------------------+--------+----------+-----------------------------------------------------------------------------------------------------------+
| mysql.time_zone_transition | repair | error    | 2 when fixing table                                                                                       |
| mysql.time_zone_transition | repair | Error    | Can't get stat of '/rdsdbdata/db/mysql/time_zone_transition.MYD' (Errcode: 2 - No such file or directory) |
| mysql.time_zone_transition | repair | Error    | Can't get stat of '/rdsdbdata/db/mysql/time_zone_transition.MYD' (Errcode: 2 - No such file or directory) |
| mysql.time_zone_transition | repair | status   | Operation failed                                                                                          |
+----------------------------+--------+----------+-----------------------------------------------------------------------------------------------------------+

Есть идеи, что может быть причиной этого? Это блокирует мою способность автоматически генерировать ревизии схемы базы данных, и я рассматриваю возможность создания нового экземпляра RDS, удаления этого существующего и переноса существующей схемы и данных в этот новый экземпляр для тестирования. Но любые мысли, прежде чем сделать это, будут оценены.

...