4.2.Миграция данных из реестра версии 3.1 Перед миграцией как первоначальной, так и дополнительной из старой версии реестра (3.1) необходимо убедиться в целостности мигрируемой базы данных (инструкцию по проверке корректности данных мигрируемой базы данных смотрите в приложении А к настоящему документу).
Примечание.
|
| Миграция производится из базы данных реестра версии 3.1 4.0.47 (версия базы 91). Если установлена более ранняя версия реестра 3.0 (3.1), предварительно необходимо обновить до версии 6.0.47.
| Для миграции баз Регионального реестра выполните следующие действия:
Создайте на диске папки storage, tbls_rgu_data и tbls_rgu_index (название папок критично, оно формируется на основании маски tbls_%название базы%_data).
Дайте пользователю PostgreSQL полные права на эти папки.
Рис. 4. – Пример настройки прав доступа к файлу tablespace_index.sql
Разверните скрипты миграции из архива migrate_script.zip.
Пропишите пути в \RGU_DB_2\db\tablespace_data.sql и \RGU_DB_2\db\tablespace_index.sql.
Пример заполнения файла tablespace_data.sql:
-------------------------------------------------------------------------------
-- DESCRIPTION:
-------------------------------------------------------------------------------
\set quoted_location '\'E:/postgresql/tbls_rgu_data\'' CREATE TABLESPACE TBLS_DATA_:DB_NAME LOCATION :quoted_location;
Пример заполнения файла tablespace_index.sql:
-------------------------------------------------------------------------------
-- DESCRIPTION:
-------------------------------------------------------------------------------
\set quoted_location '\'E:/postgresql/tbls_rgu_index\'' CREATE TABLESPACE TBLS_INDEX_:DB_NAME LOCATION :quoted_location;
В файле \RGU_DB_2\db\setup.bat пропишите реальные пути и логины/пароли, создайте папки для хранения документов (storage, doc_storage), изменив следующие параметры в соответствии с настройками путей на компьютере:
@SET DB_NAME=rgu
@SET PG_PATH="C:\Program Files\PostgreSQL\9.1\bin"
@SET PG_DATA="C:\Program Files\PostgreSQL\9.1\data"
@SET PG_USER=postgres
@SET PG_PORT=5432
@SET PG_LOCALEDIR="C:\Program Files\PostgreSQL\9.1\share\locale"
@SET STORAGE_PATH='c:\new\storage\'
@SET R_PORT='5432'
@SET R_HOST='127.0.0.1'
@SET R_DB='old'
@SET R_USER='root'
@SET R_PASS='root'
Рис. 4. – Пример настройки файла setup.bat
Изменяемая часть выделена жирным.
В случае разворачивания БД реестра на платформе linux настройте в файле install_db_remote.sh следующие параметры:
DB_NAME='rgu'
port='5432'
user='root'
password=''
host='localhost'
remote_port='5432'
remote_host='127.0.0.1'
remote_db='sar'
remote_user='root'
remote_password=''
install_fias='f'
force='f'
data_dir='/var/lib/postgresql/9.1/main'
pg_password=''
storage_location='doc_storage'
import_docs='f'
import_docs=
| импортировать/не импортировать документы (t/f)
| storage_location=
| путь к хранилищу документов
| host=
| адрес СУБД postgresql
| port=
| порт СУБД postgresql
| user=
| пользователь в СУБД postgresql
| password=
| пароль в СУБД postgresql
| pg_password=
| пароль учетной записи postgres в системе
| DB_NAME=
| имя БД
| install_fias=
| Загружать/не загружать таблицы ФИАС (t/f)
| data_dir=
| путь к хранилищу СУБД
| force=
| Ускоренная загрузка (t/f)
| remote_port=5432
| порт БД, из которой мигрируются данные
| remote_host='127.0.0.1'
| адрес БД, из которой мигрируются данные
| remote_db='sar'
| имя БД, из которой мигрируются данные
| remote_user='root'
| пользователь БД, из которой мигрируются данные
| remote_password=''
| пароль БД, из которой мигрируются данные
|
Запустите \RGU_DB_2\db\setup.bat (install_db_remote.sh).
Разархивируйте файл dbmaintain-2_4_src_RGU.
Пропишите в файле rgu.properties подключение к смигрированной базе данных в следующих строчках:
database.url=jdbc:postgresql://127.0.0.1:5432/rgu2
database.userName=postgres
database.password=root
Запустите update.bat (update.sh), предварительно установив виртуальную машину JAVA (пункт 4.3.1).
4.2.1.Инкрементное обновление данных Для работы механизма инкрементного обновления данных требуется совпадение значений справочников БД новой версии реестра и реестра версии 3.1.
Для корректной работы миграции файлов в таблице SYSTEM_PROPERTIES в свойстве OLD_RGU_FILE_STORAGE_PATH должен быть прописан путь к хранилищу @SET STORAGE_PATH.
Для инкрементного обновления данных выполните следующие действия:
В таблице SYSTEM_PROPERTIES измените значения OLD_RGU_SERVICE, OLD_RGU_ORG на значения SSN старого реестра, с которого предполагаете начать загрузку. SSN – значение поля SSN таблицы STATUS_HISTORY реестра версии 3.1. Также укажите размер пакета загружаемых данных в параметре "INCREMENT_PORTION".
Примечание.
|
| После инкрементной загрузки значения OLD_RGU_SERVICE, OLD_RGU_ORG повысятся до максимального ssn загруженных объектов.
В таблицу new_registry_regions необходимо прописать двухзначные префиксы регионов, которые не нужно загружать инкрементной загрузкой (в случае федерального реестра необходимо прописать 0).
Рекомендуется ставить максимальное значение SSN.
| 2) Откройте соединение с удаленной БД.
Пример.
|
| Запрос открытия соединения, например, может выглядеть так:
select dblink_connect('old_rgu', 'hostaddr=172.20.7.4 port=5432 user=inc_update password=inc_update11 dbname=rgu').
| 3) Запустите процедуру миграции select * from inc_update('old_rgu');
При запуске процедуры мигрируется 1 пакет данных, размер которого равен значению параметра INCREMENT_PORTION.
Для загрузки последующих пакетов необходимо вызывать функцию inc_update повторно. При этом необходимо следить за значением SSN. Как только оно перестало меняться, миграция завершена.
Пример.
|
| raise notice 'start organization snn = %', org_ssn_start;
v_package_id := next_id();
org_ssn_end := (select organizations_update(org_ssn_start, v_package_id, conn_name));
raise notice 'end organization snn = %', org_ssn_end;.
| 4) Закройте соединение с удаленной БД.
Пример.
|
| Запрос, например, может выглядеть так:
select dblink_disconnect('old_rgu').
| 4.2.2.Миграция пользователей Миграция пользователей производится функцией migrate_users со следующими параметрами:
_CONNSTR - строка подключения в формате libpq.
Пример.
|
| 'hostaddr=192.168.1.1 port=5432 user=root dbname=rgu47’
| _TERRITORY_ID - идентификатор территории в БД Реестра (региона или муниципальной территории в зависимости от административного уровня пользователя), соответствующий территории мигрируемых пользователей. Если параметр равен null, функция пытается автоматически определить территорию на основе таблицы author_node.
Автоматическое определение возможно только для федеральных и региональных пользователей. Данное ограничение накладывает архитектура старой версии реестра.
_LOGIN_SUFFIX - суффикс, который добавляется к логинам пользователей для исключения дублирования с уже имеющимися в объединенной базе данных пользователей. Если параметр равен null, проставляется автоматически по даннном о регионе пользователя.В случае миграции муниципальных пользователей данный параметр становится обязательным.
Пример.
|
| select * from migrate_users(hostaddr=172.20.7.4 port=5432 user=inc_update password=inc_update11 dbname=rgu’, 1002, null).
| 4.2.3.Миграция документов Для миграции документов необходимо перейти в каталог utils/DocsImport, настроить файл config.properties и запустить docs_import.jar.
Файл с настройками config.properties должен лежать в директории, из которой запускается программа.
db_name=sar_new – параметры подключения к базе, в которую идет миграция данных
port=5432
user=root
password=
host=localhost
remote_port=5432 - параметры подключения к базе из которой идет миграция данных
remote_host=127.0.0.1
remote_db=sar
remote_user=postgres
remote_password=root
files_in_folder_count=1000 - максимальное количество файлов в подпапке
folder_preffix=sar - префикс для создаваемых папок (в текущей конфигурации первая папка будет называться sar0).
init_folder_number=0 - с какого номера начинать проверку папок на диске. Меняя значения init_folder_number и folder_preffix можно домигрировать файлы из других реестров.
test_mode=false –пишутся все файлы мигрируемой БД, если true, то пишутся только первые 10 файлов из удаленной базы.
write_full_path=true - писать в базе полный путь к файлам или относительный (для версий после 1.40 должно быть false).
Свойства "OLD_RGU_FILE_STORAGE_PATH" и "STORAGE_ROOT_DIRECTORY_PATH" должны иметь одинаковое значение.
Запустить docs_import.jar из папки utils/DocsImport выполнив команду java –jar docs_import.jar
|