作者简介
谭峰 网名francs,三墩IT人,PostgreSQL中文社区委员,《PostgreSQL实战》作者之一,《PostgreSQL 9 Administration Cookbook》译者之一,致力于PostgreSQL技术分享,博客 https://postgres.fun。
背景
发行说明
环境规划
环境准备
部署mydb数据库
--建用户CREATE ROLE pguser LOGIN ENCRYPTED PASSWORD 'pguser' nosuperuser noinherit nocreatedb nocreaterole ;--创建表空间(如果有 Standby ,也需要创建目录)mkdir -p pgdata/pg13/pg_tbs/tbs_mydb--创建数据库CREATE DATABASE mydbWITH OWNER = postgresTEMPLATE = template0ENCODING = 'UTF8'TABLESPACE = tbs_mydb;--赋权grant all on database mydb to pguser with grant option;grant all on tablespace tbs_mydb to pguser;\c mydb pgusercreate schema pguser;
创建分区表
--创建父表CREATE TABLE tbl_log (id serial,user_id int4,create_time timestamp(0) without time zone) PARTITION BY RANGE(create_time);--创建子表CREATE TABLE tbl_log_his PARTITION OF tbl_log FOR VALUES FROM (minvalue) TO ('2020-01-01');CREATE TABLE tbl_log_202001 PARTITION OF tbl_log FOR VALUES FROM ('2020-01-01') TO ('2020-02-01');CREATE TABLE tbl_log_202002 PARTITION OF tbl_log FOR VALUES FROM ('2020-02-01') TO ('2020-03-01');CREATE TABLE tbl_log_202003 PARTITION OF tbl_log FOR VALUES FROM ('2020-03-01') TO ('2020-04-01');CREATE TABLE tbl_log_202004 PARTITION OF tbl_log FOR VALUES FROM ('2020-04-01') TO ('2020-05-01');CREATE TABLE tbl_log_202005 PARTITION OF tbl_log FOR VALUES FROM ('2020-05-01') TO ('2020-06-01');CREATE TABLE tbl_log_202006 PARTITION OF tbl_log FOR VALUES FROM ('2020-06-01') TO ('2020-07-01');CREATE TABLE tbl_log_202007 PARTITION OF tbl_log FOR VALUES FROM ('2020-07-01') TO ('2020-08-01');--创建索引CREATE INDEX idx_tbl_log_ctime ON tbl_log USING BTREE (create_time);
部署逻辑复制
--创建复制用户CREATE USER repuserREPLICATIONLOGINCONNECTION LIMIT 10ENCRYPTED PASSWORD 'rep123us345er';--创建发布者mydb=> CREATE PUBLICATION pub1 FOR TABLE tbl_log;CREATE PUBLICATION--给repuser用户赋权mydb=> GRANT CONNECT ON DATABASE mydb TO repuser;GRANTmydb=> GRANT USAGE ON SCHEMA pguser TO repuser;GRANTmydb=> GRANT SELECT ON ALL TABLES IN SCHEMA pguser TO repuser;GRANT
mydb=# CREATE SUBSCRIPTION sub1 CONNECTION 'host=192.168.2.11 port=1922 dbname=mydb user=repuser' PUBLICATION pub1;NOTICE: created replication slot "sub1" on publisherCREATE SUBSCRIPTION
数据验证
INSERT INTO tbl_log(user_id,create_time)SELECT round(100000000*random()),generate_series('2019-10-01'::date, '2020-06-20'::date, '1 day');
psql (13beta1)Type "help" for help.mydb=> SELECT count(*) FROM tbl_log;count-------264(1 row)mydb=> SELECT count(*) FROM tbl_log_202001;count-------31(1 row)mydb=> SELECT count(*) FROM tbl_log_his;count-------92(1 row)
[pg13@ydtf03 ~]$ psql mydb pguser -p 1924psql (13beta1)Type "help" for help.mydb=> SELECT count(*) FROM tbl_log;count-------264(1 row)mydb=> SELECT count(*) FROM tbl_log_202001;count-------31(1 row)mydb=> SELECT count(*) FROM tbl_log_his;count-------92(1 row)
总结

● 扫码入钉钉群,每周免费看PG技术直播 ●
文章转载自PostgreSQL中文社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





