case 1: I'd extract the data from the db to a data lake (cold storage if that is possible, that is cheaper) using an ETL tool like Data Factory, Glue etc. Then the archiving can take place. Perhaps also create a backup of the data on a 2nd data lake.
case 2: Ideally you know what will be archived. With that knowledge, you can add an 'archived' column which is True for all the records in the archived data, also create an epoch column which contains an archiving run ID (like the year if you run yearly; or yearmonth etc).
If you do not have a way to know what is archived/will be archived, you will have to do a crosscheck with the PK of the table AFTER the archiving. Records not present in the source table are archived. This is of course only true if no records are removed from the table besides the archiving.
case3: I would not do that. What if you need your bronze/silver data for a new setup, and you need all data?
If you want to archive bronze/silver, you can. But I would do that independent of the gold layer. (so basically case 2).