Question about database mirroring

  • Hi,

    With SQL Server database mirroring, do you know if SQL Server validate changes before they are applied to the mirror database ?

    If I have a corrupt san lun on my primary database, I assume than database mirroring will not transfert it to the mirror database located on another san lun ?

    Because in Oracle, they have that:

    Oracle Data Guard is the Oracle MAA recommended data availability solution, and it is the

    best solution for protecting against data loss, corruptions, and lost writes.

    Data Guard maintains a copy of your data in a standby database that is continuously updated

    with changes from the production database. Data Guard validates all changes before they are

    applied to the standby database, preventing physical corruptions that occur in the storage layer

    from causing data loss and downtime.

    regards

  • If the transaction can be written to the primary, then the same log change is sent to the mirror. If the corruption is in your SAN, but it accepts the write, the same transaction is sent to the mirror. If it fails on the primary, it is not.

    However, I don't believe the corrupt pages would be sent, but rather the log records from the primary. I suppose if your log has issues, then the corruption would transfer, but I suspect the transaction wouldn't complete on the primary then, so it wouldn't move.

    Good question.

  • So, I am right if I say than the big question is :

    Does SQL Server database mirroring protect the mirror database against physical corruptions that occur in the storage layer of the primary db ?

    regards

  • Yes, I think so. I think it depends on the corruption and how it's handled.

    If you have a corrupt page in your primary, and there is a good page in the secondary, Mirroring can copy that good page back from the mirror to the primary. So there's some protection.

    But if there is something corrupt in the primary and it's changed, I don't think the corrupt page is sent over, but rather the log records.

  • OK, confirmed with a few people that it was what I was thinking, but wasn't sure.

    Corruption can't be sent from primary to mirror. The log records are all that's sent, so any corruption in the data files isn't transferred, unless you use a backup to initialize the mirror. Backups can transfer corruption.

    For mirroring, if there's a write to data files, and it becomes corrupt, it doesn't matter. The log records are sent and replayed on the mirror, so there would have to be corruption on the mirror LUNs for there to be an issue.

    If the log on the primary is corrupt, and you can't write, you can't commit transactions anywhere, either principal or mirror.

    If the log on the primary takes a write, becomes corrupt, then the mirror won't get the corruption if a good log record cannot be read.

  • Thanks Steve for your time !

    regards

Viewing 6 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic. Login to reply