目录 环境 文档用途 详细信息 环境 系统平台:中标麒麟(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及以后版本的安装参照以下安装过程。
[[email protected] 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用户登录执行
[[email protected] 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) |
注:
1、synchronous_standby_names
参数synchronous_standby_names用于设置备机与主机实时同步。配置参数synchronous_standby_names后,如主节点为同步到任何一个备节点,主节点会出现等待备节点同步的情况。一主一备的情况下不建议配置该参数。此文档示例为一主一备环境,采用归档与增加wal保留数量保证数据安全。
如有多个备节点,建议配置一个实时同步节点,保证主节点宕机时有不会出现数据丢失,写法如下,所有节点名称都配置进去只要有一个节点数据一致即为一致。
alter system set synchronous_standby_names = '1(hgcluster2, hgcluster3, hgcluster1)';
2、SSL
安全版数据库默认开启ssl加密,确认应用是否支持ssl,若不支持,则使用下面命令关闭。
highgo # alter system set ssl=off; |
2) 主节点配置pg_hba.conf
修改pg_hba.conf文件,增加红色字体部分
[[email protected] 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) 重启主节点数据库
[[email protected] HighGoDB-4.3.4.4]$ pg_ctl restart |
四、 备节点配置
1) 备节点安装数据库
备节点数据库安装过程参照主节点数据库安装过程。安装完成后,停止备节点数据库,删除data目录。过程如下:
[[email protected] HighGoDB-4.3.4.4]$ pg_ctl stop [h[email protected] HighGoDB-4.3.4.4]$ rm -rf /opt/HighGoDB-4.3.4.4/data |
2) 同步数据到备节点
[[email protected] 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) 修改流复制配置文件
[[email protected] 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) 启动备库
[[email protected] data]$ pg_ctl start |
更多详细信息请登录【瀚高技术支持平台】 查看