We are moving from MySQL on AWS RDS to MariaDB on-premise. To do so without downtime, we planned to create a replication first between the MySQL master and the MariaDB slave and then promote the MariaDB slave to become the new master.

MySQL on AWS RDS is 8.0.28 MariaDB on our servers is 10.6

The default MySQL collation is utf8mb4_0900_ai_ci, which MariaDB does not support. So we did:

  1. We converted all tables to utf8mb4_unicode_ci (some were utf8_unicode_ci, we kept them that way)
  2. Via AWS Parameter Store, we changed the variables collation_connection, collation_server, default_collation_for_utf8mb4 to utf8mb4_general_ci. These changes are reflected when running show global VARIABLES like '%collat%'

Only collation_database remains utf8mb4_0900_ai_ci, AWS doesn't allow to modify it.

Importing the dump from MySQL to MariaDB is running without any issues.

But once we start the replication, it immediately fails with

Error ‘Character set ‘#255’ is not a compiled character set and is not specified in the ‘/usr/share/mysql/charsets/Index.xml’ file’ on query. Default database: ‘’. Query: ‘BEGIN’

How can we make this replication work?

Thank you very much

  • @danblack - Anything in the works for this issue?
    – Rick James
    Jun 16, 2023 at 21:27
  • I can't see any outstanding feature request for this. I don't have a good grasp as to how different the MySQL-8.0 protocol is compared to what MariaDB can read. The docs simply list incompatible. A MariaDB-10.10+ (with added UCA-14.0.0) collations probably can handle the UCA-9.0.0 collations of MariaDB more accurately. You could start by creating a task, but its a large body of work.
    – danblack
    Jun 20, 2023 at 4:30


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.