I don’t think there’s a “best” since so much of this will be situational.
In development, a copy of the database from your live server should provide plenty of data. Throw it onto a MariaDB server and go to town.
When you are preparing to go live, you have a few choices, depending on ‘no kidding’ what you are going to do with the data requirements. Most billing systems work monthly, so a once-a-month backup and restore of the data to another server would work. If you really do need every five-minute access to the database, you might still want to consider a mysqldump using a where clause that only pulls the last (say) 10 minutes worth of the data and ignore duplicate records. If you want “live” access to the data, you can open the database server to a specific user and host in the user table and pull the data live from the table.
Another possibility is to not use the MySQL data and use the CDR text file. You can open that with “tail -F” and watch the data stream into your application in real time, really reducing the load on the database engine and probably improving performance. The system can be configured to produce both a CSV and MySQL Databases, so this particular nut is yours to crack.
None of these is a ‘best’ solution. It really is going to depend on what you’re willing to accept as performance limits and system overhead, as well as what kind of server network you are looking at. There are no ‘wrong’ answers at this point; there might be a wrong question, but no wrong answers.
Use the username and password “read obly” credentials on the cdr table in the asteriskcdrdb database tied to their specific development host. When you go live, change the host address and allow the operational application access instead.