I need migrate DB from faildown AKS conteiners with postgres 9.6 to Azure Database for PostgreSQL 11
so I use:
- #istall psql client
- sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- sudo yum install -y postgresql11
- #install docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-nightly
sudo yum-config-manager --enable docker-ce-test
sudo yum-config-manager --disable docker-ce-nightly
sudo yum install docker-ce docker-ce-cli containerd.io
yum list docker-ce --showduplicates | sort -r
wq
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
sudo docker run hello-world
- #install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
or
sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
- #vi docker-compose-postgres.yml
version: '3'
services:
database:
image: postgres:9.6.23 # use latest official postgres version
env_file:
- database.env # configure postgres
volumes:
- database-data:/var/lib/postgresql/data/ # persist data even if container shuts down
ports:
- "5432:5432"
volumes:
database-data: # named volumes can be managed easier using docker-compose
- #vi database.env
-
POSTGRES_USER=ksi
POSTGRES_PASSWORD=ksi
POSTGRES_DB=ksi
-
- #sudo docker-compose -f docker-compose-postgres.yml up -d
- #docker ps
- #psql --host=127.0.0.1 --username=ksi --dbname=ksi
-
Еще один вариант подключиться к базе данных, не устанавливая дополнительных утилит — подключиться непосредственно к Docker-контейнеру. Для этого выполним команду docker exec с дополнительными ключами:
-
sudo docker exec -it $(docker ps| grep postgres | awk '{print $1}') psql -U ksi
- sudo docker exec -it $(docker ps| grep postgres | awk '{print $1}') bash
-
- After that I have run DB server with DBs located on folder
- ll /var/lib/docker/volumes/psql_database-data/_data/
- #sudo docker-compose -f docker-compose-postgres.yml down
-
#get our DBs dump
DBuser='ksi'
DBdbname='ksi'
DBhost='127.0.0.1'
pg_dump -Fc --host=$DBhost --username=$DBuser $DBdbname --file=sandbox.dump -
#restore to Azure Database for PostgreSQL default DBdbname='postgres'
DBuser='{azureAdminDB}@{azureDBhostname}'
DBpass='{azurePassDB}'
DBdbname='{AzureDB}'
DBhost='{azureDBhostname}.postgres.database.azure.com'
#for connect to Azure DB? if need test connect/creat/flush DB
psql "host=$DBhost port=5432 dbname=$DBdbname user=$DBuser sslmode=require" - show DB version
- SELECT version();
- CREATE DATABASE lusiadas;
- DROP DATABASE <database_name>;
- DROP DATABASE db_name WITH (FORCE)
pg_restore --no-owner --host=$DBhost --port=5432 --username=$DBuser --dbname=$DBdbname $DBdbname.dump