瀚高数据库安全版容灾(最佳实践)

环境
系统平台:中标麒麟(CPU龙芯)7,中标麒麟(CPU海光)7
版本:4.3.4

本文用于指导瀚高数据库安全版高可用的实施工作。

 

    瀚高数据库安全版当前版本为:4.3.4、4.3.4.1、4.3.4.2、4.3.4.3、4.3.4.4等5个版本,除4.3.4外,其他版本均为rpm包,支持中标麒麟、银河麒麟等操作系统,同时支持龙芯、海光、兆芯等国产CPU。包名命名方式为“数据库版本-操作系统版本-cpu-位数-发布时间”,例如:hgdb4.3.4.4-see-nkyl7-loongson-64-20190626.rpm,hgdb4.3.4.4-see表示为数据库版本为4.3.4.4,see表示安全版,nkyl7表示中标麒麟,loongson表示龙芯,64表示支持64位操作系统及CPU,20190626表示2019年6月26日发布。

    瀚高数据库容灾使用数据库内置的流复制功能实现,不需要安装额外软件,只需要配置相关参数即可实现。可以实现主节点数据秒级同步备节点,可以选择同步流复制及异步流复制两种方式。

    同步流复制,主备间的数据完全一致,系统必须确保通过事务写入的数据至少事务同时在两台服务器上提交,即主端与备端数据完全一致,若备端因宕机或网络原因导致事务无法提交,则主端数据库也不能继续运行。同步流复制适用于不允许任何数据丢失或有多个备端(可以选择只要有一个备端同步即可)的情况。

    异步流复制,主备间的数据同步有延迟(以事务为单位),在主端宕机时,可能会导致备端丢失一部分数据(一个或多个事务)。例如,主端提交一个事务,在事务发送到备端前,主端宕机了,此时备端就丢失了该事务。但如果主端服务器可以访问,则可以通过归档文件恢复该事务数据。异步流复制适用于允许一定量的数据丢失,且对主端数据库性能要求较高的情况(同步流复制会降低主端响应速度)。

 

 

 

 
详细信息

 

一、           准备工作

瀚高数据库采用内置的流复制功能实现数据库的容灾,要求主备端的操作系统及硬件架构保持一致,防止主备服务器因操作系统或硬件环境不同造成同步异常。网络方面建议将流复制规划到单独的网络,即主备节点间需要单独的网络进行数据同步,避免数据同步与客户端访问之间造成影响。备节点的数据库服务会一直开启,可以作为只读节点使用。

二、           数据库安装

1)    数据库安装

操作系统、硬件要求及参数配置,祥见《Highgo Database安全版安装指导手册(最佳实践)》,4.3.4版本的安装过程详见《Highgo Database安全版安装指导手册(最佳实践)》,4.3.4.2及以后版本的安装参照以下安装过程。

[root@hgcluster1 highgo]# rpm -ivh hgdb4.3.4.4-see-nkyl7-loongson-64-20190626.rpm

2)    存储路径

数据库安装完成后,会自动初始化数据库,存放在数据库的安装目录下,即/opt/HighGoDB-4.3.4.4.4下,通常该空间较小,需要将data目录迁移到存储或空间足够的目录下,然后使用软连接指向迁移后的路径,例如,将data目录迁移至/highgo/目录下,操作过程如下:

mv /opt/HighGoDB-4.3.4.4.4/data /highgo/

ln -s /highgo/data /opt/HighGoDB-4.3.4.4.4/data

三、           配置主节点数据库参数

1)    主节点配置数据库参数

以下命令使用sysdba用户登录执行

[highgo@hgcluster1 highgo]#psql -U sysdba highgo

psql (4.3.4.4)

Type "help" for help.

 

highgo=# alter system set listen_addresses = '*';

ALTER SYSTEM

highgo=# alter system set max_connections = 2000;

ALTER SYSTEM

highgo=# alter system set shared_buffers = '10GB';

ALTER SYSTEM

highgo=# alter system set checkpoint_completion_target = 0.8;

ALTER SYSTEM

highgo=# alter system set log_destination = 'csvlog';

ALTER SYSTEM

highgo=# alter system set logging_collector = on;

ALTER SYSTEM

highgo=# alter system set log_directory = 'hgdb_log';

ALTER SYSTEM

highgo=# alter system set log_filename = 'highgodb_%d.log';

ALTER SYSTEM

highgo=# alter system set log_rotation_age = '1d';

ALTER SYSTEM

highgo=# alter system set log_rotation_size = 0;

ALTER SYSTEM

highgo=# alter system set log_truncate_on_rotation = on;

ALTER SYSTEM

highgo=# alter system set log_statement = 'ddl';

ALTER SYSTEM

highgo=# alter system set log_connections=on;

ALTER SYSTEM

highgo=# alter system set log_disconnections=on;

ALTER SYSTEM

highgo=# alter system set checkpoint_timeout='30min';

ALTER SYSTEM

highgo=# alter system set maintenance_work_mem='1GB';

ALTER SYSTEM

highgo=# alter system set wal_log_hints=on;

ALTER SYSTEM

highgo=# alter system set full_page_writes=on;

ALTER SYSTEM

highgo=# alter system set archive_mode=on;

ALTER SYSTEM

#红色字体部分,修改为实际归档的存放路径

highgo=# alter system set archive_command='test ! -f /highgo/archive/%f && cp %p /highgo/archive/%f';

ALTER SYSTEM

--设置wal文件保留数量

highgo=# alter system set wal_keep_segments=200;

ALTER SYSTEM

#关闭登录提示,不关闭会影响流复制

highgo=> select set_secure_param('hg_ShowLoginInfo','off');

        set_secure_param        

---------------------------------

 set configuration successfully.

(1 row)

注:

1synchronous_standby_names

参数synchronous_standby_names用于设置备机与主机实时同步。配置参数synchronous_standby_names后,如主节点为同步到任何一个备节点,主节点会出现等待备节点同步的情况。一主一备的情况下不建议配置该参数。此文档示例为一主一备环境,采用归档与增加wal保留数量保证数据安全。

如有多个备节点,建议配置一个实时同步节点,保证主节点宕机时有不会出现数据丢失,写法如下,所有节点名称都配置进去只要有一个节点数据一致即为一致。

alter system set synchronous_standby_names = '1(hgcluster2, hgcluster3, hgcluster1)';

2SSL

安全版数据库默认开启ssl加密,确认应用是否支持ssl,若不支持,则使用下面命令关闭。

highgo # alter system set ssl=off;

2)    主节点配置pg_hba.conf

修改pg_hba.conf文件,增加红色字体部分

[highgo@k8s2 HighGoDB-4.3.4.4]$ vi /highgo/data/pg_hba.conf

# IPv4 local connections:

host    all             all             127.0.0.1/32            md5

host    all             all             0.0.0.0/0            md5

hostssl    all             all             127.0.0.1/32            md5

3)    重启主节点数据库

[highgo@k8s2 HighGoDB-4.3.4.4]$ pg_ctl restart

四、           备节点配置

1)    备节点安装数据库

备节点数据库安装过程参照主节点数据库安装过程。安装完成后,停止备节点数据库,删除data目录。过程如下:

[highgo@k8s2 HighGoDB-4.3.4.4]$ pg_ctl stop

[highgo@k8s2 HighGoDB-4.3.4.4]$ rm -rf  /opt/HighGoDB-4.3.4.4/data

2)    同步数据到备节点

[highgo@k8s3 highgo]$ pg_basebackup -h 192.168.80.42 -p 5866 -U sysdba -D /highgo/data/ -Fp -P -Xs -R -v -l highgobak

Password:

pg_basebackup: initiating base backup, waiting for checkpoint to complete

pg_basebackup: checkpoint completed

pg_basebackup: write-ahead log start point: 0/8000028 on timeline 1

pg_basebackup: starting background WAL receiver

26281/26281 kB (100%), 1/1 tablespace                                        

pg_basebackup: write-ahead log end point: 0/80000F8

pg_basebackup: waiting for background process to finish streaming ...

pg_basebackup: base backup completed

3)    修改流复制配置文件

[highgo@k8s3 data]$ vi /highgo/data/recovery.conf

standby_mode = 'on'

recovery_target_timeline = 'latest'

restore_command = 'cp %p /highgo/data/%f'

primary_conninfo = 'user=sysdba password=highgo123 host=192.168.80.42 port=5866 sslmode=prefer sslcompression=1 target_session_attrs=any'

4)    启动备库

[highgo@k8s3 data]$ pg_ctl start

更多详细信息请登录【瀚高技术支持平台】 查看

发布了399 篇原创文章 · 获赞 108 · 访问量 65万+

猜你喜欢

转载自blog.csdn.net/pg_hgdb/article/details/103580288