Redmine:MySQLからPostgreSQL 9.5への移行

画像

最近、 当社のお客様は MySQLからPostgreSQLへの移行をますます求めています。 実際、PostgreSQLの積極的な開発により、開発者はDBMSの変更について考えるようになります。 多くの場合、これにより、既存のMySQLデータベースが「成長」した大量のデータを転送するという問題が生じます。



私たち自身はRedmineのアクティブユーザーであり、プラグイン開発者でもあります。そのため、移行プロセスを説明するためにこのCRMを選択しました。



以下に、CentOS 6上のRedmineでMySQLデータベースからPostgreSQL 9.5に移行する1つの方法を説明します。







それでは、始めましょう:



1.最初に、PostgreSQL 9.5リポジトリをインストールします



rpm -ihv https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-2.noarch.rpm
      
      







2. PostgreSQL 9.5自体をインストールします。



 yum install postgresql95-server postgresql95-contrib postgresql95-devel service postgresql-9.5 initdb ru_RU.utf8 chkconfig postgresql-9.5 on alternatives --install /usr/bin/psql psql /usr/pgsql-9.5/bin/psql 5000 alternatives --install /usr/bin/pg_dump pg_dump /usr/pgsql-9.5/bin/pg_dump 5000 alternatives --install /usr/bin/pg_config pg_config /usr/pgsql-9.5/bin/pg_config 5000 alternatives --install /usr/bin/createdb createdb /usr/pgsql-9.5/bin/createdb 5000 alternatives --install /usr/bin/createuser createuser /usr/pgsql-9.5/bin/createuser 5000 alternatives --install /usr/bin/dropdb dropdb /usr/pgsql-9.5/bin/dropdb 5000 alternatives --install /usr/bin/dropuser dropuser /usr/pgsql-9.5/bin/dropuser 5000 alternatives --install /usr/bin/pg_dumpall pg_dumpall /usr/pgsql-9.5/bin/pg_dumpall 5000 alternatives --install /usr/bin/createuser createuser /usr/pgsql-9.5/bin/createuser 5000
      
      







3. pgtune.leopard.in.uaを使用してPostgreSQLのチューニングを行い 、修正された設定をファイルの最後に追加します。



4. localhostのみがネットワーク経由またはソケット経由でログインでき、rootがパスワードなしでユーザー「postgres」の下に移動できるように、PostgreSQL認証を設定します。



pg_hba.conf:

 local all postgres ident map=supervisor host all all 127.0.0.1/32 md5
      
      







pg_ident.conf:

 supervisor postgres postgres supervisor root postgres
      
      







5. PostgreSQLでユーザーとredmineデータベースを作成します。

 createuser --username=postgres --no-superuser --no-createdb --no-createrole --encrypted redmine createdb --username=postgres --encoding=utf-8 --template=template0 --owner=redmine redmine psql --username=postgres --dbname=postgres --command="ALTER USER \"redmine\" WITH ENCRYPTED PASSWORD 'yourgreatpassword'"
      
      







6. PostgreSQLの承認データを書き留め、redmine / config / database.ymlのMySQL承認についてコメントします。

 #  ,     (!) production: adapter: postgresql database: redmine host: localhost username: redmine password: "yourgreatpassword"
      
      







7.データ移行用のツールをインストールします。



私の選択はpy-mysql2pgsqlでした。 yaml_dbなどのツールは効果がありませんでした-Redmineは移行を開始するときに頑固にエラーをスローしました。



py-mysql2pgsqlを構成します。



インストール:

 yum install python-pip python-devel pip install py-mysql2pgsql
      
      







最初の実行を行い、構成ファイルテンプレートを作成します。

 py-mysql2pgsql
      
      







py-mysql2pgsql.ymlを編集し、MySQLと新しいPostgreSQLデータベースの認証データを入力します。



データ移行を実施します。 平均的なサーバー上の1 GBデータベースの場合、このプロセスには約15分かかりました。

 py-mysql2pgsql -v -f mysql2pgsql.yml
      
      







以上です!



質問をして、推奨事項を書いてください。 コメントで議論できることを嬉しく思います。



PS同様に、200 GBのZabbixデータベースをMySQLからPostgreSQLに移行しました。 うまくいく!



All Articles