Rebuild indexes after a MySQL conversion
This commit is contained in:
parent
dca537ab29
commit
6be0188b5c
|
@ -1,10 +1,11 @@
|
|||
# Migrating GitLab from MySQL to Postgres
|
||||
|
||||
If you are replacing MySQL with Postgres while keeping GitLab on the same
|
||||
server all you need to do is to export from MySQL and import into Postgres as
|
||||
described below. If you are also moving GitLab to another server, or if you are
|
||||
switching to omnibus-gitlab, you may want to use a GitLab backup file. The
|
||||
second part of this documents explains the procedure to do this.
|
||||
server all you need to do is to export from MySQL, import into Postgres and
|
||||
rebuild the indexes as described below. If you are also moving GitLab to
|
||||
another server, or if you are switching to omnibus-gitlab, you may want to use
|
||||
a GitLab backup file. The second part of this documents explains the procedure
|
||||
to do this.
|
||||
|
||||
## Export from MySQL and import into Postgres
|
||||
|
||||
|
@ -21,9 +22,35 @@ mysqldump --compatible=postgresql --default-character-set=utf8 -r databasename.m
|
|||
python db_converter.py databasename.mysql databasename.psql
|
||||
psql -f databasename.psql -d gitlabhq_production
|
||||
|
||||
# Rebuild indexes (see below)
|
||||
|
||||
sudo service gitlab start
|
||||
```
|
||||
|
||||
|
||||
## Rebuild indexes
|
||||
|
||||
The lanyrd database converter script does not preserve all indexes, so we have
|
||||
to recreate them ourselves after migrating from MySQL. It is not necessary to
|
||||
shut down GitLab for this process.
|
||||
|
||||
```
|
||||
# Clone the database converter on your Postgres-backed GitLab server
|
||||
cd /tmp
|
||||
git clone https://github.com/gitlabhq/mysql-postgresql-converter.git
|
||||
|
||||
# Stash changes to db/schema.rb to make sure we can find the right index statements
|
||||
cd /home/git/gitlab
|
||||
sudo -u git -H git stash
|
||||
|
||||
# Generate the `CREATE INDEX CONCURRENTLY` statements based on schema.rb
|
||||
cd /tmp/mysql-to-postgresql-converter
|
||||
ruby index_create_statements.rb /home/git/gitlab/db/schema.rb > index_create_statements.psql
|
||||
|
||||
# Execute the SQL statements against the GitLab database
|
||||
sudo -u git psql -f index_create_statements.psql -d gitlabhq_production
|
||||
```
|
||||
|
||||
## Converting a GitLab backup file from MySQL to Postgres
|
||||
|
||||
GitLab backup files (<timestamp>_gitlab_backup.tar) contain a SQL dump. Using
|
||||
|
@ -64,5 +91,6 @@ sudo -u git -H python mysql-postgresql-converter/db_converter.py gitlabhq_produc
|
|||
|
||||
sudo -u git -H tar rf TIMESTAMP_gitlab_backup.tar db/database.sql
|
||||
|
||||
# Done! TIMESTAMP_gitlab_backup.tar can now be restored into a Postgres GitLab installation.
|
||||
# Done! TIMESTAMP_gitlab_backup.tar can now be restored into a Postgres GitLab
|
||||
# installation. Remember to recreate the indexes after the import.
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue