Professional Documents
Culture Documents
Mirroring
Mirroring
Database mirroring was introduced with Microsoft SQL Server 2005 technology that can be used to design high-availability and
high-performance solutions for database redundancy.
In database mirroring, transaction log records are sent directly from the principal database to the mirror database. This helps to
keep the mirror database up to date with the principal database, with no loss of committed data. If the principal server fails, the
mirror server automatically becomes the new principal server and recovers the principal database using a witness server under
high-availability mode. We will discuss these modes later. Fundamentally to summarize there are three jargon to understand –
Principal database is the active live database that supports all the commands, Mirror is the hot standby and witness which allows for
a quorum in case of automatic switch over.
In database mirroring, the transaction log records for a database are directly transferred from one server to another, thereby
maintaining a hot standby server. As the principal server writes the database’s log buffer to disk, it simultaneously sends that block
of log records to the mirror instance. The mirror server continuously applies the log records to its copy of the database. Mirroring is
implemented on a per-database basis, and the scope of protection that it provides is restricted to a single-user database. Database
mirroring works only with databases that use the full recovery model.
Database mirroring architecture is more robust and efficient than Database Log Shipping. It can be configured to replicate
the changes synchronously to minimized data loss.
It has automatic server failover mechanism.
Configuration is simpler than log shipping and replication, and has built-in network encryption support (AES algorithm).
Because propagation can be done asynchronously, it requires less bandwidth than synchronous method (e.g. host-based
replication, clustering) and is not limited by geographical distance with current technology.
Database mirroring supports full-text catalogs.
Does not require special hardware (such as shared storage, heart-beat connection) and cluster ware, thus potentially has
lower infrastructure cost
Potential data lost is possible in asynchronous operation mode. RTO will vary and depend on several factors, such as
propagation interval time and bandwidth speed.
It only works at database level and not at server level. It only propagates changes at database level, no server level
objects, such as logins and fixed server role membership, can be propagated.
Automatic server failover may not be suitable for application using multiple databases.
Principal server is the server which serves the databases requests to the Application.
8. What is a Mirror?
This is the Hot standby server which has a copy of the database.
This is an optional server. If the Principal server goes down then Witness server controls the fail over process.
In synchronous mode, committed transactions are guaranteed to be recorded on the mirror server. Should a failure occur on the
primary server, no committed transactions are lost when the mirror server takes over. Using synchronous mode provides transaction
safety because the operational servers are in a synchronized state, and changes sent to the mirror must be acknowledged before
the primary can proceed
In asynchronous mode, committed transactions are not guaranteed to be recorded on the mirror server. In this mode, the primary
server sends transaction log pages to the mirror when a transaction is committed. It does not wait for an acknowledgement from the
mirror before replying to the application that the COMMIT has completed. Should a failure occur on the primary server, it is possible
that some committed transactions may be lost when the mirror server takes over.
It consist of the Principal, Witness and Mirror in synchronous communication. In this mode SQL server ensures that each
transaction that is committed on the Principal is also committed in the Mirror prior to continuing with next transactional operation in
the principal. The cost of this configuration is high as Witness is required. If the network does not have the bandwidth, a bottleneck
could form causing performance issue in the Principal. If Principal is lost Mirror can automatically take over.
13. What is High Protection operating mode?
It is pretty similar to High Availability mode except that Witness is not available, as a result failover is manual. It also has
transactional safety FULL i.e. synchronous communication between principal and mirror. Even in this mode if the network is poor it
might cause performance bottleneck.
It consists of only the Principal and the Mirror in asynchronous communication. Since the safety is OFF, automatic failover is not
possible, because of possible data loss; therefore, a witness server is not recommended to be configured for this scenario. Manual
failover is not enabled for the High Performance mode. The only type of failover allowed is forced service failover, which is also a
manual operation.
An endpoint is a network protocol which is used to communicate Principal, Mirror and Witness servers over the network.
18. What is the default of end points (port numbers) of principal, mirror and witness servers?
The default port numbers of principal, mirror and Witness servers are 5022, 5023 and 5024
Log hardening is the process of writing the log buffer to the transaction log on disk, a process called.
20. Is it possible to perform read only operation at mirrored database in mirror server?
Inter changing of roles like principal and mirror are called role switching.
SYNCHRONIZING
SYNCHRONIZED
SUSPENDED
PENDING_FAILOVER
DISCONNECTED
The contents of the mirror database are lagging behind the contents of the principal database. The principal server is sending log
records to the mirror server, which is applying the changes to the mirror database to roll it forward. At the start of a database
mirroring session, the database is in the SYNCHRONIZING state. The principal server is serving the database, and the mirror is
trying to catch up.
When the mirror server becomes sufficiently caught up to the principal server, the mirroring state changes to SYNCHRONIZED. The
database remains in this state as long as the principal server continues to send changes to the mirror server and the mirror server
continues to apply changes to the mirror database.
If transaction safety is set to FULL, automatic failover and manual failover are both supported in the SYNCHRONIZED state, there is
no data loss after a failover.
If transaction safety is off, some data loss is always possible, even in the SYNCHRONIZED state.
The mirror copy of the database is not available. The principal database is running without sending any logs to the mirror server, a
condition known as running exposed. This is the state after a failover. A session can also become SUSPENDED as a result of redo
errors or if the administrator pauses the session. SUSPENDED is a persistent state that survives partner shutdowns and startups.
This state is found only on the principal server after a failover has begun, but the server has not transitioned into the mirror role.
When the failover is initiated, the principal database goes into the PENDING_FAILOVER state, quickly terminates any user
connections, and takes over the mirror role soon thereafter.
30. Why we get the below error message while configuring database mirroring?
Msg 1416, Level 16, State 31, Line 3. Database is not configured for database mirroring
We need to restore the Full backup from principal server using With NoRecovery option and also one transactional log backup from
principal server using With NoRecovery option and then start configuring mirroring.
31. Can we configure a single database to be mirrored to more than one server. i.e) One source & many destination like
logshipping?
------------>
A database snapshot is a view of what the source database looked like at the time at which the snapshot was created. This means
that all the objects will be the same as what it was when the snapshot was taken and all of the data will be exactly as it was then. To
use database snapshots to recover from an unwanted DML statement, you need to have a suitable snapshot in place. Snapshots
can only be created by using a T-SQL statement.
When you create a snapshot a sparse file is created for each data file
When data is modified in the source database for the first time, the old value of the modified data is copied to the sparse
file
If the same data is the subsequently changed again, those changes will be ignored and not copied to the snapshot
When you query the snapshot, it first checks if the data is available in the snapshot. If it’s there it reads if from the
snapshot. If it’s not there, I reads through to the source database and gets the data from there instead, because that
means the data has not yet changed since the time the snapshot was taken
When a database snapshot is created, a sparse file is added for each database file in the database of which the snapshot was
taken. A sparse file is basically an empty file. It does not contain any data until a change is made to the source database
The maximum size a sparse file can grow to is the size of the original file at the time of the database creation
Sparse files are limited to 16 GB on Windows 2008 and 64 GB on Windows 2003
Sparse files grow in increments of 64 KB
No.
No.
Database snapshots depend on the source database. They can only be created on the same server as where the
database resides (or the server to which the database is mirrored.)
While there are snapshots present, you cannot drop the database or add any new files to it
Once a database snapshot becomes suspect it cannot be saved. It just has to be deleted. This can happen if the
snapshot runs out of space or reaches the maximum sparse file size limit
You cannot create indexes on snapshots, they are strictly read only
The user permissions are exactly the same as it was in the source database. You cannot grant a user access to a
snapshot. You have to grant the access in the source database and then take another snapshot first before the user will
be able to access it
12) Can we configure mirroring between Standard Edition & Enterprise Edition or Vice Versa?
No it’s not possible, both principal and mirror should have same edition
No
14) Can I create multiple endpoints for configuring different databases for mirroring and point each database to unique
endpoint?
No
15) Can I configure a single database to be mirrored to more than one server. i.e) One source & many destination like
logshipping?
No
16) How to know the database mirroring connection time out in Mirroring?
17) How can I increase Heartbeat time between principal and mirror server? By default its 10 sec.
If principle is down mirror will be disconnected with in recovery instead of synchronized with restoring
If mirroring is set to paused from principle then both principle & mirror in suspending
There are six methods are available for monitoring the Database Mirroring
a) Database Mirroring Monitor:- Database Mirroring Monitor is a GUI tool that shows update status and to configure warning
thresholds.
To open DM Monitor:- Right click on Principal Database > Tasks > Select Launch Database Mirroring Monitor.
b) SQL Server Management Studio:- A green arrow on the mirror server is indicates running well. A red arrow indicates problems
that need to investigate.
c) SQL Server Log:- It provides information of Mirroring establishment and status. If any errors occur it will be logged to SQL Server
log and Windows event log.
d) Performance Monitor:- It can provides real-time information about Database mirroring. We can use performance counters to get
status of the database mirroring such as Bytes received/sec, Bytes sent/sec, Transaction delay etc.
e) Profiler:- Profiler many events are providing the status of the Database mirroring
f) System Stored Procedures:-
sp_dbmmonitoraddmonitoring
sp_dbmmonitorchangemonitoring
sp_dbmmonitorhelpmonitoring
sp_dbmmonitordropmonitoring
22) What will be the impact if we add data files to the Primary database in Database Mirroring?
Data files will be added to the Mirror database if the identical location is present at the mirrored server without any issues.
23) What will be the impact if we add data files to the Primary database with a location which is not present on the Mirrored
server in Database Mirroring?
Database mirroring will not work in this case. We have to break the Mirroring and take a Log backup of the Primary database and
restore it on the Mirror database using “WITH MOVE” and “NORECOVERY” option. Once it’s done then Reestablish the mirroring.
24) If we add any users to the Primary database, will it be copied to the Mirror databases or not?
Yes, It will be copied to the Mirror database with the permissions. However you have to create the login manually with the same
SID.s
Database mirroring provides a feature of automatically redirection of the Application connection to Mirror database in case of
Primary database failures. Database connections configured as below to enable this functionality.
.NET Example
Data Source=SQLA;Failover Partner=SQLB;Initial Catalog = AdventureWorks2008R2 ; Integrated
Security=True
Log buffer is a small contiguous memory structure, only 60k maximum, to host in memory transaction logs per database. When the
transaction is committed, entire buffer will be written to transaction log file before commit finishes.
Automatic page repair is supported by database mirroring. After certain types of errors corrupt a page, making it unreadable, a
database mirroring partner (principal or mirror) attempts to automatically recover the page. The partner/replica that cannot read the
page requests a fresh copy of the page from its partner. If this request succeeds, the unreadable page is replaced by the readable
copy, and this usually resolves the error, this whole process is called Automatic Page Repair.
30) What are the error types which cause and Automatic Page Repair attempt?
Instances that cause
Error
Description automatic page-repair
number
attempt
31) What are the page types which are not repairable using Automatic Page repair option?
Automatic page repair cannot repair the following control page types:
References: Thanks to the all the SQL Server techies who wrote and shared the valuable information in the below blogs which
helped me a lot to prepare this series of Questions. Also big thanks to Microsoft Documentation which contains each and everything
about their product.