Backup & Recovery for ServiceNow
Docker + MySQL
Set up a protection scope, define a recovery procedure, and validate that restored records support the business process.
What you will leave with
A documented protection scope and a recovery rehearsal with measured results, exceptions, and clear ownership.
In this guide
Deployment model
Configure a protection workflow from ServiceNow through your container into the selected database. Define recovery as a tested operation with an agreed destination and approval path.
- Separate the capture identity from the authority to write restored records. Give each the access required by its task and document the people who approve recovery.
- Define whether the protection scope includes records, relationships, files, and configuration. A record count alone does not establish that a business process can be recovered.
- The application's retained data and the destination database need their own operating procedures. Test both record recovery and the database recovery process against business requirements.
Use the installation package and version-specific configuration supplied for your deployment. This guide covers the source, host, database, and workflow decisions that remain consistent across package versions.
Before you begin
Bring the application owner, infrastructure owner, and data owner into the same deployment review. Agree the boundaries before configuring a connection.
Decisions to make together
- What data loss and service interruption can the business tolerate?
- Are files, metadata, relationships, and custom fields required in the recovery scope?
- Where can a restore be tested without changing production records?
- A ServiceNow administrator and an approved non-production instance.
- An inventory of tables, reference fields, inherited fields, and attachment requirements.
- An agreed integration identity and a review of the instance access rules.
- The connection authentication method and a list of permitted operations for this workflow.
Prepare ServiceNow
Define the ServiceNow instance, tables, and access rules for the workflow. Use a non-production instance to validate the configuration before applying it to production.
Table and field scope
List required tables and fields, including inherited fields and reference values. Include a record with related tasks or attachments when validating whether the scope is complete.
Access and business rules
Review table and field access with the instance administrator. For any proposed write operation, identify business rules and flows that may run, and agree how the test will be isolated.
Inspect a small ServiceNow record set
Use the REST API Explorer or an approved authenticated REST client against your non-production instance. This example requests ten incidents and their stored reference values. Adjust the table and fields to your approved scope.
HTTP
GET /api/now/table/incident?sysparm_query=ORDERBYsys_id&sysparm_fields=sys_id,number,short_description,caller_id,sys_updated_on&sysparm_limit=10&sysparm_display_value=falseWhat to verify
Check the result array against records visible to the integration identity. Preserve sys_id values for matching; display labels are not stable record keys. An empty result can reflect the query or permissions. For a larger extract, define pagination and reconcile changes during capture. Download required attachment bytes through the Attachment API; a metadata row alone does not preserve the file.
ServiceNow: Table API parameters and responsesPrepare Docker
Prepare a container deployment with explicit network boundaries, persistent storage, and a controlled image version.
Image and configuration
Use the image reference and configuration supplied with your deployment package. Pin the agreed version and keep credentials in your approved secret mechanism rather than the image or source control.
Container networking
Map the routes to the source system and database. A database hostname reachable from the host is not necessarily reachable from a container; validate the route from the deployment network.
State and lifecycle
Identify every persistent volume and its owner. Plan resource limits, logs, restart behavior, and upgrades. Replacing a container must not silently discard the retained data or operating history.
Check the supplied Compose deployment
From the directory containing your approved Compose file, inspect the declared service names and running containers. Replace SERVICE_NAME with an actual name from the first command. These commands do not create or remove containers or volumes.
Shell
docker compose config --services
docker compose ps --all
docker compose logs --tail=50 SERVICE_NAMEWhat to verify
Check for restart loops or connection errors. Confirm that database files, attachments, and application state use the persistent mounts defined by the package. Docker volumes outlive individual containers, but volume deletion still removes that data; a volume is not a backup. Redact secrets and customer data before sharing logs.
Docker: volume persistence and lifecyclePrepare MySQL
Prepare a MySQL destination with a dedicated application database, a scoped connection identity, and an approved authentication method.
Compatibility and connection
Record the server version, driver, authentication plugin, and TLS configuration. Validate the connection from the application host using the connection identity that will run the workflow.
Types and encoding
Include non-ASCII text, nulls, precise numbers, long text, and date values in the validation dataset. Review character set, collation, and SQL mode when comparing source values with the stored result.
Capacity and ownership
Agree the account's schema privileges and the owner of database backups and maintenance. Measure storage growth during the first run and document restart and reconnect behavior.
Check the MySQL connection context
Run these read-only statements after selecting the intended database with the application identity. Inspect character encoding and SQL mode before comparing text and date values.
SQL
SELECT DATABASE() AS database_name,
CURRENT_USER() AS authenticated_account,
VERSION() AS server_version;
SELECT @@character_set_database, @@collation_database, @@sql_mode;
SHOW SESSION STATUS LIKE 'Ssl_cipher';What to verify
Confirm the database and authenticated account. A remote TLS connection should report a cipher. With the MySQL command-line client, --ssl-mode=VERIFY_IDENTITY and the appropriate CA verify the hostname as well as the certificate; a cipher by itself does not prove those checks ran.
MySQL: connection and TLS verification optionsConfigure the workflow
Start with a representative dataset, then expand the scope after validation. Use the connection settings established above and keep source changes behind the appropriate approval.
Set the recovery objective
List the incidents you need to recover from: accidental deletion, a bad update, or a failed integration. Agree the acceptable data loss and restoration time with the business owner; measure these during validation rather than assuming a service guarantee.
Choose a representative protection scope
Identify the required objects or tables, relationships, attachments, and configuration dependencies. Record the minimum set that makes a recovered business record usable.
Design a recovery rehearsal
Use a sandbox or a dedicated test dataset. Define how restored records will be matched, how conflicting changes will be handled, and who approves writes. Record the restore target and matching policy before executing the test.
Record the result
Compare restored values and relationships against the expected state. Capture elapsed time, failed records, retry behavior, and any manual actions. Keep the recovery procedure with the people responsible for operating it.
Rehearsal: validate one service recovery scenario
With the platform owner, choose a non-production service record and document the unwanted change you need to recover from. Agree the supported capture and restore procedure for your deployment before executing it.
- Record the pre-change field values, sys_id, references, required journals, and attachment checksums.
- Confirm the retained data covers those requirements and record any exclusions.
- Review the proposed recovery target and writes, including business rules and flows they may trigger.
- Use the agreed recovery procedure, then have the service owner validate record usability and measure the result.
Scope of this example
A Table API export is not a full-instance backup. Verify the delivered recovery capability, identifier handling, journal behavior, and target-instance support before adopting this rehearsal as a production runbook.
Validate before expanding
- The protection scope lists both included data and explicit exclusions.
- A representative recovery has been rehearsed in an approved test environment.
- Restored records retain the fields and relationships required by the business process.
- Measured recovery time, data coverage, and unresolved exceptions are documented.
Keep a deployment record
Record the package version, environment, data scope, test date, expected result, actual result, and owner of each unresolved issue. Keep secrets and customer data out of shared support notes.
Everyday operations
After each run
Review completion status, record counts, failures, and source API usage. Resolve unexpected differences before allowing the next dependent action.
When credentials change
Update the connection through the approved secret process, verify a bounded read, and retest the required operations. Remove obsolete credentials.
When the source changes
Review added or changed objects, fields, access rules, and automation. Repeat representative data and permission checks before expanding the scope.
Before an upgrade
Record the current package and configuration, protect persistent data, and define the rollback procedure. Validate connectivity and a representative workflow after the change.
Troubleshooting
A recovery test cannot recreate the expected state
Review the captured fields, source identifiers, parent dependencies, and destination permissions. Check whether automation or validation rules affect writes.
The recovery window is too long
Separate time spent retrieving data from API throttling, dependency ordering, and manual review. Revisit the scope and objectives before promising a shorter window.
Recovered records conflict with newer changes
Pause further writes and review the matching and conflict policy. Avoid rerunning the same operation until duplicate and overwrite behavior is understood.
MySQL values differ from the source
Compare encoding, collation, numeric and timestamp types, and SQL mode. Use a representative sample and inspect failed or truncated writes before expanding the dataset.
Technical references
Use these official references for the source APIs, database connection settings, and runtime behavior discussed above. They describe the underlying platforms; use your Vivly package documentation for its installation and supported configuration.
Review this deployment with Vivly
Bring your source scope, host, database, and success criteria. We will use them to identify the applicable package, open questions, and rollout sequence.
Book a demo