Is it normal for MySQL to gradually increase memory usage over time?
I can't address the MySQL specifics, but in general, yes, memory usage of database engines will tend to increase over time. As queries are processed, if the data isn't in memory, the engine will load the data from disk into memory. Then, as long as there are no other pressing needs to use that memory, the data will be left there in case it is queried again.
So as a database engine starts up, it'll use a moderate amount of memory. (Some will allocate a &quot;minimum memory&quot; just to have it ready for when they need it.) Then, as it runs, the memory usage will gradually increase, until it reaches either:

an amount configured as the &quot;maximum memory&quot; within the DBMS, or
the maximum amount the operating system will allow it to take

Only then will it start ejecting data from memory to make room for more data coming in from disk.
The specifics vary from DBMS to DBMS, and I've used some terms here that are inspired by SQL Server's terminology. But the general concepts should hold for most engines.
I suspect you'll get other answers with better MySQL details, or a better explanation of memory usage and caching and pools. But I hope this summary is still useful.