Hello @imc67
You can use the PID from the process to figure out what mysql service it is.
e.g. your iotop shows for mysqld the pid 1994756.
You can run systemctl status mysql.service and there is the pid displayed:
● mysql.service - MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-12-01 09:17:59 UTC; 1 week 5 days ago
Main PID: 1994756 (mysqld)
Status: "Server is operational"
Tasks: 48 (limit: 4603)
Memory: 178.7M (peak: 298.0M swap: 95.4M swap peak: 108.7M)
CPU: 1h 41min 31.520s
CGroup: /system.slice/mysql.service
└─1994756 /usr/sbin/mysqld
Notice: journal has been rotated since unit was started, output may be incomplete.
So from iotop I can confirm that the system mysqld service is pid 1994756 so I'd know to inspect the system mysqld service and not the docker mysql service.
You can also get the pid from the mysqld inside the docker container with docker top mysql:
docker top mysql
UID PID PPID C STIME TTY TIME CMD
root 1889 1512 0 Nov07 ? 00:06:17 /usr/bin/python3 /usr/bin/supervisord --configuration /etc/supervisor/supervisord.conf --nodaemon -i Mysql
usbmux 3079 1889 0 Nov07 ? 03:49:38 /usr/sbin/mysqld
usbmux 3099 1889 0 Nov07 ? 00:00:11 node /app/code/service.js
Then I know the mysqld pid of the docker service is 3079 which I can check again with the system:
ps uax | grep -i 3079
usbmux 3079 0.4 1.0 1587720 43692 ? Sl Nov07 229:38 /usr/sbin/mysqld
Now we can differentiate between the two.
Okay.
Now that we can differentiate between the two, you can observe iotop and see which one has a high I/O.
After you narrow it down to either one, then we can do some analysis what database / table get accesses the most even further narrow it down.