Commit 5e20b0a73c51f8d480a94a384301135e765b0ad6

Authored by Sytse Sijbrandij
2 parents e6beb609 bc62c283

Merge branch 'new_index_converter' into 'master'

New index converter
Showing 1 changed file with 33 additions and 6 deletions   Show diff stats
doc/update/mysql_to_postgresql.md
... ... @@ -34,21 +34,48 @@ The lanyrd database converter script does not preserve all indexes, so we have
34 34 to recreate them ourselves after migrating from MySQL. It is not necessary to
35 35 shut down GitLab for this process.
36 36  
  37 +
  38 +### For non-omnibus installations
  39 +
  40 +On non-omnibus installations (distributed using Git) we retrieve the index
  41 +declarations from version control using `git stash`.
  42 +
37 43 ```
38 44 # Clone the database converter on your Postgres-backed GitLab server
39 45 cd /tmp
40 46 git clone https://github.com/gitlabhq/mysql-postgresql-converter.git
41 47  
42   -# Stash changes to db/schema.rb to make sure we can find the right index statements
43 48 cd /home/git/gitlab
  49 +
  50 +# Stash changes to db/schema.rb to make sure we can find the right index statements
44 51 sudo -u git -H git stash
45 52  
46   -# Generate the `CREATE INDEX CONCURRENTLY` statements based on schema.rb
47   -cd /tmp/mysql-to-postgresql-converter
48   -ruby index_create_statements.rb /home/git/gitlab/db/schema.rb > index_create_statements.psql
  53 +# Generate add_index.rb
  54 +ruby /tmp/mysql-postgresql-converter/add_index_statements.rb db/schema.rb > /tmp/mysql-postgresql-converter/add_index.rb
  55 +
  56 +# Create the indexes
  57 +sudo -u git -H bundle exec rails runner -e production 'eval $stdin.read' < /tmp/mysql-postgresql-converter/add_index.rb
  58 +```
  59 +
  60 +### For omnibus-gitlab installations
  61 +
  62 +On omnibus-gitlab we need to get the index declarations from a file called
  63 +`schema.rb.bundled`. For versions older than 6.9, we need to download the file.
  64 +
  65 +```
  66 +# Clone the database converter on your Postgres-backed GitLab server
  67 +cd /tmp
  68 +/opt/gitlab/embedded/bin/git clone https://github.com/gitlabhq/mysql-postgresql-converter.git
  69 +cd /tmp/mysql-postgresql-converter
  70 +
  71 +# Download schema.rb.bundled if necessary
  72 +test -e /opt/gitlab/embedded/service/gitlab-rails/db/schema.rb.bundled || sudo /opt/gitlab/embedded/bin/curl -o /opt/gitlab/embedded/service/gitlab-rails/db/schema.rb.bundled https://gitlab.com/gitlab-org/gitlab-ce/raw/v6.9.1/db/schema.rb
  73 +
  74 +# Generate add_index.rb
  75 +/opt/gitlab/embedded/bin/ruby add_index_statements.rb /opt/gitlab/embedded/service/gitlab-rails/db/schema.rb.bundled > add_index.rb
49 76  
50   -# Execute the SQL statements against the GitLab database
51   -sudo -u git psql -f index_create_statements.psql -d gitlabhq_production
  77 +# Create the indexes
  78 +/opt/gitlab/bin/gitlab-rails runner 'eval $stdin.read' < add_index.rb
52 79 ```
53 80  
54 81 ## Converting a GitLab backup file from MySQL to Postgres
... ...