-
$ gs_install -X /opt/software/openGauss/cluster_config.xml --gsinit-parameter="--locale=zh_CN.UTF-8"Parsing the configuration file.Check preinstall on every node.Successfully checked preinstall on every node.Creating the backup directory.Successfully created the backup directory.begin deploy..Installing the cluster.begin prepare Install Cluster..Checking the installation environment on all nodes.begin install Cluster..Installing applications on all nodes.Successfully installed APP.begin init Instance..encrypt cipher and rand files for database.Please enter password for database:Please repeat for database:begin to create CA cert filesThe sslcert will be generated in /opt/huawei/install/app/share/sslcert/omNO cm_server instance, no need to create CA for CM.Non-dss_ssl_enable, no need to create CA for DSSCluster installation is completed.Configuring.Deleting instances from all nodes.Successfully deleted instances from all nodes.Checking node configuration on all nodes.Initializing instances on all nodes.Updating instance configuration on all nodes.Check consistence of memCheck and coresCheck on database nodes.Configuring pg_hba on all nodes.Configuration is completed.Using omm:dbgroup to install database.Using installation program path : /opt/huawei/install/app_33b035fd$GAUSSHOME points to /opt/huawei/install/app_33b035fd, no need to create symbolic link.Traceback (most recent call last): File "/opt/huawei/install/om/script/local/Install.py", line 812, in <module> functionDict[g_opts.action]() File "/opt/huawei/install/om/script/local/Install.py", line 743, in startCluster dn.start(self.time_out) File "/opt/huawei/install/om/script/local/../gspylib/component/Kernel/Kernel.py", line 104, in start raise Exception(ErrorCode.GAUSS_516["GAUSS_51607"] % "instance"Exception: [GAUSS-51607] : Failed to start instance. Error: Please check the gs_ctl log for failure details.[2024-10-16 10:32:52.678][21933][][gs_ctl]: gs_ctl started,datadir is /opt/huawei/install/data/dn [2024-10-16 10:32:52.740][21933][][gs_ctl]: waiting for server to start....0 LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env.0 LOG: [Alarm Module]Host Name: tims-ai-6-1 0 LOG: [Alarm Module]Host IP: tims-ai-6-1. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>0 LOG: [Alarm Module]Cluster Name: dbCluster 0 LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 580 WARNING: failed to open feature control file, please check whether it exists: FileName=gaussdb.version, Errno=2, Errmessage=No such file or directory.0 WARNING: failed to parse feature control file: gaussdb.version.0 WARNING: Failed to load the product control file, so gaussdb cannot distinguish product version.0 LOG: bbox_dump_path is set to /opt/huawei/corefile/2024-10-16 10:32:52.869 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 DB010 0 [REDO] LOG: Recovery parallelism, cpu count = 8, max = 4, actual = 42024-10-16 10:32:52.869 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 DB010 0 [REDO] LOG: ConfigRecoveryParallelism, true_max_recovery_parallelism:4, max_recovery_parallelism:4gaussdb.state does not exist, and skipt setting since it is optional.2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env.2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Host Name: tims-ai-6-1 2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Host IP: tims-ai-6-1. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Cluster Name: dbCluster 2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 582024-10-16 10:32:52.918 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: loaded library "security_plugin"2024-10-16 10:32:52.923 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets2024-10-16 10:32:52.923 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets2024-10-16 10:32:52.932 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: InitNuma numaNodeNum: 1 numa_distribute_mode: none inheritThreadPool: 0.2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: reserved memory for backend threads is: 340 MB2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: reserved memory for WAL buffers is: 320 MB2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: Set max backend reserve memory is: 660 MB, max dynamic memory is: 4079 MB2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: shared memory 4476 Mbytes, memory context 4739 Mbytes, max process memory 10240 Mbytes2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: shared memory that key is 5432001 is owned by pid 122722024-10-16 10:32:53.927 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [CACHE] LOG: set data cache size(805306368)2024-10-16 10:32:55.039 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [SEGMENT_PAGE] LOG: Segment-page constants: DF_MAP_SIZE: 8156, DF_MAP_BIT_CNT: 65248, DF_MAP_GROUP_EXTENTS: 4175872, IPBLOCK_SIZE: 8168, EXTENTS_PER_IPBLOCK: 1021, IPBLOCK_GROUP_SIZE: 4090, BMT_HEADER_LEVEL0_TOTAL_PAGES: 8323072, BktMapEntryNumberPerBlock: 2038, BktMapBlockNumber: 25, BktBitMaxMapCnt: 5122024-10-16 10:32:55.206 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: gaussdb: fsync file "/opt/huawei/install/data/dn/gaussdb.state.temp" success2024-10-16 10:32:55.206 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: create gaussdb state file success: db state(STARTING_STATE), server mode(Normal), connection index(1)2024-10-16 10:32:55.236 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: max_safe_fds = 974, usable_fds = 1000, already_open = 16bbox_dump_path is set to /opt/huawei/corefile/2024-10-16 10:32:55.240 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: user configure file is not found, it will be created.[2024-10-16 10:32:58.748][21933][][gs_ctl]: gaussDB state is Coredump[2024-10-16 10:32:58.748][21933][][gs_ctl]: stopped waiting[2024-10-16 10:32:58.748][21933][][gs_ctl]: could not start serverExamine the log output.[GAUSS-51607] : Failed to start instance. Error: Please check the gs_ctl log for failure details.[2024-10-16 10:32:52.678][21933][][gs_ctl]: gs_ctl started,datadir is /opt/huawei/install/data/dn [2024-10-16 10:32:52.740][21933][][gs_ctl]: waiting for server to start....0 LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env.0 LOG: [Alarm Module]Host Name: tims-ai-6-1 0 LOG: [Alarm Module]Host IP: tims-ai-6-1. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>0 LOG: [Alarm Module]Cluster Name: dbCluster 0 LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 580 WARNING: failed to open feature control file, please check whether it exists: FileName=gaussdb.version, Errno=2, Errmessage=No such file or directory.0 WARNING: failed to parse feature control file: gaussdb.version.0 WARNING: Failed to load the product control file, so gaussdb cannot distinguish product version.0 LOG: bbox_dump_path is set to /opt/huawei/corefile/2024-10-16 10:32:52.869 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 DB010 0 [REDO] LOG: Recovery parallelism, cpu count = 8, max = 4, actual = 42024-10-16 10:32:52.869 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 DB010 0 [REDO] LOG: ConfigRecoveryParallelism, true_max_recovery_parallelism:4, max_recovery_parallelism:4gaussdb.state does not exist, and skipt setting since it is optional.2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env.2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Host Name: tims-ai-6-1 2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Host IP: tims-ai-6-1. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Cluster Name: dbCluster 2024-10-16 10:32:52.892 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 582024-10-16 10:32:52.918 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: loaded library "security_plugin"2024-10-16 10:32:52.923 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets2024-10-16 10:32:52.923 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets2024-10-16 10:32:52.932 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: InitNuma numaNodeNum: 1 numa_distribute_mode: none inheritThreadPool: 0.2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: reserved memory for backend threads is: 340 MB2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: reserved memory for WAL buffers is: 320 MB2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: Set max backend reserve memory is: 660 MB, max dynamic memory is: 4079 MB2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: shared memory 4476 Mbytes, memory context 4739 Mbytes, max process memory 10240 Mbytes2024-10-16 10:32:52.933 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: shared memory that key is 5432001 is owned by pid 122722024-10-16 10:32:53.927 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [CACHE] LOG: set data cache size(805306368)2024-10-16 10:32:55.039 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [SEGMENT_PAGE] LOG: Segment-page constants: DF_MAP_SIZE: 8156, DF_MAP_BIT_CNT: 65248, DF_MAP_GROUP_EXTENTS: 4175872, IPBLOCK_SIZE: 8168, EXTENTS_PER_IPBLOCK: 1021, IPBLOCK_GROUP_SIZE: 4090, BMT_HEADER_LEVEL0_TOTAL_PAGES: 8323072, BktMapEntryNumberPerBlock: 2038, BktMapBlockNumber: 25, BktBitMaxMapCnt: 5122024-10-16 10:32:55.206 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: gaussdb: fsync file "/opt/huawei/install/data/dn/gaussdb.state.temp" success2024-10-16 10:32:55.206 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: create gaussdb state file success: db state(STARTING_STATE), server mode(Normal), connection index(1)2024-10-16 10:32:55.236 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: max_safe_fds = 974, usable_fds = 1000, already_open = 16bbox_dump_path is set to /opt/huawei/corefile/2024-10-16 10:32:55.240 670f25d4.1 [unknown] 139861824102464 [unknown] 0 dn_6001 00000 0 [BACKEND] LOG: user configure file is not found, it will be created.[2024-10-16 10:32:58.748][21933][][gs_ctl]: gaussDB state is Coredump[2024-10-16 10:32:58.748][21933][][gs_ctl]: stopped waiting[2024-10-16 10:32:58.748][21933][][gs_ctl]: could not start serverExamine the log output.安装环境:系统是NAME="openEuler" VERSION="22.03 (LTS-SP3)下载的gauss版本:openGauss-5.0.1-openEuler-64bit-all.tar.gz系统32GB内存
-
一、GaussDBGaussDB 是华为推出的一系列企业级数据库产品的统称。它涵盖了多种数据库类型,旨在为企业提供高性能、高可靠、高安全的数据存储和管理解决方案。GaussDB 具有以下特点:高可用性:通过多种技术手段确保数据库的持续可用,减少系统故障对业务的影响。高性能:优化的存储引擎和查询处理算法,能够快速处理大量数据和复杂查询。安全性:提供严格的安全控制机制,包括用户认证、授权、数据加密等。可扩展性:能够根据业务需求进行灵活扩展,满足企业不断增长的数据存储和处理需求。二、DWS(Data Warehouse Service)DWS 是华为云数据仓库服务,它是基于 GaussDB 构建的一种专门用于数据分析和处理的数据库服务。DWS 的主要功能包括:大规模数据存储:能够存储海量的结构化数据,支持 TB 到 PB 级的数据规模。高效数据分析:提供快速的查询和分析能力,支持复杂的 SQL 查询和多维分析。数据集成:可以与其他数据源进行集成,方便数据的导入和导出。数据治理:提供数据质量管理、数据安全管理等功能,确保数据的准确性和安全性。三、GaussDB A(GaussDB for Analytics)GaussDB A 是一种面向分析型应用的数据库产品。它主要用于处理大规模数据分析和报表生成等任务。GaussDB A 的特点包括:列存储技术:采用列存储方式,提高数据分析的效率。并行处理:支持大规模并行处理,能够快速处理海量数据。数据压缩:通过数据压缩技术减少存储空间占用。灵活的架构:可以根据不同的应用场景进行灵活配置。四、GaussDB T(GaussDB for Transaction)GaussDB T 是一种面向事务处理的数据库产品。它主要用于支持高并发的事务处理应用,如在线交易系统、电子商务平台等。GaussDB T 的特点包括:高并发处理能力:能够处理大量的并发事务,确保系统的高可用性和高性能。事务一致性:保证事务的原子性、一致性、隔离性和持久性。快速响应时间:提供快速的事务处理响应时间,满足实时业务需求。可靠性:具备高可靠性和容错能力,确保数据的安全和完整。五、openGaussopenGauss 是一款开源数据库。它是由华为公司发起,联合众多合作伙伴共同打造的开源数据库社区项目。openGauss 的特点包括:开源开放:代码开源,任何人都可以参与开发和贡献。高性能:采用先进的技术架构和优化算法,提供高性能的数据存储和处理能力。高可靠:具备高可靠性和容错能力,确保数据的安全和稳定。丰富的功能:支持多种数据类型、索引类型、存储过程等功能。
-
误删除不用怕,openGauss闪回恢复帮你搞定下面主要从闪回查询、闪回表、闪回 DROP/TRUNCATE 方面进行演示。 闪回恢复功能是数据库恢复技术的一环,可以有选择性的撤销一个已提交事务的影响,将数据 从人为不正确的操作中进行恢复。基于 MVCC 多版本的数据恢复(仅支持 Ustore):适用于误删除、误更新、误插入数据的查 询和恢复,用户通过配置旧版本保留时间,并执行相应的查询或恢复命令,查询或恢复到指定 的时间点或 CSN 点。基于数据库回收站的恢复(仅支持 Ustore):适用于误 DROP、误 TRUNCATE 的表的恢复。 用户通过配置回收站开关,并执行相应的恢复命令,可以将误 DROP、误 TRUNCATE 的表找回。说明:回收站暂不支持 Astore 引擎(闪回 DROP/TRUNCATE)。1 闪回查询表闪回查询可以查询过去某个时间点表的某个快照数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于 MVCC 多版本机制,通过检索查询旧版本,获取指定老版本数据。1.1 根据库配置文件 postgresql.conf 参数配置。enable_default_ustore_table=on ###开启默认支持 Ustore 存储引擎undo_zone_count=16384 ###内存中可分配的 undo zone 数量,0 代表禁用 undo 和 Ustore 表,建议取值为最大连接数 max_connections*4undo_retention_time=2000 ###用于设置 undo 旧版本的保留时间,默认为 0,单位 s。[omm@trex ~]$ gs_guc set -N all -I all -c "enable_default_ustore_table=on" [omm@trex ~]$ gs_guc set -N all -I all -c "undo_zone_count=16384" [omm@trex ~]$ gs_guc set -N all -I all -c "undo_retention_time=2000" 重新启动数据库。[omm@trex ~]$ gs_om -t restart1.2 查看修改后的参数值。[omm@trex ~]$ gsql -d postgres -p 26000 -r gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:09:38 commit 0 last mr ) NOTICE : The password has been expired, please change the password. Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# show enable_default_ustore_table; enable_default_ustore_table ----------------------------- on (1 row) openGauss=# show undo_zone_count; undo_zone_count ----------------- 16384 (1 row) openGauss=# show undo_retention_time; undo_retention_time --------------------- 2000s (1 row) openGauss=# 1.3 创建测试表并插入两条数据。openGauss=# create table test (id int,name varchar(10)); CREATE TABLE openGauss=# insert into test values (1,'trex'),(2,'hankey'); INSERT 0 21.4 查看当前时间戳 t1。openGauss=# select clock_timestamp(); clock_timestamp ------------------------------- 2024-09-01 15:21:35.822563+08 (1 row)1.5 再插入新数据。openGauss=# insert into test values (3,'Yema'); INSERT 0 1 openGauss=# select * from test; id | name ----+-------- 1 | trex 2 | hankey 3 | Yema (3 rows) openGauss=# 1.6 查看当前时间戳 t2。openGauss=# select clock_timestamp(); clock_timestamp ------------------------------- 2024-09-01 15:23:34.342875+08 (1 row)1.7 基于 timestamp 的闪回查询。 查询 t1 时刻时,test 表数据。openGauss=# SELECT * FROM test TIMECAPSULE TIMESTAMP to_timestamp ('2024-09-01 15:21:35', 'YYYY-MM-DD HH24:MI:SS'); id | name ----+-------- 1 | trex 2 | hankey (2 rows) openGauss=# 1.8 基于 CSN 的闪回查询。openGauss=# select clock_timestamp(); clock_timestamp ------------------------------- 2024-09-01 15:34:59.319153+08 (1 row) openGauss=# update test set id = 4 where id =3;1.9 查询 timestamp 对应的 CSN。openGauss=# select snptime,snpcsn from gs_txn_snapshot where snptime between '2024-09-01 15:34:20' and '2024-09-01 15:35:10'; snptime | snpcsn -------------------------------+-------- 2024-09-01 15:35:09.84636+08 | 2482 2024-09-01 15:35:06.832097+08 | 2481 2024-09-01 15:35:03.818291+08 | 2479 2024-09-01 15:35:00.804564+08 | 2478 2024-09-01 15:34:57.78217+08 | 2477 2024-09-01 15:34:54.768029+08 | 2476 2024-09-01 15:34:51.754253+08 | 2475 2024-09-01 15:34:48.743976+08 | 2474 2024-09-01 15:34:45.73307+08 | 2473 2024-09-01 15:34:42.716385+08 | 2472 2024-09-01 15:34:39.7026+08 | 2471 2024-09-01 15:34:36.691232+08 | 2470 2024-09-01 15:34:33.67825+08 | 2469 2024-09-01 15:34:30.665279+08 | 2468 2024-09-01 15:34:27.654471+08 | 2467 2024-09-01 15:34:24.640947+08 | 2466 2024-09-01 15:34:21.630685+08 | 2465 (17 rows) openGauss=# openGauss=# SELECT * FROM test TIMECAPSULE CSN 2477; id | name ----+-------- 1 | trex 2 | hankey 3 | Yema (3 rows)2 闪回 drop/truncate闪回 DROP:可以恢复意外删除的表,从回收站(recycle bin)中恢复被删除的表及其附属结 构如索引、表约束等。闪回 drop 是基于回收站机制,通过还原回收站中记录的表的物理文 件,实现已 drop 表的恢复。闪回 TRUNCATE:可以恢复误操作或意外被进行 truncate 的表,从回收站中恢复被 truncate 的表及索引的物理数据。闪回 truncate 基于回收站机制,通过还原回收站中记录的表的物理 文件,实现已 truncate 表的恢复。2.1 根据库配置文件 postgresql.conf 参数配置。enable_recyclebin=on ###启用回收站。recyclebin_retention_time=30min ###参数用于设置回 收站对象保留时间,超过该时间的回收站对象将被 自动清理[omm@trex ~]$ gs_guc set -N all -I all -c "enable_recyclebin=on" [omm@trex ~]$ gs_guc set -N all -I all -c "recyclebin_retention_time=30min" [omm@trex ~]$ gs_om -t restart [omm@trex ~]$ gsql -d postgres -p 26000 -r openGauss=# show enable_recyclebin; enable_recyclebin ------------------- on (1 row) openGauss=# show recyclebin_retention_time; recyclebin_retention_time --------------------------- 30min (1 row) openGauss=# 2.2 创建测试表openGauss=# create table test2 (id int,name varchar(10)); CREATE TABLE openGauss=# insert into test2 values (1,'sam'),(2,'allen'); INSERT 0 2 openGauss=# select * from test2; id | name ----+------- 1 | sam 2 | allen (2 rows)2.3 truncate 表。openGauss=# truncate test2; TRUNCATE TABLE openGauss=# select * from test2; id | c1 ----+---- (0 rows)2.4 闪回 truncate 操作。openGauss=# timecapsule table test2 to before truncate; TimeCapsule Table openGauss=# select * from test2; id | name ----+------- 1 | sam 2 | allen (2 rows) openGauss=# 2.5 误 drop 表openGauss=# drop table test2;2.6 查看回收站。openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; rcyname | rcyoriginname | rcytablespace -----------------------------+---------------+--------------- BIN$3D724EB4003$24BC308==$0 | test2 | 02.7 闪回 drop 表并且 rename。openGauss=# timecapsule table test2 to before drop rename to test2_bak; TimeCapsule Table openGauss=# select * from test2_bak; id | name ----+------- 1 | sam 2 | allen (2 rows) openGauss=# 2.8 删除表时不放到回收站。如果需要在彻底删除表,不放到回收站,可操作如下openGauss=# drop table test2_bak purge; DROP TABLE openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; rcyname | rcyoriginname | rcytablespace -----------------------------+---------------+--------------- (0 row)3 总结闪回恢复可以有选择性的撤销一个已提交事务的影响,对于误操作数据后恢复十分有效。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。可以快速有效的进行数据的恢复。作者:二维马
-
Linux 系统进程调度的探索与实践在 Linux 操作系统中,进程调度是一个至关重要的环节,它决定了系统资源如何在不同的进程之间分配,以确保系统的高效运行和响应性。一、进程调度的概念进程调度是操作系统内核的核心功能之一。它负责决定哪个进程在何时可以使用 CPU 资源。Linux 采用了多种调度算法,以满足不同的应用场景需求。例如,完全公平调度算法(CFS)旨在为所有可运行的进程提供公平的 CPU 时间份额。二、查看系统进程调度信息我们可以使用一些命令来查看系统的进程调度信息。例如,top命令可以实时显示系统中最活跃的进程信息,包括 CPU 使用率、内存使用情况等。在top命令的输出中,我们可以看到每个进程的状态以及其占用的 CPU 时间。另外,ps命令结合一些参数也可以提供有关进程的详细信息。例如,ps -eo pid,ppid,state,cmd,%cpu,%mem可以显示进程 ID、父进程 ID、状态、命令以及 CPU 和内存使用率。三、进程调度的调整在某些情况下,我们可能需要调整进程的调度优先级,以确保关键任务能够及时得到 CPU 时间。Linux 提供了nice和renice命令来调整进程的优先级。nice命令用于在启动一个新进程时设置其优先级。例如,要以较低的优先级启动一个名为myprogram的程序,可以使用以下命令:nice -n 10 myprogramrenice命令可以在进程运行时调整其优先级。例如,要将进程 ID 为 1234 的进程的优先级调整为更高的值,可以使用以下命令:renice -n -5 1234四、代码示例以下是一个使用 C 语言编写的简单程序,展示了如何获取当前进程的 ID 和优先级:#include <stdio.h> #include <unistd.h> #include <sys/resource.h> int main() { pid_t pid = getpid(); int priority = getpriority(PRIO_PROCESS, pid); printf("Process ID: %d\n", pid); printf("Priority: %d\n", priority); return 0; }这个程序首先获取当前进程的 ID,然后使用getpriority函数获取其优先级,并将结果打印出来。五、总结Linux 的进程调度是一个复杂而强大的机制,它允许我们有效地管理系统资源,确保关键任务能够及时得到处理,同时也能保证系统的整体性能和稳定性。通过了解和掌握进程调度的原理和方法,我们可以更好地优化系统性能,提高工作效率。希望这篇博客对你理解 Linux 中的系统进程调度有所帮助!如果你有任何问题或想法,欢迎在评论区留言交流。
-
OpenGauss 用户口令强度校验机制详解在数据库安全中,用户口令的强度至关重要。OpenGauss 提供了用户口令强度校验机制,以确保用户设置的口令具有足够的安全性。本文将详细介绍 OpenGauss 的用户口令强度校验机制,包括其原理、配置方法以及实际应用,并提供相关代码示例。一、用户口令强度校验机制概述OpenGauss 的用户口令强度校验机制旨在防止用户设置过于简单或容易被猜测的口令。通过设置口令强度规则,可以强制用户使用包含一定复杂度的口令,如长度要求、大小写字母、数字和特殊字符的组合等。二、口令强度校验原理OpenGauss 使用正则表达式来定义口令强度规则。当用户创建或修改口令时,数据库会将用户输入的口令与预设的正则表达式进行匹配。如果口令不符合规则,数据库将拒绝该口令,并提示用户重新设置符合强度要求的口令。三、配置口令强度校验修改配置参数OpenGauss 的口令强度校验可以通过修改配置参数来实现。编辑postgresql.conf文件,找到以下参数:password_encryption_type:设置口令加密方式。可以选择md5或sha256等加密方式。password_reuse_time:设置口令重用时间。即用户在多长时间内不能重复使用相同的口令。password_lock_time:设置口令锁定时间。当用户连续输入错误口令达到一定次数时,账户将被锁定的时间。password_grace_time:设置口令过期前的宽限期。在口令过期前,用户可以在这段时间内登录并修改口令。根据实际需求修改这些参数的值,并重启数据库使配置生效。设置口令强度规则OpenGauss 可以通过设置正则表达式来定义口令强度规则。编辑pg_hba.conf文件,找到以下参数:password_regex:设置口令强度正则表达式。例如,可以设置为^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$,表示口令必须包含至少一个小写字母、一个大写字母、一个数字和一个特殊字符,长度至少为 8 位。根据实际需求修改正则表达式的值,并重启数据库使配置生效。四、实际应用示例以下是一个使用 OpenGauss 创建用户并设置口令的示例代码:-- 创建用户 CREATE USER test_user WITH PASSWORD 'Test@123'; -- 修改用户口令 ALTER USER test_user WITH PASSWORD 'NewPassword@123';在上述代码中,创建了一个用户test_user,并设置了初始口令为Test@123。然后,使用ALTER USER语句修改了用户的口令为NewPassword@123。如果口令不符合强度规则,数据库将拒绝修改口令,并提示用户重新设置符合要求的口令。五、注意事项口令强度规则应根据实际需求进行设置,过于严格的规则可能会给用户带来不便,而过于宽松的规则则可能降低数据库的安全性。在设置口令强度规则时,应考虑到用户的使用习惯和记忆力,避免设置过于复杂的规则导致用户难以记住口令。定期更换口令是提高数据库安全性的重要措施之一。可以通过设置口令过期时间和宽限期来强制用户定期更换口令。除了口令强度校验机制外,还可以采取其他安全措施,如访问控制、数据加密等,来提高数据库的安全性。六、总结OpenGauss 的用户口令强度校验机制是提高数据库安全性的重要手段之一。通过合理设置口令强度规则,可以强制用户使用更加安全的口令,从而降低数据库被攻击的风险。在实际应用中,应根据实际需求进行配置,并结合其他安全措施,共同保障数据库的安全。希望本文对大家在使用 OpenGauss 的用户口令强度校验机制时有所帮助。在数据库安全日益重要的今天,加强口令管理是保护数据库安全的重要环节之一。
-
Linux 中磁盘挂载的实用指南在 Linux 系统中,磁盘挂载是一项重要的操作,它允许我们访问和使用外部存储设备,如硬盘、U盘等。本文将详细介绍 Linux 中磁盘挂载的使用方法,并提供相关代码示例。一、磁盘挂载的概念磁盘挂载是将一个存储设备(如硬盘分区、U盘等)连接到文件系统树中的一个特定目录的过程。一旦设备被挂载,我们就可以通过访问该目录来读取和写入存储设备上的文件。二、查看磁盘设备在进行磁盘挂载之前,我们需要先确定系统中可用的磁盘设备。可以使用以下命令查看:lsblk:列出系统中的块设备,包括硬盘、分区、U盘等。例如,执行lsblk命令可能会输出类似以下内容:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 48G 0 part / └─sda2 8:2 0 2G 0 part [SWAP] sdb 8:16 0 128G 0 disk 这里sda和sdb是两个磁盘设备,sda1和sda2是sda磁盘的分区。三、创建挂载点在挂载磁盘之前,我们需要创建一个挂载点,即一个用于访问挂载设备的目录。可以使用以下命令创建一个名为/mnt/mydisk的挂载点:sudo mkdir /mnt/mydisk四、手动挂载磁盘手动挂载磁盘可以使用mount命令。例如,要将sdb磁盘挂载到/mnt/mydisk目录,可以使用以下命令:sudo mount /dev/sdb /mnt/mydisk如果磁盘设备有特定的文件系统格式,例如 NTFS,可以使用以下命令挂载:sudo mount -t ntfs /dev/sdb /mnt/mydisk五、自动挂载磁盘如果希望在系统启动时自动挂载磁盘,可以将挂载信息添加到/etc/fstab文件中。例如,对于一个/dev/sdb磁盘,文件系统为ext4,要自动挂载到/mnt/mydisk目录,可以在/etc/fstab文件中添加以下行:/dev/sdb /mnt/mydisk ext4 defaults 0 0六、代码示例以下是一个使用 Python 脚本检查特定磁盘是否已挂载的示例:import os def is_disk_mounted(disk_path): with open('/proc/mounts') as f: mounts = f.readlines() for mount in mounts: parts = mount.split() if parts[0] == disk_path: return True return False disk_to_check = '/dev/sdb' if is_disk_mounted(disk_to_check): print(f'{disk_to_check} is mounted.') else: print(f'{disk_to_check} is not mounted.')
-
OpenGauss 透明数据加密详解在当今数字化时代,数据安全至关重要。OpenGauss 作为一款强大的开源关系型数据库管理系统,提供了透明数据加密(Transparent Data Encryption,TDE)功能,以保护敏感数据的安全。本文将详细介绍 OpenGauss 的透明数据加密功能,包括其原理、配置方法以及实际应用,并提供相关代码示例。一、透明数据加密概述透明数据加密是一种在数据库层面实现的数据加密技术,它可以对数据库中的数据进行加密,使得即使数据库文件被窃取,攻击者也无法直接读取其中的敏感信息。OpenGauss 的透明数据加密功能可以对表空间、表和列进行加密,提供了灵活的数据加密方式。二、透明数据加密原理OpenGauss 的透明数据加密采用了对称加密算法,对数据进行加密和解密。在数据写入数据库时,OpenGauss 会自动对数据进行加密,并将加密后的数据存储在数据库文件中。在数据读取时,OpenGauss 会自动对加密数据进行解密,并将解密后的数据返回给用户。透明数据加密的密钥管理是通过密钥存储库来实现的。密钥存储库可以是数据库内部的密钥存储区,也可以是外部的密钥管理系统。在配置透明数据加密时,需要指定密钥存储库的类型和位置,并设置加密密钥。三、透明数据加密配置方法启用透明数据加密编辑 OpenGauss 的配置文件postgresql.conf,添加以下参数:enable_tde = on:启用透明数据加密功能。重启 OpenGauss 数据库,使配置生效。创建密钥存储库OpenGauss 支持多种密钥存储库类型,包括数据库内部密钥存储区和外部密钥管理系统。这里以数据库内部密钥存储区为例进行介绍。在 OpenGauss 数据库中创建一个密钥存储区,可以使用以下 SQL 语句:CREATE KEYSTORE internal;设置加密密钥在创建密钥存储区后,需要设置加密密钥。可以使用以下 SQL 语句设置加密密钥:ALTER KEYSTORE internal SET KEY 'your_encryption_key';其中,your_encryption_key是你自己设置的加密密钥,需要妥善保管,确保安全性。对表空间、表或列进行加密可以使用ENCRYPTED WITH子句对表空间、表或列进行加密。例如,以下 SQL 语句创建了一个加密的表空间:CREATE TABLESPACE encrypted_tablespace ENCRYPTED WITH (KEYSTORE = internal, KEY = 'your_encryption_key');以下 SQL 语句创建了一个加密的表:CREATE TABLE encrypted_table (id INT, name VARCHAR(50)) ENCRYPTED WITH (KEYSTORE = internal, KEY = 'your_encryption_key');以下 SQL 语句创建了一个加密的列:CREATE TABLE encrypted_table (id INT, name VARCHAR(50), encrypted_data BYTEA ENCRYPTED WITH (KEYSTORE = internal, KEY = 'your_encryption_key'));四、透明数据加密的实际应用数据安全保护透明数据加密可以保护敏感数据的安全,防止数据泄露。例如,在金融、医疗等行业,需要对客户的个人信息、财务数据等敏感信息进行加密保护。合规要求许多行业都有数据安全合规要求,透明数据加密可以帮助企业满足这些要求。例如,在欧盟的《通用数据保护条例》(GDPR)中,要求企业对个人数据进行加密保护。数据备份与恢复透明数据加密可以对数据库进行加密备份,确保备份数据的安全性。在恢复备份数据时,OpenGauss 会自动对加密数据进行解密,无需手动处理加密和解密过程。五、注意事项密钥管理加密密钥是透明数据加密的核心,需要妥善保管。建议将加密密钥存储在安全的地方,如硬件安全模块(HSM)或加密文件中。同时,需要定期更换加密密钥,以提高数据的安全性。性能影响透明数据加密会对数据库的性能产生一定的影响,特别是在数据写入和读取时。在实际应用中,需要根据业务需求和性能要求进行权衡,选择合适的加密方式和加密级别。数据库升级与迁移在进行数据库升级或迁移时,需要注意透明数据加密的兼容性。确保新的数据库版本支持透明数据加密功能,并正确迁移加密密钥和加密数据。六、总结OpenGauss 的透明数据加密功能为数据库中的敏感数据提供了强大的安全保护。通过启用透明数据加密、创建密钥存储库和设置加密密钥,可以对表空间、表和列进行加密,确保数据的安全性。在实际应用中,需要注意密钥管理、性能影响和数据库升级与迁移等问题,以充分发挥透明数据加密的优势。希望本文对大家在使用 OpenGauss 的透明数据加密功能时有所帮助。在数据安全日益重要的今天,透明数据加密是保护数据库中敏感数据的重要手段之一。
-
在 OpenGauss 主备切换过程中,备用数据库的数据一致性主要通过以下几种方式来保障:一、复制机制OpenGauss 采用基于 WAL(Write-Ahead Logging,预写式日志)的复制机制来确保主备数据库之间的数据一致性。WAL 日志记录主数据库在进行数据修改操作时,会先将这些操作记录到 WAL 日志中。WAL 日志包含了所有对数据库的修改信息,按照时间顺序依次记录。主数据库在完成一个事务的修改操作后,会确保 WAL 日志被持久化到磁盘上,以防止数据丢失。WAL 日志同步主数据库会将 WAL 日志同步到备用数据库。同步的方式可以是同步复制或异步复制,具体取决于配置。在同步复制模式下,主数据库会等待备用数据库确认收到 WAL 日志后,才会提交事务。这样可以确保主备数据库的数据完全一致,但会带来一定的性能开销。在异步复制模式下,主数据库在将 WAL 日志发送到备用数据库后,立即提交事务,不等待备用数据库的确认。这种方式可以提高性能,但可能会导致主备数据库之间存在短暂的数据不一致。备用数据库应用 WAL 日志备用数据库会不断地从主数据库接收 WAL 日志,并将其应用到自己的数据库中。这个过程是连续的,确保备用数据库的数据始终与主数据库保持同步。备用数据库在应用 WAL 日志时,会按照日志中的顺序依次进行操作,以保证数据的一致性。二、检查点机制OpenGauss 还使用检查点机制来确保备用数据库的数据一致性。检查点的作用检查点是一个数据库状态的标记点,它记录了数据库在某个时刻的一致状态。在主备切换过程中,备用数据库可以从最近的检查点开始恢复数据,从而减少恢复时间。检查点还可以帮助数据库在发生故障时更快地恢复数据,因为只需要从最近的检查点开始应用 WAL 日志,而不需要从数据库的起始状态开始恢复。检查点的生成OpenGauss 会定期生成检查点,也可以通过管理员手动触发检查点的生成。在生成检查点时,数据库会将内存中的数据刷新到磁盘上,并记录当前的数据库状态。主数据库和备用数据库都会生成检查点,并且在主备切换过程中,备用数据库可以使用主数据库生成的检查点来加速数据恢复。三、故障检测和恢复机制OpenGauss 还具有故障检测和恢复机制,以确保在主数据库出现故障时,备用数据库能够及时接管并保持数据一致性。故障检测备用数据库会定期检测主数据库的状态。可以通过心跳机制、网络连接检测等方式来判断主数据库是否正常运行。如果备用数据库检测到主数据库出现故障,会立即启动故障切换流程,将自己提升为主数据库。故障恢复当主数据库故障恢复后,可以将其作为备用数据库重新加入到主备架构中。在这个过程中,主数据库需要从新的主数据库同步数据,以恢复到与主数据库一致的状态。OpenGauss 提供了一些工具和命令来帮助管理员进行故障恢复,例如使用 pg_rewind 命令可以将主数据库的数据恢复到与备用数据库一致的状态。四、管理员的监控和维护除了数据库自身的机制外,管理员的监控和维护也对备用数据库的数据一致性至关重要。监控主备数据库状态管理员可以使用 OpenGauss 提供的监控工具来实时监测主备数据库的状态,包括数据库的连接数、事务处理情况、WAL 日志同步状态等。通过监控,管理员可以及时发现主备数据库之间的数据不一致问题,并采取相应的措施进行修复。定期进行数据一致性检查管理员可以定期使用数据库自带的工具或者第三方工具对主备数据库的数据进行一致性检查。这些工具可以比较主备数据库中的数据,发现任何不一致的地方,并提供修复建议。定期进行数据一致性检查可以帮助管理员及时发现潜在的问题,并采取预防措施,以确保主备数据库之间的数据始终保持一致。综上所述,OpenGauss 通过复制机制、检查点机制、故障检测和恢复机制以及管理员的监控和维护等多种方式来保障备用数据库在主备切换过程中的数据一致性。这些机制相互配合,确保了数据库的高可用性和数据的安全性。
-
OpenGauss 高可用配置方法在当今的企业级应用环境中,数据库的高可用性至关重要。OpenGauss 作为一款强大的开源关系型数据库管理系统,提供了多种实现高可用的方法。本文将详细介绍 OpenGauss 的高可用配置方法,并包含相关代码示例。一、OpenGauss 高可用概述OpenGauss 的高可用主要通过主备复制、自动故障切换等机制来实现。在高可用配置下,当主数据库出现故障时,备用数据库可以自动接管服务,确保业务的连续性。二、环境准备安装 OpenGauss首先,需要在多台服务器上安装 OpenGauss 数据库。可以参考 OpenGauss 官方文档进行安装。网络配置确保各服务器之间的网络连接正常,可以互相通信。三、主备复制配置配置主数据库编辑主数据库的配置文件postgresql.conf,设置以下参数:wal_level = replica:设置 WAL 日志级别为 replica,以便支持复制功能。archive_mode = on:开启归档模式,以便在主数据库故障时可以恢复数据。archive_command = 'cp %p /archive/%f':设置归档命令,将 WAL 日志归档到指定目录。编辑主数据库的pg_hba.conf文件,添加以下内容:host replication repluser 192.168.1.100/32 md5:允许备用数据库通过复制用户连接到主数据库。重启主数据库,使配置生效。配置备用数据库编辑备用数据库的配置文件postgresql.conf,设置与主数据库相同的wal_level和archive_mode参数。编辑备用数据库的recovery.conf文件,设置以下参数:restore_command = 'cp /archive/%f %p':设置恢复命令,从归档目录中读取 WAL 日志进行恢复。primary_conninfo = 'host=192.168.1.101 port=5432 user=repluser password=replpassword':设置主数据库的连接信息。重启备用数据库,使配置生效。以下是配置主数据库的示例代码:-- 修改 postgresql.conf 文件 wal_level = replica archive_mode = on archive_command = 'cp %p /archive/%f' -- 修改 pg_hba.conf 文件 host replication repluser 192.168.1.100/32 md5以下是配置备用数据库的示例代码:-- 修改 postgresql.conf 文件 wal_level = replica archive_mode = on -- 修改 recovery.conf 文件 restore_command = 'cp /archive/%f %p' primary_conninfo = 'host=192.168.1.101 port=5432 user=repluser password=replpassword'四、自动故障切换配置使用第三方工具可以使用一些第三方工具来实现 OpenGauss 的自动故障切换,如 Pacemaker、Keepalived 等。这些工具可以监控主数据库的状态,当主数据库出现故障时,自动将备用数据库提升为主数据库。自定义脚本也可以编写自定义脚本,通过定期检测主数据库的状态来实现自动故障切换。例如,可以使用 shell 脚本结合数据库连接工具,定期连接主数据库,如果连接失败,则执行故障切换操作。以下是一个使用 shell 脚本实现自动故障切换的示例:#!/bin/bash # 检测主数据库状态 function check_master_status() { psql -h master_ip -p master_port -U username -d database_name -c "SELECT 1" >/dev/null 2>&1 if [ $? -ne 0 ]; then return 1 else return 0 fi } # 执行故障切换操作 function failover() { # 提升备用数据库为主数据库的操作 # 例如:执行特定的 SQL 语句或调用数据库工具 echo "执行故障切换操作..." } while true; do if check_master_status; then echo "主数据库正常运行。" else echo "主数据库故障,开始故障切换。" failover fi sleep 10 done五、监控与维护监控数据库状态使用数据库监控工具,如 Grafana、Prometheus 等,实时监控 OpenGauss 的运行状态,包括主备数据库的连接数、事务处理情况、磁盘空间使用情况等。定期备份数据定期对数据库进行备份,以防止数据丢失。可以使用 OpenGauss 提供的备份工具,或者第三方备份软件。测试高可用配置定期进行高可用测试,模拟主数据库故障,验证备用数据库是否能够自动接管服务。六、总结通过以上步骤,可以实现 OpenGauss 的高可用配置。主备复制和自动故障切换机制可以确保在主数据库出现故障时,备用数据库能够及时接管服务,保证业务的连续性。同时,监控与维护工作也非常重要,可以及时发现和解决问题,确保数据库的稳定运行。
-
OpenGauss 主备切换是为了确保数据库的高可用性,当主数据库出现故障时,能够自动切换到备用数据库,以保证业务的连续性。以下是 OpenGauss 主备切换的流程:一、主备架构概述OpenGauss 主备数据库通过复制技术实现数据同步。主数据库负责处理业务请求,并将数据变更记录到 WAL(Write-Ahead Logging)日志中。备用数据库通过读取主数据库的 WAL 日志来保持与主数据库的数据同步。二、正常情况下的主备切换流程发起切换请求管理员可以通过命令或者管理工具发起主备切换请求。例如,可以使用 pg_ctl promot 命令在主数据库上触发切换操作。主数据库处理主数据库接收到切换请求后,会进行一些清理工作,如关闭正在进行的事务、刷新缓存等。主数据库将自己的状态设置为“切换中”,并停止接收新的业务请求。WAL 日志同步主数据库确保所有的 WAL 日志都已经同步到备用数据库。如果有未同步的日志,主数据库会等待备用数据库完成同步。备用数据库提升为主数据库备用数据库检测到主数据库的状态变化后,开始进行提升操作。备用数据库将自己的状态设置为主数据库,并开始接收业务请求。备用数据库应用尚未应用的 WAL 日志,以确保数据的完整性。原主数据库变为备用数据库原主数据库完成切换操作后,将自己的状态设置为备用数据库。原主数据库开始从新的主数据库同步 WAL 日志,以保持数据同步。三、主数据库故障时的主备切换流程故障检测备用数据库会定期检测主数据库的状态。可以通过心跳机制或者网络连接检测等方式来判断主数据库是否正常运行。如果备用数据库检测到主数据库出现故障,会启动故障切换流程。备用数据库提升为主数据库备用数据库将自己的状态设置为主数据库,并开始接收业务请求。备用数据库应用尚未应用的 WAL 日志,以确保数据的完整性。故障恢复当主数据库故障恢复后,可以将其作为备用数据库重新加入到主备架构中。原主数据库需要从新的主数据库同步数据,以恢复到与主数据库一致的状态。四、切换后的检查和维护数据一致性检查在主备切换完成后,需要检查新的主数据库和备用数据库的数据一致性。可以通过数据库自带的工具或者第三方工具进行数据对比。日志清理主备切换过程中会产生一些临时的日志文件,需要及时清理这些文件,以释放磁盘空间。监控和报警切换完成后,需要对新的主备架构进行监控,确保数据库的正常运行。可以设置报警机制,以便在出现问题时及时通知管理员。总之,OpenGauss 主备切换流程包括正常情况下的切换和主数据库故障时的切换。在切换过程中,需要确保数据的一致性和完整性,并进行必要的检查和维护工作,以保证数据库的高可用性。
-
OpenGauss 主备切换全攻略在数据库管理中,主备切换是一项至关重要的技术,它可以确保数据库的高可用性和数据的安全性。本文将详细介绍 OpenGauss 的主备切换过程,包括原理、配置方法以及实际操作中的注意事项,并提供相关的代码命令。一、OpenGauss 主备切换简介OpenGauss 是一款开源的关系型数据库管理系统,具有高性能、高可靠、高安全等特点。主备切换是 OpenGauss 实现高可用性的重要手段之一,当主数据库出现故障时,可以自动切换到备用数据库,保证业务的连续性。主备切换的原理是通过复制技术将主数据库的数据实时同步到备用数据库,当主数据库不可用时,备用数据库可以接管业务请求,继续提供服务。OpenGauss 支持多种复制方式,包括同步复制和异步复制,可以根据实际需求进行选择。二、OpenGauss 主备切换的配置环境准备安装 OpenGauss 数据库,可以参考官方文档进行安装。准备两台服务器,分别作为主数据库和备用数据库。确保两台服务器之间的网络连接正常。配置主数据库编辑主数据库的配置文件postgresql.conf,设置以下参数:wal_level = replica:设置 WAL 日志级别为 replica,以便支持复制功能。archive_mode = on:开启归档模式,以便在主数据库故障时可以恢复数据。archive_command = 'cp %p /archive/%f':设置归档命令,将 WAL 日志归档到指定目录。编辑主数据库的pg_hba.conf文件,添加以下内容:host replication repluser 192.168.1.100/32 md5:允许备用数据库通过复制用户连接到主数据库。重启主数据库,使配置生效。配置备用数据库编辑备用数据库的配置文件postgresql.conf,设置以下参数:wal_level = replica:与主数据库保持一致。archive_mode = on:开启归档模式。archive_command = 'cp %p /archive/%f':与主数据库保持一致。编辑备用数据库的recovery.conf文件,设置以下参数:restore_command = 'cp /archive/%f %p':设置恢复命令,从归档目录中读取 WAL 日志进行恢复。primary_conninfo = 'host=192.168.1.101 port=5432 user=repluser password=replpassword':设置主数据库的连接信息。重启备用数据库,使配置生效。三、OpenGauss 主备切换的操作步骤正常情况下的主备切换在主数据库上执行以下命令,查看当前的主备状态:SELECT pg_is_in_recovery();如果返回false,表示当前为主数据库。在备用数据库上执行以下命令,查看当前的主备状态:SELECT pg_is_in_recovery();如果返回true,表示当前为备用数据库。在主数据库上执行以下命令,触发主备切换:SELECT pg_ctl promot();等待主数据库切换完成,此时主数据库变为备用数据库,备用数据库变为主数据库。在新的主数据库上执行以下命令,查看当前的主备状态:SELECT pg_is_in_recovery();如果返回false,表示当前为主数据库。主数据库故障时的主备切换当主数据库出现故障时,备用数据库会自动检测到主数据库的故障,并尝试进行切换。在备用数据库上执行以下命令,查看当前的主备状态:SELECT pg_is_in_recovery();如果返回true,表示当前为备用数据库。等待备用数据库自动切换为主数据库,这个过程可能需要一些时间,具体时间取决于故障检测和切换机制的配置。在新的主数据库上执行以下命令,查看当前的主备状态:SELECT pg_is_in_recovery();如果返回false,表示当前为主数据库。四、OpenGauss 主备切换的注意事项在进行主备切换之前,一定要确保备用数据库的数据是完整的,可以通过定期进行数据备份和恢复测试来保证数据的安全性。在配置主备数据库时,要确保两台服务器之间的网络连接稳定,避免出现网络故障导致主备切换失败。在主备切换过程中,可能会出现短暂的业务中断,因此需要在业务低峰期进行主备切换,以减少对业务的影响。在主备切换完成后,要及时检查新的主数据库和备用数据库的状态,确保数据库正常运行。五、总结OpenGauss 的主备切换功能可以有效地提高数据库的高可用性和数据的安全性。通过合理的配置和操作,可以实现主数据库和备用数据库之间的自动切换,保证业务的连续性。在实际应用中,需要根据业务需求和实际情况进行合理的配置和调整,以确保主备切换的顺利进行。希望本文对大家在 OpenGauss 主备切换的配置和操作中有所帮助。如果在实际操作中遇到问题,可以参考 OpenGauss 的官方文档或者寻求专业的技术支持。
-
openGauss- 数据库安装流程解除对root用户的依赖可获得性本特性自openGauss 6.0.0-RC1版本开始引入。特性简介数据库安装流程解除对root用户的依赖,本次涉及的流程有预安装,安装,升级,扩容,校验。所有的这些流程让用户无需使用root用户进行操作,直接使用普通用户就能操作。由于预安装,校验,扩容这个三个工具都是root用户,其他的工具都已经是普通用户执行。所有本次涉及的工具有:gs_preinstall,gs_checkos,gs_expansion。本次特性针对预安装,校验,扩容这三个工具进行适配,确保数据库可以在普通用户下执行。客户价值openGauss的安装流程中,在预安装的时候使用的是root用户,到安装又是子用户,这样导致用户操作起来非常麻烦,而且容易出错;有些用户甚至拿不到root用户的权限。本次数据库安装流程解除对root用户的依赖,让用户无需使用root用户进行相应的操作,直接使用普通用户就能操作。特性描述数据库安装流程解除对root用户的依赖,本次涉及的流程有预安装,安装,升级,扩容,校验。所有的这些流程让用户无需使用root用户进行操作,直接使用普通用户就能操作。由于预安装,校验,扩容这个三个工具都是root用户,其他的工具都已经是普通用户执行所有本次涉及的工具有:gs_preinstall,gs_checkos,gs_expansion。本次特性针对预安装,校验,扩容这三个工具进行适配,确保数据库可以在普通用户下执行。
-
openGauss- 数据库认证机制可获得性本特性自openGauss 1.1.0版本开始引入。特性简介提供基于客户端/服务端(C/S)模式的客户端连接认证机制。客户价值加密认证过程中采用单向Hash不可逆加密算法PBKDF2,有效防止彩虹攻击。特性描述openGauss采用基本的客户端连接认证机制,客户端发起连接请求后,由服务端完成信息校验并依据校验结果发送认证所需信息给客户端(认证信息包括盐值、token以及服务端签名信息)。客户端响应请求发送认证信息给服务端,由服务端调用认证模块完成对客户端认证信息的认证。用户的密码被加密存储在内存中。整个过程中口令加密存储和传输。当用户下次登录时通过计算相应的hash值并与服务端存储的key值比较来进行正确性校验。特性增强统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者密码的正确性。特性约束无。依赖关系无。详情查看:cid:link_1详情查看:cid:link_0
-
openGauss- 系统KPI辅助诊断可获得性本特性自openGauss 1.0.0 版本开始引入。特性简介KPI是内核组件或者整体性能关键指标的视图呈现,基于这些指标,用户可以了解到系统运行的实时或者历史状态。客户价值系统负载概要诊断系统负载异常(过载、失速、业务SLA)精准告警,系统负载精准画像。系统时间模型概要诊断Instance和Query级别时间模型细分,诊断Instance和Query性能问题根因。Query性能诊断数据库级Query概要信息,TopSQL,SQL CPU,IO消耗,执行计划,硬解析过多。磁盘IO、索引、buffer性能问题连接池,线程池异常Checkpoint,Redo(RTO)性能问题系统I/O、LWLock、Waits性能问题诊断诊断60+模块,240+关键操作性能问题。函数级性能看护诊断(GSTRACE),功能诊断50+存储和执行层函数trace。特性描述openGauss提供涵盖11大类,26个子类的KPI,包括:Instance、File、Object、Workload、Communication、Session、Thread、Cache IO、Lock、Wait Event、Cluster。特性约束对于utility语句不支持归一化,主要体现为非DML语句,比如:create/drop/copy/vacuum等语句。当前归一化SQL仅记录顶层SQL,对于存储过程语句,不对存储过程内部的SQL进行归一化处理,只记录调用存储过程的SQL。依赖关系无。
上滑加载中
推荐直播
-
华为云 x DeepSeek:AI驱动云上应用创新
2025/02/26 周三 16:00-18:00
华为云 AI专家大咖团
在 AI 技术飞速发展之际,DeepSeek 备受关注。它凭借哪些技术与理念脱颖而出?华为云与 DeepSeek 合作,将如何重塑产品与应用模式,助力企业数字化转型?在华为开发者空间,怎样高效部署 DeepSeek,搭建专属服务器?基于华为云平台,又该如何挖掘 DeepSeek 潜力,实现智能化升级?本期直播围绕DeepSeek在云上的应用案例,与DTSE布道师们一起探讨如何利用AI 驱动云上应用创新。
回顾中
热门标签