Skip to content

Instantly share code, notes, and snippets.

@dmagda
Last active July 20, 2024 21:23
Show Gist options
  • Save dmagda/d35eab9a000e7a26e7a77510fc252952 to your computer and use it in GitHub Desktop.
Save dmagda/d35eab9a000e7a26e7a77510fc252952 to your computer and use it in GitHub Desktop.

Startup Scripts for YugabyteDB and PostgreSQL

Start a database instance within a few seconds on you machine.

PostgreSQL

Start in basic configuration:

docker network create custom-network

rm -R ~/postgresql_data/
mkdir ~/postgresql_data/

docker run --name postgresql --net custom-network \
    -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password \
    -p 5432:5432 \
    -v ~/postgresql_data/:/var/lib/postgresql/data -d postgres:13.8

Start with PostGIS:

docker network create custom-network

rm -R ~/postgresql_data/
mkdir ~/postgresql_data/

docker run --name postgresql --net custom-network \
    -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password \
    -p 5432:5432 \
    -v ~/postgresql_data/:/var/lib/postgresql/data -d postgis/postgis:15-3.3

Start with pgvector:

docker network create custom-network

rm -R ~/postgresql_data/
mkdir ~/postgresql_data/

docker run --name postgresql --net custom-network \
    -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password \
    -p 5432:5432 \
    -v ~/postgresql_data/:/var/lib/postgresql/data -d ankane/pgvector:latest

Start with pg_vectorize

rm -R ~/postgresql_data/
mkdir ~/postgresql_data/

docker run -d --name postgresql --net custom-network \
-e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password \
-p 5432:5432 \
-v ~/postgresql_data/:/var/lib/postgresql/data \
-d quay.io/tembo/vectorize-pg:latest

Start with PostgresML

rm -R ~/postgresql_data/
mkdir ~/postgresql_data/

docker run -d --name postgresql --net custom-network \
-e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=password \
-p 5432:5432 \
-v ~/postgresql_data/:/var/lib/postgresql/data \
-d ghcr.io/postgresml/postgresml:2.7.12

and connect:

psql -h 127.0.0.1 --username=postgres

Connec to Postgres on your Ubuntu machine in GCP that runs a standalone instance:

sudo -u postgres psql

https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart

Oracle

Getting started: https://www.oracle.com/database/free/get-started/

Start:

mkdir ~/oracle_data

docker run --name oracle \
    -p 1521:1521 \
    -e ORACLE_PWD=password \
    -d container-registry.oracle.com/database/free

And connect:

sqlplus sys@localhost:1521/FREE as sysdba

MySQL

rm -R $HOME/mysql_data
mkdir $HOME/mysql_data

docker run --name mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=password \
    -e MYSQL_DATABASE=db \
    -e MYSQL_USER=user \
    -e MYSQL_PASSWORD=password \
    -v $HOME/mysql_data:/var/lib/mysql \
    -d mcr.microsoft.com/azure-sql-edge:latest

SQL Server

rm -R $HOME/sqlserver_data
mkdir $HOME/sqlserver_data

docker run --name sqlserver --hostname sqlserver \
    -e "ACCEPT_EULA=Y" \
    -e "MSSQL_SA_PASSWORD=MyStrong@Pwd1" \
    -p 1433:1433 \
    -v $HOME/sqlserver_data:/var/opt/mssql \
    -d mcr.microsoft.com/mssql/server:2022-latest

Connect with:

  • username - sa
  • provided password
  • database - master

YugabyteDB Single-Node Instance

rm -r ~/yb_docker_data
mkdir ~/yb_docker_data

docker network create custom-network

docker run -d --name yugabytedb_node1 --net custom-network \
  -p 15433:15433 -p 7001:7000 -p 9000:9000 -p 5433:5433 \
  -v ~/yb_docker_data/node1:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:latest \
  bin/yugabyted start \
  --base_dir=/home/yugabyte/yb_data --daemon=false

and connect with psql

psql -h 127.0.0.1 -p 5433 yugabyte -U yugabyte -w

YugabyteDB Multi-Node Cluster

Start

rm -r ~/yb_docker_data
mkdir ~/yb_docker_data

docker network create custom-network

docker run -d --name yugabytedb-node1 --net custom-network \
  -p 15433:15433 -p 7001:7000 -p 9001:9000 -p 5433:5433 \
  -v ~/yb_docker_data/node1:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:2.20.0.2-b1 \
  bin/yugabyted start \
  --master_flags="ysql_num_shards_per_tserver=3" --tserver_flags="ysql_num_shards_per_tserver=3" \
  --base_dir=/home/yugabyte/yb_data --daemon=false
  
while ! docker exec -it yugabytedb-node1 postgres/bin/pg_isready -U yugabyte -h yugabytedb-node1; do sleep 1; done

docker run -d --name yugabytedb-node2 --net custom-network \
  -p 15434:15433 -p 7002:7000 -p 9002:9000 -p 5434:5433 \
  -v ~/yb_docker_data/node2:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:2.20.0.2-b1 \
  bin/yugabyted start --join=yugabytedb-node1 \
  --master_flags="ysql_num_shards_per_tserver=3" --tserver_flags="ysql_num_shards_per_tserver=3" \
  --base_dir=/home/yugabyte/yb_data --daemon=false
      
docker run -d --name yugabytedb-node3 --net custom-network \
  -p 15435:15433 -p 7003:7000 -p 9003:9000 -p 5435:5433 \
  -v ~/yb_docker_data/node3:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:2.20.0.2-b1 \
  bin/yugabyted start --join=yugabytedb-node1 \
  --master_flags="ysql_num_shards_per_tserver=3" --tserver_flags="ysql_num_shards_per_tserver=3" \
  --base_dir=/home/yugabyte/yb_data --daemon=false

and connect with psql

psql -h 127.0.0.1 -p 5433 yugabyte -U yugabyte -w

and confirm all three nodes are started: http://127.0.0.1:7001

YugabyteDB Geo-Partitioned Cluster

Start

mkdir ~/yb_docker_data

docker network create custom-network

docker run -d --name yugabytedb_node_us --net custom-networkk -p 7001:7000 -p 9000:9000 -p 5433:5433 \
  -v ~/yb_docker_data/node_us:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:latest bin/yugabyted start --listen=yugabytedb_node_us \
  --base_dir=/home/yugabyte/yb_data --daemon=false \
  --master_flags="placement_zone=A,placement_region=US,placement_cloud=CLOUD" \
  --tserver_flags="placement_zone=A,placement_region=US,placement_cloud=CLOUD"
  
docker run -d --name yugabytedb_node_eu --net custom-network \
  -v ~/yb_docker_data/node_eu:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:latest bin/yugabyted start --join=yugabytedb_node_us --listen=yugabytedb_node_eu \
  --base_dir=/home/yugabyte/yb_data --daemon=false \
  --master_flags="placement_zone=A,placement_region=EU,placement_cloud=CLOUD" \
  --tserver_flags="placement_zone=A,placement_region=EU,placement_cloud=CLOUD"
      
docker run -d --name yugabytedb_node_apac --net custom-network \
  -v ~/yb_docker_data/node_apac:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:latest bin/yugabyted start --join=yugabytedb_node_us --listen=yugabytedb_node_apac \
  --base_dir=/home/yugabyte/yb_data --daemon=false \
 --master_flags="placement_zone=A,placement_region=APAC,placement_cloud=CLOUD" \
  --tserver_flags="placement_zone=A,placement_region=APAC,placement_cloud=CLOUD"

Modify placement:

docker exec -i yugabytedb_node_us \
yb-admin -master_addresses yugabytedb_node_us:7100,yugabytedb_node_eu:7100,yugabytedb_node_apac:7100 \
modify_placement_info CLOUD.US.A,CLOUD.EU.A,CLOUD.APAC.A 3

and connect:

psql -h 127.0.0.1 -p 5433 yugabyte -U yugabyte -w

Clean Up

docker container stop $(docker ps -aq)
docker container rm -v $(docker ps -aq)
docker network rm custom-network
rm -r ~/yb_docker_data
@dmagda
Copy link
Author

dmagda commented Jan 21, 2024

rm -r ~/yugabyte-volume
mkdir ~/yugabyte-volume

docker network create custom-network

docker run -d --name yugabytedb-node1 --net custom-network \
  -p 15433:15433 -p 7001:7000 -p 9001:9000 -p 5433:5433 \
  -v ~/yugabyte-volume/node1:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:latest \
  bin/yugabyted start --base_dir=/home/yugabyte/yb_data --daemon=false
  
docker run -d --name yugabytedb-node2 --net custom-network \
  -p 15434:15433 -p 7002:7000 -p 9002:9000 -p 5434:5433 \
  -v ~/yugabyte-volume/node2:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:latest \
  bin/yugabyted start --join=yugabytedb-node1 --base_dir=/home/yugabyte/yb_data --daemon=false
      
docker run -d --name yugabytedb-node3 --net custom-network \
  -p 15435:15433 -p 7003:7000 -p 9003:9000 -p 5435:5433 \
  -v ~/yugabyte-volume/node3:/home/yugabyte/yb_data --restart unless-stopped \
  yugabytedb/yugabyte:latest \
  bin/yugabyted start --join=yugabytedb-node1 --base_dir=/home/yugabyte/yb_data --daemon=false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment