What are the options for archiving old data of mariadb tables if partitioning can not be implemented due to a restriction
Here's a thought on archiving, with transactional integrity.


Have another table; let's call it archive.  It needs few, if any indexes.
Move 1000 rows from your table to archive at a time, transactionally.
After you have moved "enough". do whatever you want to Archive archive.


See this for suggestions on efficiently DELETEing rows from a table.  The rest is

INSERT INTO `archive` SELECT ... FROM main ...;


where the ... come from the chunking.  That can probably be done with autocommit=on and not need any BEGIN...COMMIT.