震惊!ACE装国产数据库花了2周,吓得我赶紧试了一下自家产品PolarDB
文中参考文档在github需点击阅读原文打开, 同时推荐2个学习环境:
1、懒人Docker镜像, 已打包200+插件:《最好的PostgreSQL学习镜像》
震惊!ACE装国产数据库花了2周,吓得我赶紧试了一下自家产品
海文又来鞭策国产数据库了, 装国产数据库花了2周, 就怕被老板提前看到这篇文章又要挨踢, 小心脏扑通扑通的, 吓得我赶紧试了一下自家产品PolarDB开源版本, 结果不到5分钟装好了, 再也不怕被老板踢了.
https://mp.weixin.qq.com/s/tyPN7VGNMLdwLeM5TJD2Rg
安装过程已写到docker build脚本, 这个镜像里有PostgreSQL, PolarDB, DuckDB, HaloDB, Databend等, 其中PG插件224个, 若干常用工具, 是DBA居家必备学习镜像:
https://github.com/digoal/blog/blob/master/202308/20230814_02.md
useradd -b /home/polardb -m -d /home/polardb -s /bin/bash polardb
apt-get install -y libldap2-dev libxerces-c-dev gettext tcl tcl-dev libperl-dev
rm -f /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python
cd /tmp
git clone -b POLARDB_11_STABLE --depth 1 https://github.com/ApsaraDB/PolarDB-for-PostgreSQL
cd PolarDB-for-PostgreSQL
LLVM_CONFIG=/usr/bin/llvm-config-13 ./polardb_build.sh --withpx --noinit --basedir=/home/polardb/polardb_11_home echo "# add by digoal " >> /home/polardb/.bashrc
echo "alias rm='rm -i' " >> /home/polardb/.bashrc
echo "alias cp='cp -i' " >> /home/polardb/.bashrc
echo "alias ll='ls -larth' " >> /home/polardb/.bashrc
echo "alias mv='mv -i' " >> /home/polardb/.bashrc
echo "export PGHOME=/home/polardb/polardb_11_home " >> /home/polardb/.bashrc
echo "export PATH=\$PGHOME/bin:\$PATH " >> /home/polardb/.bashrc
echo "export LD_LIBRARY_PATH=\$PGHOME/lib:/usr/local/lib:/usr/lib/aarch64-linux-gnu:\$LD_LIBRARY_PATH " >> /home/polardb/.bashrc
echo "export PGDATA=/home/polardb/primary " >> /home/polardb/.bashrc
echo "export PGUSER=polardb " >> /home/polardb/.bashrc
echo "export PGHOST=127.0.0.1 " >> /home/polardb/.bashrc
echo "export PGPORT=5432 " >> /home/polardb/.bashrc
echo "export PGDATABASE=postgres " >> /home/polardb/.bashrc
echo "export LC_ALL=en_US.UTF-8 " >> /home/polardb/.bashrc
su - polardb -c " /home/polardb/polardb_11_home/bin/initdb -D /home/polardb/primary "
# /home/polardb/polardb_11_home/bin/pg_ctl -D /home/polardb/primary -l logfile start
# /home/polardb/polardb_11_home/bin/psql -h 127.0.0.1 -p 5432 -U polardb postgres
echo "listen_addresses = '0.0.0.0' " >> /home/polardb/primary/postgresql.auto.conf
echo "unix_socket_directories = '., /tmp' " >> /home/polardb/primary/postgresql.auto.conf
echo "random_page_cost = 1.1 " >> /home/polardb/primary/postgresql.auto.conf
echo "log_destination = 'csvlog' " >> /home/polardb/primary/postgresql.auto.conf
echo "logging_collector = on " >> /home/polardb/primary/postgresql.auto.conf
echo "polar_enable_physical_repl_non_super_wal_snd = on " >> /home/polardb/primary/postgresql.auto.conf
echo "polar_wal_snd_reserved_for_superuser = 3 " >> /home/polardb/primary/postgresql.auto.conf
echo "polar_logindex_mem_size = 0 " >> /home/polardb/primary/postgresql.auto.conf
echo "hot_standby = on " >> /home/polardb/primary/postgresql.auto.conf
echo "wal_receiver_timeout = 15s " >> /home/polardb/primary/postgresql.auto.conf
echo "wal_retrieve_retry_interval = 5s " >> /home/polardb/primary/postgresql.auto.conf
echo "port = 5432 " >> /home/polardb/primary/postgresql.auto.conf
echo "polar_hostid = 1 " >> /home/polardb/primary/postgresql.auto.conf
echo "primary_conninfo = 'host=localhost port=5432 user=polardb dbname=postgres application_name=standby1' " >> /home/polardb/primary/recovery.done
echo "# primary_slot_name = 'standby1' " >> /home/polardb/primary/recovery.done
echo "standby_mode = on " >> /home/polardb/primary/recovery.done
echo "recovery_target_timeline = 'latest' " >> /home/polardb/primary/recovery.done
echo "host all all 0.0.0.0/0 md5 " >> /home/polardb/primary/pg_hba.conf
echo "host replication all 0.0.0.0/0 md5 " >> /home/polardb/primary/pg_hba.conf
这个过程只花了285.5秒, 不到5分钟. 日志如下
#13 1973.2 useradd -b /home/polardb -m -d /home/polardb -s /bin/bash polardb
#13 1973.2 + useradd -b /home/polardb -m -d /home/polardb -s /bin/bash polardb
...
#13 2258.7 cd /tmp
#13 2258.7 + cd /tmp
#13 2258.7 git clone --depth 1 https://github.com/tvondra/sequential-uuids
#13 2258.7 + git clone --depth 1 https://github.com/tvondra/sequential-uuids
使用镜像非常简单:
# 拉取镜像, 第一次拉取一次即可. 或者需要的时候执行, 将更新到最新镜像版本.
docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64 # 启动容器
docker run -d -it -P --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name pg --shm-size=1g registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:pg14_with_exts_arm64
# 进入容器
docker exec -ti pg bash
su - polardb
pg_ctl start
psql
postgres=# select version();
version
--------------------------------
PostgreSQL 11.9 (POLARDB 11.9)
(1 row)
postgres=# show polar_version;
polar_version
---------------
1.1.20
(1 row)
欢迎关注我的github (https://github.com/digoal/blog) , 学习数据库不迷路.
近期正在写公开课材料, 未来将通过视频号推出, 欢迎关注视频号:
文章中的参考文档请点击阅读原文获得.