What you will be able to do
- Tell primary and secondary objects apart, and say when a replication group or a failover group is the right fit
- Say which replication features each Snowflake edition supports, and what happens when you replicate to a lower edition
- Say which database and account-level objects replicate, and which are skipped
- State that Automatic Clustering of clustered tables and materialized views are replicated with a database
- Explain how role replication affects grants and local changes in a target account
- Configure a primary and a secondary failover group with a replication schedule
Key concept
Failover group — A replication group whose secondary copy can be promoted to primary. A secondary group is always read-only. Promoting a failover group's secondary makes its objects writable in that account, which is the basis of Snowflake disaster recovery.
1.Primary and secondary objects, replication and failover groups
Replication copies objects from a source account to one or more target accounts in the same organization. It works across regions and across cloud platforms. The source holds the primary objects. Each target holds secondary objects, which are replicas of those primaries. A primary is where your workloads write. A secondary is a read-only copy you keep for reporting in another region, or as a standby you can switch to.
You don't replicate objects one at a time. You put them in a group, which Snowflake replicates as a unit. Snowflake has two kinds of group:
- A replication group gives read-only access to the replicated objects, and its secondary can never become writable. - A failover group adds promotion: any account in the group's allowed-accounts list can be promoted to hold the primary failover group.
Both kinds keep the replicated objects consistent with each other as of a single point in time in the target account. A replication group suits read-only uses, such as serving data closer to consumers in another region. A failover group suits business continuity, because it lets the target take over writes.
Checkpoint 1 of 6· Check yourself
A secondary failover group in account B is a replica of a primary in account A. Which statement about the objects in account B is correct?
A secondary failover group gives read-only access. Read-write access comes only after the group is promoted to primary.
“When a secondary failover group is promoted to become the primary failover group, read-write access is available.”Source: docs.snowflake.com
What a primary database brings to its secondary includes the objects inside it. Two of those objects matter for this exam: Automatic Clustering of clustered tables and materialized views. The replicated-objects list marks both as replicated. So when a database is in a replication or failover group, clustered tables with Automatic Clustering and materialized views are part of what the secondary database receives on each refresh. Neither one is on the list of skipped types, unlike external tables, hybrid tables and event tables, which are not replicated. The sources here say only that these two are replicated. They don't describe how clustering or materialized view maintenance runs in the target account.
Sources1
2.What each edition allows, and replicating to a lower edition
| Feature | Standard | Enterprise | Business Critical / VPS |
|---|---|---|---|
| Database replication | Yes | Yes | Yes |
| Share replication | Yes | Yes | Yes |
| Replication Group | Yes | Yes | Yes |
| Account object (other than database and share) replication | No | No | Yes |
| Failover Group | No | No | Yes |
| Data protected with Tri-Secret Secure | No | No | Yes |
This leads to a common scenario question. A Standard or Enterprise account can replicate databases and shares in a replication group, but it can't replicate users, roles, warehouses or other account objects, and it can't fail over. If an account is upgraded to Business Critical, Snowflake says failover capabilities can take up to 12 hours to become available.
Replicating to a lower edition is allowed, with a guard. Suppose a primary replication group in a Business Critical (or higher) account contains only databases and shares, and one or more of its approved target accounts are on a lower edition. Snowflake shows an error message. The same happens when a Business Critical account has a HIPAA/HITRUST business associate agreement for PHI data and a target account doesn't, even if that target is also Business Critical. The purpose is to stop administrators from sending sensitive data to accounts that weren't meant to hold it. ACCOUNTADMIN, or a role with CREATE REPLICATION GROUP, CREATE FAILOVER GROUP or OWNERSHIP on the group, can override the check. The sources cut off before saying how the override is done.
Checkpoint 2 of 6· Check yourself
A Business Critical account creates a replication group containing two databases. One allowed target account is on Enterprise Edition. What happens?
Snowflake raises an error so that sensitive data isn't replicated to a lower edition by accident. ACCOUNTADMIN, or a role with CREATE REPLICATION GROUP, CREATE FAILOVER GROUP or OWNERSHIP, can override it.
“help prevent account administrators for Business Critical (or higher) accounts from inadvertently replicating sensitive data to accounts on lower editions.”Source: docs.snowflake.com
3.Which objects replicate, and group membership rules
Account-level objects need Business Critical: users, roles (account and database roles plus their grant hierarchies), warehouses, resource monitors, network policies, account parameters, and security, API, notification, storage and external access integrations. Some integrations need extra work in the target. A replicated storage integration needs a new trust relationship with your cloud storage, and replicated external functions need to be granted access to the remote service again.
When you replicate a database, the objects inside it go too, but not every type is supported. Snowflake skips unsupported objects during replication, so they won't exist in the target after a failover. The table lists the types this exam guide names.
| Object | Replicated? | Note |
|---|---|---|
| Automatic Clustering of clustered tables | Yes | Listed as replicated |
| Materialized views | Yes | Listed as replicated |
| External tables | No | Skipped during replication |
| Hybrid tables, event tables, temporary tables | No | Skipped during replication |
| Apache Iceberg tables | Yes | Snowflake-managed only; requires external volume replication |
| Stages, pipes | Yes | Replication and failover groups only; not database replication |
| Streams, tasks | Yes | See replication considerations |
| Masking, row access, tag-based masking policies; tags | Yes | See policy replication considerations |
Iceberg tables depend on external volumes, which are account-level objects. You have to configure replication for the external volume before an Iceberg table can replicate.
Group membership has its own rules for databases and shares:
- An object can be in only one failover group. - An object can be in several replication groups, as long as each group replicates to a different target account. - An object can't be in a failover group and a replication group at the same time. - An account can have only one replication or failover group that contains objects other than databases and shares. - Only outbound shares replicate. Inbound shares from providers don't.
Checkpoint 3 of 6· Check yourself
Database SALES is already a member of failover group FG1. An engineer wants SALES in replication group RG1 too, for a reporting account. What is the outcome?
The 'different target account' exception covers an object in several replication groups. It doesn't cover mixing a failover group with a replication group.
“An object cannot be in both a failover group and a replication group.”Source: docs.snowflake.com
4.How replication affects access control
If you replicate roles, each database refresh also brings across the grants on the secondary database and the objects in it. The target ends up with the source's privilege model, not just its data. Roles include the privileges granted to them and roles granted to other roles. If users are also replicated, the grants of roles to users replicate too. The REPLICATE and FAILOVER privileges are the exception: they never replicate, so you have to grant them separately in each target.
Every secondary object is read-only, and that includes replicated account objects. If USERS replicate, you can't create or change users in the target. If ROLES replicate, you can't create or change roles there, so you can't grant privileges on a secondary object locally. You can still create local databases and shares in the target, and you can grant privileges on those local objects to a secondary role.
Objects you created in the target outside replication (for example, with scripts) have no global identifier by default. A refresh drops any account object of a replicated type that has no global identifier. That is why the first refresh of USERS or ROLES can fail on purpose.
| Privilege | Object | Grants the ability to |
|---|---|---|
| CREATE REPLICATION GROUP / CREATE FAILOVER GROUP | Account | Create a group (must be granted by ACCOUNTADMIN) |
| REPLICATE | Replication Group, Failover Group | Refresh a secondary group |
| FAILOVER | Failover Group | Promote a secondary failover group to primary |
| MODIFY | Replication Group, Failover Group | Change settings or properties |
| MONITOR | Replication Group, Failover Group | View details |
Checkpoint 4 of 6· Check yourself
USERS and ROLES replicate from account A to account B. In account B, which action can an administrator still perform?
Replicated users, roles and secondary objects are read-only in the target. Granting privileges on local objects to a secondary role is still allowed.
“However, privileges can be granted to (or revoked from) a secondary role on local objects”Source: docs.snowflake.com
5.Setting up account replication with a schedule
Setup starts at the organization level. An organization administrator turns on replication for every source and target account by setting ENABLE_ACCOUNT_DATABASE_REPLICATION. Use the organization_name.account_name identifier. The legacy account locator can give unexpected results when several accounts share the same locator.
-- Enable replication by executing this statement for each source and target account in your organization
SELECT SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER('<organization_name>.<account_name>', 'ENABLE_ACCOUNT_DATABASE_REPLICATION', 'true');Next, create the primary group in the source account. In the statement you list the object types, the allowed databases, the allowed target accounts, and optionally a replication schedule. Adding a database to a group requires the MONITOR privilege on that database. If a database was previously enabled for replication with ALTER DATABASE, first call SYSTEM$DISABLE_DATABASE_REPLICATION on it. Snowflake doesn't copy that database's data again: the group refresh sends only the changes since the last refresh.
Checkpoint 5 of 6· Fill the gap
Which property makes this failover group refresh automatically every ten minutes?
USE ROLE myrole; CREATE FAILOVER GROUP myfg OBJECT_TYPES = USERS, ROLES, WAREHOUSES, RESOURCE MONITORS, DATABASES ALLOWED_DATABASES = db1, db2 ALLOWED_ACCOUNTS = myorg.myaccount2, myorg.myaccount3 ? = '10 MINUTE';REPLICATION_SCHEDULE on the primary group sets scheduled replication. Secondaries are then refreshed on that schedule.
Source: docs.snowflake.comThen, in each target account, create the secondary as a replica of the primary. If the primary has a schedule, Snowflake runs the first refresh automatically when the secondary is created. Otherwise, a role with the REPLICATE privilege on the group runs ALTER FAILOVER GROUP myfg REFRESH by hand.
USE ROLE myrole; CREATE FAILOVER GROUP myfg AS REPLICA OF myorg.myaccount1.myfg;Checkpoint 6 of 6· Exam question
An Enterprise edition account holds a SALES database. The BI team works in a different cloud region and needs a read-only copy close to them for reporting. No failover capability is required. What is the MOST appropriate approach?
Correct answer: C — Create a secondary database in the target account with CREATE DATABASE sales AS REPLICA OF after enabling replication on the source, then refresh it
- A. Incorrect: direct shares only work within the same region and cloud platform. Reaching another region requires replicating the data first.
- B. Incorrect: failover groups require Business Critical edition, and promotion is a failover feature the scenario does not need. A read-only reporting copy needs neither.
- C. Correct: database replication creates a read-only secondary in the other region, refreshed from the primary. This is the intended use of a secondary database, reporting close to consumers, and it works on Enterprise edition.
- D. Incorrect: zero-copy cloning only works within a single account, so a database cannot be cloned into a different account or region.
Sources2
Exam traps
Each one states something that sounds right. Open it to see what is actually true.
1.Any edition can create a failover group, because replication groups work everywhere.Why is that wrong?
Replication groups, database replication and share replication work on every edition. Failover groups and account-object replication need Business Critical or higher.
Covered in What each edition allows, and replicating to a lower edition
2.After ROLES replicate, you can still create extra roles in the target account for local users.Why is that wrong?
Replicated object types are read-only in the target. With ROLES replicated, you can't create or change roles there.
Covered in How replication affects access control
3.Users created by script in the target survive the first refresh that replicates USERS.Why is that wrong?
A refresh drops account objects of replicated types that have no global identifier. Script-created objects don't have one by default.
Covered in How replication affects access control
Sources
Every claim above is drawn from one of these pages, quoted as it was written on the date shown.
- 1.
“Replication groups provide read-only access for the replicated objects.”
↩︎ Primary and secondary objects, replication and failover groups“Replication and failover groups provide point-in-time consistency for the objects on the target account.”
↩︎ Primary and secondary objects, replication and failover groups“You can promote any target account specified in the list of allowed accounts in a failover group to serve as the primary failover group.”
↩︎ Primary and secondary objects, replication and failover groups“Replication for a database includes the objects contained in that database.”
↩︎ Primary and secondary objects, replication and failover groups“Automatic Clustering of clustered tables | ✔”
↩︎ Primary and secondary objects, replication and failover groups“Materialized views | ✔”
↩︎ Primary and secondary objects, replication and failover groups“or OWNERSHIP privilege can override this”
↩︎ What each edition allows, and replicating to a lower edition“Objects that are not supported for replication are skipped during replication”
↩︎ Which objects replicate, and group membership rules“Only Snowflake-managed Iceberg tables are supported. Replication for Iceberg tables requires external volume replication.”
↩︎ Which objects replicate, and group membership rules“the database refresh also synchronizes the privilege grants on the secondary database and the objects in the database”
↩︎ How replication affects access control“The REPLICATE and FAILOVER privileges are not replicated.”
↩︎ How replication affects access control“A failover group is a replication group that can also fail over.”
↩︎ Key concept“Database replication and share replication are available on all editions. Replication of all other objects is only available for Business Critical Edition (or higher).”
↩︎ Exam trap 1“When a secondary failover group is promoted to become the primary failover group, read-write access is available.”
↩︎ Checkpoint“Failover group replication requires Business Critical Edition or higher.”
↩︎ Prediction“help prevent account administrators for Business Critical (or higher) accounts from inadvertently replicating sensitive data to accounts on lower editions.”
↩︎ Checkpoint - 2.
“When you upgrade an account to Business Critical Edition (or higher), it might take up to 12 hours for failover capabilities to become available.”
↩︎ What each edition allows, and replicating to a lower edition“an organization administrator uses the SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER function to set the ENABLE_ACCOUNT_DATABASE_REPLICATION parameter to true.”
↩︎ Setting up account replication with a schedule“If the primary failover group is created with a replication schedule, the initial refresh of the secondary failover group is automatically executed”
↩︎ Setting up account replication with a schedule“must have replication disabled before they can be added to a replication or failover group”
↩︎ Setting up account replication with a schedule“Snowflake does not re-replicate the data that has already been replicated for that database.”
↩︎ Setting up account replication with a schedule - 3.
“An account can only have one replication or failover group that contains objects other than databases or shares.”
↩︎ Which objects replicate, and group membership rules“An object can be in multiple replication groups as long as each group is replicated to a different target account.”
↩︎ Which objects replicate, and group membership rules“All secondary objects in a target account, including secondary databases and shares, are read-only.”
↩︎ How replication affects access control“If ROLES are also replicated to the target account, new roles cannot be created or modified in that target account.”
↩︎ Exam trap 2“the refresh operation drops any account objects of the types in the OBJECT_TYPES list in the target account that have no global identifier.”
↩︎ Exam trap 3“An object cannot be in both a failover group and a replication group.”
↩︎ Checkpoint“However, privileges can be granted to (or revoked from) a secondary role on local objects”
↩︎ Checkpoint