最近、 当社のお客様は、 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に移行しました。 うまくいく!