# Startup Scripts for YugabyteDB and PostgreSQL Start a database instance within a few seconds on you machine. ## PostgreSQL Start in basic configuration: ```shell 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: ```shell 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: ```shell 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 ```shell 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 ```shell 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: ```shell psql -h 127.0.0.1 --username=postgres ``` Connec to Postgres on your Ubuntu machine in GCP that runs a standalone instance: ```shell 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: ```shell mkdir ~/oracle_data docker run --name oracle \ -p 1521:1521 \ -e ORACLE_PWD=password \ -d container-registry.oracle.com/database/free ``` And connect: ```shell sqlplus sys@localhost:1521/FREE as sysdba ``` ## MySQL ```shell 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 ```shell 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 ```shell 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 ```shell psql -h 127.0.0.1 -p 5433 yugabyte -U yugabyte -w ``` ## YugabyteDB Multi-Node Cluster Start ```shell 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 ```shell 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 ```shell 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: ```shell 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: ```shell psql -h 127.0.0.1 -p 5433 yugabyte -U yugabyte -w ``` ## Clean Up ```shell docker container stop $(docker ps -aq) docker container rm -v $(docker ps -aq) docker network rm custom-network rm -r ~/yb_docker_data ```