I don’t have any suggestions on recovery…
However, it is my opinion, (not shared with others), that 2 way Mirror vDevs using huge disks, like 10TByte, has become too risky. While the old “RAID-5 / RAID-Z1 is dead” when using >1TBytes disks is not exactly true, the underlying concept has some merit.
I can’t remember the error rate that generated the old trope “RAID-5 is dead”, perhaps it was 10^14 for consumer disks and 10^15 for Enterprise disks. But, again in my opinion, this also applies when dealing with Mirrors.
You don’t mention your Mirror disk sizes…
One other comment. You don’t mention your ZFS pool scrub schedule. Scrubs can find checksum errors or read error and correct the block if redundancy is available.
My current media server has 2 storage devices. I take part of each for the OS root pool and Mirror it. Then use the rest in a stripe configuration for the media, (no redundancy but I have reasonable backups). For the first 5 or so years I’d get a failed video file every now and then. (Video files were larger so statistically more likely to have a bad block or checksum error.)
But I had haphazard scrubs, manual, when I remembered. So, could go 3 months without one. Eventually I made a fancy scrub script and scheduled the scrubs every 2 weeks, (all pools, so root pool gets scrubbed too).
The side effect of that scrubbing seems to be early catching of bad blocks. For the last 5 years, (and yes, that media server is 10 years old), I have had no bad blocks, even in the media pool.
Not sure what to make of it, other than ZFS is great.
Well, that is not quite true. I believe, without proof, that failing blocks, (but not yet failed), are detected by the storage device because of the ZFS scrubs, and the storage device corrects the problems itself. Either by re-writing the sector or sparing it out. Then supply the good block to ZFS. Which means ZFS does not record any errors. I guess I can look at the SMART outputs… but I am lazy and plan to replace that media server when I get a round TUIT.