| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | --- | 
					
						
							|  |  |  | title: Backup Metadata | 
					
						
							|  |  |  | slug: /deployment/backup-restore-metadata | 
					
						
							| 
									
										
										
										
											2024-09-05 10:30:31 +02:00
										 |  |  | collate: false | 
					
						
							| 
									
										
										
										
											2024-06-18 15:53:06 +02:00
										 |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Backup & Restore Metadata
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Introduction
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Before upgrading your OpenMetadata version we strongly recommend backing up the metadata. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The source of truth is stored in the underlying database (MySQL and Postgres supported). During each version upgrade there | 
					
						
							|  |  |  | is a database migration process that needs to run. It will directly attack your database and update the shape of the | 
					
						
							|  |  |  | data to the newest OpenMetadata release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It is important that we backup the data because if we face any unexpected issues during the upgrade process, | 
					
						
							|  |  |  | you will be able to get back to the previous version without any loss. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {% note %} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can learn more about how the migration process works [here](/deployment/upgrade/how-does-it-work). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | {% /note %} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Since version 1.4.0, **OpenMetadata encourages using the builtin-tools for creating logical backups of the metadata**: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) for MySQL | 
					
						
							|  |  |  | - [pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html) for Postgres | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For PROD deployment we recommend users to rely on cloud services for their databases, be it [AWS RDS](https://docs.aws.amazon.com/rds/), | 
					
						
							|  |  |  | [Azure SQL](https://azure.microsoft.com/en-in/products/azure-sql/database) or [GCP Cloud SQL](https://cloud.google.com/sql/). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you're a user of these services, you can leverage their backup capabilities directly: | 
					
						
							|  |  |  | - [Creating a DB snapshot in AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html) | 
					
						
							|  |  |  | - [Backup and restore in Azure MySQL](https://learn.microsoft.com/en-us/azure/mysql/single-server/concepts-backup) | 
					
						
							|  |  |  | - [About GCP Cloud SQL backup](https://cloud.google.com/sql/docs/mysql/backup-recovery/backups) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Requirements
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - `mysqldump` 8.3 or higher  | 
					
						
							|  |  |  | - `pg_dump` 13.3 or higher | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you're running the project using docker compose, the `ingestion` container already comes packaged with the | 
					
						
							|  |  |  | correct `mysqldump` and `pg_dump` versions ready to use. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Storing the backup files
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It's important that when you backup your database, you keep the snapshot safe in case you need in later. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can check these two examples on how to: | 
					
						
							|  |  |  | - Use pipes to stream the result directly to S3 (or AWS blob storage) ([link](https://devcoops.com/pg_dump-to-s3-directly/?utm_content=cmp-true)). | 
					
						
							|  |  |  | - Dump to a file and copy to storage ([link](https://gist.github.com/bbcoimbra/0914c7e0f96e8ad53dfad79c64863c87)). |