#mysql #amazon-aurora
#mysql #amazon-aurora
Вопрос:
Я нахожусь в процессе переноса исходной базы данных mysql на amazon aurora и использовал официальную документацию AWS. Согласно документам, это шаги, которые я выполнил до сих пор:-
- Настройте Percona Xtrabackup.
- Сделал резервную копию и переместил данные в S3.
- Зашел на панель управления RDS и восстановил базу данных из S3.
- База данных запущена и успешно запущена.
Сейчас я нахожусь в процессе настройки репликации binlog, где мой экземпляр Aurora будет репликой, в то время как мой on prem mysql является основным. Чтобы настроить репликацию, я выполнил шаги, изложенные в официальных документах:-
- На моем главном сервере создал пользователя ‘replica-aurora’ и предоставил необходимые разрешения, используя
GRANT REPLICATION SLAVE ON *.* TO 'replica-aurora'@'%' IDENTIFIED BY 'my-secret-password';
- Запустил Show master status на моем master, который находится в prem.
File: mysql-bin.004762 Position: 68093017 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)
- Подключился к моему экземпляру aurora и выполнил следующую команду :-
CALL mysql.rds_set_external_master ('Ip-of-master', 3306, 'replica-aurora', 'password', 'mysql-bin.004762', 68093017, 0);
- Ran
CALL mysql.rds_start_replication;
- Когда я проверяю
show slave StatusG
. Я продолжаю сталкиваться со следующим сообщением об ошибке :-Slave_IO_State: Waiting for master to send event Master_Host: Master-IP Master_User: replica-aurora Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.004762 Read_Master_Log_Pos: 71341857 Relay_Log_File: relaylog.000002 Relay_Log_Pos: 195715 Relay_Master_Log_File: mysql-bin.004762 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: mysql.rds_replication_status,mysql.rds_monitor,mysql.rds_sysinfo,mysql.rds_configuration,mysql.rds_history Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1032 Last_Error: Could not execute Delete_rows event on table db.feed; Can't find record in 'feed', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.004762, end_log_pos 68293560 Skip_Counter: 0 Exec_Master_Log_Pos: 68288412 Relay_Log_Space: 3249360 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 1032 Last_SQL_Error: Could not execute Delete_rows event on table db.feed; Can't find record in 'feed', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.004762, end_log_pos 68293560
Я попытался установить sql_slave_skip_counter=1 и столкнулся с этим :-
mysql> SET GLOBAL sql_slave_skip_counter = 1; ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
Я попытался пропустить текущую позицию, используя CALL mysql.rds_skip_repl_error;
, но столкнулся со следующим :-
mysql> CALL mysql.rds_skip_repl_error;
-------------------------------------
| Message |
-------------------------------------
| Statement in error has been skipped |
-------------------------------------
1 row in set (0.04 sec)
-----------------------------------------------------------------------------------
| Message |
-----------------------------------------------------------------------------------
| Slave has encountered a new error. Please use SHOW SLAVE STATUS to see the error. |
-----------------------------------------------------------------------------------
1 row in set (2.14 sec)
Query OK, 0 rows affected (2.14 sec)
по сути, это то же сообщение об ошибке, что и выше. ОШИБКА 1032.
У кого-нибудь есть идеи о том, как решить эту проблему? Я, конечно, был бы признателен за это.
Комментарии:
1. Вы заблокировали мастер, когда
Took a backup and moved the data to S3.
? Вы запускаете show master status после завершения резервного копирования, и я думаю, что это неправильно, потому что master изменил позицию.2. @ErgestBasha Спасибо за ответ. Я не заблокировал мастер. Поскольку это производство. Вы думаете, я должен использовать главную позицию при создании резервной копии?
3. Чтобы получить чистую репликацию, вы должны:
flush tables with read lock;
затемshow master status;
скопировать и сохранить данные, которые вам понадобятся в файле и позиции. Затем запустите команду mysqldump, и после завершения команды вы сможете разблокировать таблицыunlock tables;
4. Спасибо @ErgestBasha, я попробую это.