You will not be able to setup 'mirroring' in your current environment. See this document: https://learn.microsoft.com/en-us/sql/sql-server/failover-clusters/windows/upgrade-sql-server-failover-cluster-instance-2008-2012?view=sql-server-ver15
To be able to setup mirroring (availability group) you need to have a cluster and none of the scenarios allow for moving from 2008. This document shows how to perform a rolling upgrade: https://learn.microsoft.com/en-us/windows-server/failover-clustering/cluster-operating-system-rolling-upgrade
This also shows what can/cannot be done: https://sqlha.com/2019/08/15/ags-and-wsfc-os-rolling-upgrades-what-works-and-what-doesnt/
Basically, this leaves you with a backup/restore option as the best and safest route to upgrade. You can reduce the amount of downtime using the following strategy:
- Backup database on old system
- Restore database to new system with norecovery (can be done several hours before cutover)
- Differential backup on old system about 1 hour before cutover
- Restore differential backup to new system with norecovery
- Restore transaction log backups from old system to new system from differential backup forward
- Perform tail-log backup on old system (will take database offline on old system - if not, manually take database offline)
- Restore final transaction log to new system
- Restore database with recovery
The downtime will be minimal - but you still need to have that downtime. All systems/applications connecting to the old system will need to be updated to connect to the new system. You could shut down the old system and update DNS so the old name now points to the new IP address - or you can setup client aliases - or make changes to the hosts file on each device...
Performing a backup/restore will not lose any data...unless you allow the applications to continue filing data into the old system. This is why you need to take the database offline...it will prevent any additional data from being filed into that database during the migration.
Even if you somehow get mirroring working...the applications connections must be updated to use the new system or the listener, which will require a downtime for the application to insure all connections have been moved.