github.com/grafana/pyroscope@v1.18.0/docs/internal/V2-MIGRATION.md (about) 1 # Migration v1 to v2 2 3 ## Single binary 4 5 ### First deploy v1 6 7 - Note: Needs persistence enabled otherwise data will be lost after restart 8 9 ``` 10 helm upgrade \ 11 pyroscope \ 12 ./operations/pyroscope/helm/pyroscope \ 13 --install \ 14 --set architecture.storage.v1=true \ 15 --set architecture.storage.v2=false \ 16 --set pyroscope.persistence.enabled=true 17 ``` 18 19 ### Step: 2: Deploy v2 and enable dual ingest 20 21 - Note: The python command will switch to the v2 read path for data ingested 10 minutes after it is run. 22 23 ``` 24 helm upgrade \ 25 pyroscope \ 26 ./operations/pyroscope/helm/pyroscope \ 27 --set architecture.storage.v1=true \ 28 --set architecture.storage.v2=true \ 29 --set pyroscope.persistence.enabled=true \ 30 --set architecture.storage.migration.queryBackendFrom=$(python3 -c "import datetime; print((datetime.datetime.now(datetime.UTC)+ datetime.timedelta(minutes = 10)).strftime('%Y-%m-%dT%H:%M:%SZ'))") 31 ``` 32 33 ### Step 3: Remove v1 components 34 35 Once data before Step 2 is no longer relevant, we can get rid of the v1 components. This will loose all data before Step 2. 36 37 ``` 38 helm upgrade \ 39 pyroscope \ 40 ./operations/pyroscope/helm/pyroscope \ 41 --set architecture.storage.v1=false \ 42 --set architecture.storage.v2=true \ 43 --set pyroscope.persistence.enabled=true 44 ``` 45 46 47 ## Micro-Services 48 49 ### First deploy v1 50 51 - Note: Needs persistence enabled otherwise data will be lost after restart 52 - Note: `--set architecture.overwriteResources.requests.cpu=10m` allow this to be tested without allocation many resources, this should not be used in production 53 54 55 ``` 56 helm upgrade \ 57 pyroscope \ 58 ./operations/pyroscope/helm/pyroscope \ 59 --install \ 60 --set architecture.microservices.enabled=true \ 61 --set architecture.overwriteResources.requests.cpu=10m \ 62 --set minio.enabled=true \ 63 --set architecture.storage.v1=true \ 64 --set architecture.storage.v2=false \ 65 --set pyroscope.persistence.enabled=true 66 ``` 67 68 ### Step: 2: Deploy v2 and enable dual ingest 69 70 - Note: The python command will switch to the v2 read path for data ingested 10 minutes after it is run. 71 72 ``` 73 helm upgrade \ 74 pyroscope \ 75 ./operations/pyroscope/helm/pyroscope \ 76 --set architecture.microservices.enabled=true \ 77 --set architecture.overwriteResources.requests.cpu=10m \ 78 --set minio.enabled=true \ 79 --set architecture.storage.v1=true \ 80 --set architecture.storage.v2=true \ 81 --set pyroscope.persistence.enabled=true \ 82 --set architecture.storage.migration.queryBackendFrom=$(python3 -c "import datetime; print((datetime.datetime.now(datetime.UTC)+ datetime.timedelta(minutes = 10)).strftime('%Y-%m-%dT%H:%M:%SZ'))") 83 ``` 84 85 86 ### Step 3: Remove v1 components 87 88 Once data before Step 2 is no longer relevant, we can get rid of the v1 components. This will loose all data before Step 2. 89 90 ``` 91 helm upgrade \ 92 pyroscope \ 93 ./operations/pyroscope/helm/pyroscope \ 94 --set architecture.microservices.enabled=true \ 95 --set minio.enabled=true \ 96 --set architecture.storage.v1=false \ 97 --set architecture.storage.v2=true \ 98 --set pyroscope.persistence.enabled=true 99