빌드스크립트 중 Postgresql DB를 설치하는 부분이다
2016년 1월
PG를 폴더 째 형상관리하는 것이 비효율적이며 기술적으로 어려운부분이 많아
매번 설치 및 삭제하는 것으로 로직을 변경하였다
PG는 크게 EDB 와 BigSQL 두 곳에서 파일을 제공하고 있다
EDB에서 다운받은 installer가 불가사의한 이유로 XEN에서 설치가 불가하여
BigSQL로 갈아탔다
먼저, 인스톨러에 관련된 커맨드라인 옵션을 공부한다, 그리고
3개의 버전에 해당하는
9.4.10 ( install_pg94101.bat )
9.6.1 ( install_pg9611.bat )
9.6.3 ( install_pg9631.bat )
자동 설치 스크립트를 작성하였다
install_pg94101.bat
set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg94\bin
set PGDATA=%PG_ROOT_HOME%\data\pg94
set PGPASSWORD=postgres
set CONFDIR=C:\Multi-Runner\mfobuild\07_build_mfopg
PostgreSQL-9.4.10-1-win64-bigsql.exe --mode unattended --unattendedmodeui minimal --disable-components bam2 --enable-components pgAdmin --prefix "%PG_ROOT_HOME%" --pgdatadir "%PGDATA%" --password postgres --pgservicename "PostgreSQL" --pgfreeport 5432 --locale C
cd %PG_HOME%
initdb.exe -D "%PGDATA%" --username=postgres --locale C --encoding UTF8
cp %CONFDIR%\pg94101\pg_hba.conf %PGDATA%\pg_hba.conf
cp %CONFDIR%\pg94101\postgresql.conf %PGDATA%\postgresql.conf
pg_ctl.exe register -N "PostgreSQL" -D "%PGDATA%"
sc start PostgreSQL
createuser.exe -s -U postgres
psql.exe -p 5432 -U postgres -c "alter user postgres password 'postgres'";
createdb.exe --host=localhost --encoding UTF8 --port=5432 --username=postgres MFO
install_pg9611.bat
set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg96\bin
set PGDATA=%PG_ROOT_HOME%\data\pg96
set PGPASSWORD=postgres
set CONFDIR=C:\Multi-Runner\mfobuild\07_build_mfopg
PostgreSQL-9.6.1-1-win64-bigsql.exe --mode unattended --unattendedmodeui minimal --disable-components bam2 --enable-components pgAdmin --prefix "%PG_ROOT_HOME%" --pgdatadir "%PGDATA%" --password postgres --pgservicename "PostgreSQL" --pgfreeport 5432 --locale C
cd %PG_HOME%
initdb.exe -D "%PGDATA%" --username=postgres --locale C --encoding UTF8
cp %CONFDIR%\pg9611\pg_hba.conf %PGDATA%\pg_hba.conf
cp %CONFDIR%\pg9611\postgresql.conf %PGDATA%\postgresql.conf
pg_ctl.exe register -N "PostgreSQL" -D "%PGDATA%"
sc start PostgreSQL
createuser.exe -s -U postgres
psql.exe -p 5432 -U postgres -c "alter user postgres password 'postgres'";
createdb.exe --host=localhost --encoding UTF8 --port=5432 --username=postgres MFO
같은 9.6 버전이지만 지원하는 옵션이 약간 달라져 아래와 같이 바뀌었다
install_pg9631.bat
set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg96\bin
set PGDATA=%PG_ROOT_HOME%\data\pg96
set PGPASSWORD=postgres
set CONFDIR=C:\Multi-Runner\mfobuild\07_build_mfopg
PostgreSQL-9.6.3-1-win64-bigsql.exe --mode unattended --unattendedmodeui minimal --disable-components bam4 --enable-components pgAdmin --installdir "%PG_ROOT_HOME%" --pgdatadir "%PGDATA%" --password postgres --pgport 5432 --locale C --devopsUser maxgauge --devopsPassword maxgauge
cd %PG_HOME%
initdb.exe -D "%PGDATA%" --username=postgres --locale C --encoding UTF8
cp %CONFDIR%\pg9631\pg_hba.conf %PGDATA%\pg_hba.conf
cp %CONFDIR%\pg9631\postgresql.conf %PGDATA%\postgresql.conf
pg_ctl.exe register -N "PostgreSQL" -D "%PGDATA%"
sc start PostgreSQL
createuser.exe -s -U postgres
psql.exe -p 5432 -U postgres -c "alter user postgres password 'postgres'";
createdb.exe --host=localhost --encoding UTF8 --port=5432 --username=postgres MFO
배치파일로 작성하였다
set으로 시작하는 부분은 변수선언이다
수행문장은 짧으나 많은 절차를 담고 있다
1. DB 엔진설치
2. public DB 생성
3. 설정파일복사
4. 서비스 등록
5. postgres 유저생성
6. postgres pass설정
7. MFO DB 생성
install_pg9631.bat 을 한 번 수행해보면
이러하다
설치한 DB를 패키징에 포함한 후
이후 삭제하는데
이 부분의 스크립트는 다음과 같다 ( 버전상관없음 )
detach_pg.bat
set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg94\bin
set PGDATA=%PG_ROOT_HOME%\data\pg94
sc stop PostgreSQL
sc delete PostgreSQL
%PG_ROOT_HOME%\uninstall\uninstall.exe --mode unattended
rm -rf %PG_ROOT_HOME%
주요 절차는 다음과 같고
1. PostgreSQL 서비스 down
2. PostgreSQL 서비스 remove
3. uninstaller 수행
실제 수행되는 동작은
이렇게 돌아간다
PS. PosgreSQL 10버전이 나온다고 한다.
오라클 12C에 이어 18C도 놀라울 따름인데 세상 참 빠르다