Is it ok if I use only the latest binary log file when restoring MySQL db? mysqlbinlog --verbose --stop-datetime="2019-12-28 10:00:00"  bin.000009 &gt; backup.sql

mysql -u root -p &lt; backup.sql


(The stop-datetime parameter here is just for testing)

I did the recovery job like that. Everything seems to be working fine. I don't know why the other numbers are required. Is that due to "max_binlog_size"?

My DB env is MYSQL 8.0, innodb

log-bin=/var/www/dbenv/log/bin/bin.log
binlog_cache_size=2M
max_binlog_size=500M
binlog_expire_logs_seconds=120000
Binlog itself isn't intended for DB restoration. It contains the changes in the DB since some point in time. Bin files are the chunks of the whole log where the max_binlog_size defines how big the single chunk can be. 

To perform the restoration in the proper way you need two things:   


the dump created by mysqldump utility at the some point of time  
all the binlog chunks since DB was dumped


Binlog events can be applied to the some initial state only. They are not idempotent - it can't be applied again and again. Let me illustrate the principle: you want to bake a cake.  

The initial state is all the ingredients apart. Then you mix the water, flour, add the yeаst, then you kneed the dough and set it into the owen. All your operations are written to the binlog. If something went wrong you can't start from the arbitrary point. Say, if the cake was burned you can't start from the kneeding of burned cake. You have to revert to the initial state and perform all the steps from the very beginning. 

Dump + full binlog allows to restore the final state of DB. Last state + binlog (full or partial) doesn't.