AWS RDS Aurora MySQL (8) Primary (Master)-secondary replication
Primary Database: Aurora MySQL 8 (latest version)
Secondary database: MySQL On-premises databases version 8
AWS Site to Site VPN enabled on-premise and AWS VPC
I used the replication based on Binlog with GTID feature.
Set the following in the Primary database db cluster
gtid_mode = ON which is required if we need the auto position feature enabled in the secondary database.
enforce_gtid_consistency = ON
Reboot the cluster to apply the changes in the DB cluster parameters group.
while the cluster reboots, please login to the on-premise server and edit the my.cnf file and the following to the same
innodb_redo_log_capacity=1G
innodb_buffer_pool_size=8G
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=1
gtid_mode = ON
enforce_gtid_consistency = ON
log-replica-updates=ON
skip-replica-start=ON
log-bin=log-bin
binlog-format=MIXED
server-id=2000
relay-log=relay-bin
Restart the Mysql service.
Now back to the RDS, once the reboot is completed. Take a snapshot of the cluster.
Restore the snapshot.
Once the snapshot is restored you can see a binlog details from the logs and events of the restored instance. Which will be require if we are going to provide the position based on the binlog.
take a clean backup of the Database which needs to be restored to the secondary database on-premise.
mysqldump -h xxx-rds.cluster-xx.eu-west-1.rds.amazonaws.com -u xx_user -p xvbp_db --no-tablespaces --set-gtid-purged=OFF > db.sql
We can do this task while we are logged in to the on-premises server.
Once backup created. Create a DB with the same name in the local mysql(on-premise) and restore the backup to the DB.
mysql db < db.sql
Now we need to make this MySQL as the secondary database for that apply the command below.
CHANGE REPLICATION SOURCE TO
> SOURCE_HOST = 'masternode01.cluster-xx.ap-southeast-1.rds.amazonaws.com',
> SOURCE_PORT = 3306,
> SOURCE_USER = 'xx',
> SOURCE_PASSWORD = 'xx',
> SOURCE_AUTO_POSITION = 1;
The above method uses the Auto positioning. I used this method, and it is working fine.