diff --git a/app/zh/blogs/wei_shuo_study_java/.keep b/app/zh/blogs/wei_shuo_study_java/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss 6.0 LTS \345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262.md" "b/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss 6.0 LTS \345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262.md" new file mode 100644 index 0000000000000000000000000000000000000000..481412359663bd982f767570d3afe9951e8dc302 --- /dev/null +++ "b/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss 6.0 LTS \345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262.md" @@ -0,0 +1,398 @@ +## openGauss 6.0 LTS 实现高可用性部署 + +### 简介 + + + +> openGauss 6.0 LTS是华为开发的企业级分布式数据库:高性能、高可用性、强扩展性,基于PostgreSQL,支持SQL和JSON数据类型,提供高并发、高吞吐量的处理能力,适合金融、电信、政府等行业使用,6.0版本主要增强了分布式事务支持、存储引擎的优化、安全性提升及多种新特性,确保长时间稳定运行和高效的数据管理能力 + +> - 官网体验地址:[openGauss社区官网](https://opengauss.org/zh/) +> - 软件包下载地址:[openGauss社区](https://opengauss.org/zh/download/) +> +> + +### 安装流程 + +> 1、关闭安全服务 +> +> ``` +> sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config +> ``` +> +> 2、关闭防火墙 +> +> ```bash +> systemctl status firewalld +> systemctl stop firewalld.service +> systemctl disable firewalld.service +> systemctl status firewalld.service +> ``` +> +> 3、关闭selinux +> +> ```bash +> sudo setenforce 0 +> ``` +> +> 4、配置host +> +> ```bash +> [root@centos79 ~]# cat /etc/hosts +> 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 +> ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 +> 192.168.10.10 centos79 +> ``` +> +> 5、安装依赖 +> +> - 创建挂载目录 +> +> ```bash +> mkdir /cdrom +> ``` +> +> - 挂载CD-ROM镜像 +> +> ```bash +> mount -t iso9660 -o ro /dev/cdrom /cdrom +> ``` +> +> - 备份现有的YUM源配置文件 +> +> ```bash +> cd /etc/yum.repos.d/ +> mkdir bak +> mv CentOS* bak +> ``` +> +> - 配置本地YUM源 +> +> ```bash +> vi local.repo +> ``` +> +> ```bash +> cat >/etc/yum.repos.d/local.repo < [base-local] +> name=CentOS7-local +> baseurl=file:///cdrom +> enabled=1 +> gpgcheck=0 +> EOF +> ``` +> +> - 清空并重载YUM缓存 +> +> ``` +> yum clean all +> yum makecache +> ``` +> +> - 安装依赖包 +> +> ```bash +> yum -y install libaio-devel flex bison ncurses-devel \ +> glibc-devel patch redhat-lsb-core readline-devel openssl-devel sqlite-devel libnsl +> ``` +> +> 6、设置字符集 +> +> ```bash +> echo 'export LANG=en_US.UTF-8' >> /etc/profile +> echo 'export packagePath=/opt/software/openGauss' >> /etc/profile +> echo 'export LD_LIBRARY_PATH=$packagePath/script/gspylib/clib:$LD_LIBRARY_PATH' >> /etc/profile +> ``` +> +> 7、时区配置 +> +> ```bash +> sudo timedatectl set-timezone systemdefault +> ``` +> +> 8、openGauss 6.0 LTS安装 +> +> - 创建安装目录,上传安装包 +> +> ```bash +> mkdir -p /opt/openGauss +> ``` +> +> - 解压安装包 +> +> ```bash +> tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz +> ``` +> +> 9、目录添加权限 +> +> ```bash +> chmod 775 -R /opt/openGauss +> ``` +> +> 10、配置XML文件 +> +> ```bash +> vi /opt/openGauss/db_config.xml +> ``` +> +> ```bash +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> +> ``` +> +> 11、用户和组创建 +> +> - 创建用户组 +> +> ```bash +> groupadd dbgroup +> ``` +> +> - 创建用户 +> +> ```bash +> useradd -g dbgroup omm +> ``` +> +> 12、初始化安装 +> +> ```bash +> ./gs_preinstall -U omm -G dbgroup -X /opt/software/openGauss/cluster_config.xml +> ``` +> +> 13、以 omm 用户身份登录服务器 +> +> ```bash +> su - omm +> ``` +> +> 14、使用 gs_om -t status 命令检查数据库状态 +> +> ```bash +> gs_om -t status +> ``` +> +> 15、使用 gs_om -t status --detail 命令查看详细信息 +> +> ``` +> gs_om -t status --detail +> ``` +> +> 16、连接数据库 +> +> ```bash +> gsql -d postgres -p 15400 +> ``` +> +> 17、列出数据库 +> +> ```bash +> openGauss=# \l +> ``` +> +> 18、查看 gsql 版本 +> +> ```bash +> gsql -V +> ``` +> +> 19、检查数据库服务是否启动 +> +> ```bash +> gs_om -t status +> ``` +> +> 如果数据库正常运行,输出的 cluster_state 应显示为 Normal +> +> ``` +> cluster_state : Normal +> ``` +> +> 20、如果异常可以查看数据库日志 +> +> ```bash +> tail -f /path/to/data_directory/pg_log/*.log +> ``` + +### openGauss 6.0 LTS 高可用性架构 + +> openGauss 6.0 LTS 提供了两种主要高可用性架构: +> +> - 主从复制架构:一个主节点和多个备份节点,通过数据同步确保数据一致性,主节点负责所有写操作,备份节点同步主节点的数据,并且可以用来读取数据。 +> +> - 自动故障转移:在主节点发生故障时,系统自动将备份节点提升为主节点,保证数据库的高可用性和持续服务。 + +#### 主从复制架构 + +> 1、主节点配置,登录到主节点 +> +> ```bash +> sudo -u opengauss gsql -d postgres -p 15400 +> ``` +> +> 2、执行 SQL 创建复制用户 +> +> ```bash +> CREATE USER replication_user WITH REPLICATION PASSWORD '12345'; +> ``` +> +> 3、编辑主节点的 postgresql.conf 配置文件,启用流复制 +> +> ```bash +> vi /path/to/data_directory/postgresql.conf +> ``` +> +> ```bash +> wal_level = replica # 启用流复制 +> max_wal_senders = 10 # 设置最大 WAL 发送进程数 +> wal_keep_size = 1GB # 设置 WAL 日志保留大小 +> hot_standby = on # 启用热备份模式,使从节点可以读取数据 +> ``` +> +> 4、配置主节点的访问控制(编辑 pg_hba.conf 文件,允许从节点使用复制权限连接到主节点) +> +> ```bash +> vi /path/to/data_directory/pg_hba.conf +> ``` +> +> 5、添加如下配置,允许从节点连接主节点 +> +> ```bash +> host replication replication_user from_node_ip/32 md5 +> ``` +> +> 6、重新加载主节点配置 +> +> ```bash +> sudo -u opengauss gs_ctl reload -D /path/to/data_directory +> ``` +> +> 7、检查主节点的状态 +> +> - 登录主节点 +> +> ```bash +> sudo -u opengauss gsql -d postgres -p 15400 +> ``` +> +> - 查询复制状态 +> +> ```bash +> SELECT * FROM pg_stat_replication; +> ``` +> +> 8、从节点配置(从节点需要从主节点进行数据同步。使用 pg_basebackup 工具从主节点获取全量数据备份) +> +> - 运行 pg_basebackup 命令进行备份 +> +> ```bash +> pg_basebackup -h master_node_ip -D /path/to/standby/data_directory -U replication_user -P --wal-method=stream +> ``` +> +> - `master_node_ip` 是主节点的 IP 地址 +> - `replication_user` 是在主节点上创建的复制用户 +> - `/path/to/standby/data_directory` 是从节点的数据存储目录 +> +> 9、配置从节点的 recovery.conf 文件(在从节点的数据目录下创建 recovery.conf 文件,以指定从节点如何连接主节点进行同步) +> +> ```bash +> vi /path/to/standby/data_directory/recovery.conf +> ``` +> +> ```bash +> standby_mode = 'on' # 启用从节点模式 +> primary_conninfo = 'host=master_node_ip port=15400 user=replication_user password=your_password' # 主节点连接信息 +> trigger_file = '/tmp/postgresql.promote' # 主从切换标志文件 +> ``` +> +> 10、启动从节点 +> +> ```bash +> sudo -u opengauss gs_ctl start -D /path/to/standby/data_directory +> ``` +> +> 11、验证从节点同步状态 +> +> - 登录到从节点 +> +> ``` +> sudo -u opengauss gsql -d postgres -p 15400 +> ``` +> +> - 查询复制状态 +> +> ```bash +> SELECT * FROM pg_stat_wal_receiver; +> ``` + +#### 自动故障转移 + +> 1、手动故障转移(如果主节点出现故障,需要将从节点提升为新的主节点,可以通过以下步骤手动触发故障转移,在从节点上创建一个空文件,用于触发从节点切换为主节点) +> +> - 从节点会检测到此文件并自动切换为新的主节点 +> +> ```bash +> touch /tmp/postgresql.promote +> ``` +> +> 2、自动故障转移(openGauss 6.0 LTS 支持通过 gs_om 工具实现自动故障转移,为了实现自动故障转移,需要配置一个监控节点,该节点会监控主节点的状态,发现主节点宕机时自动将备份节点提升为主节点) +> +> - 通过 gs_om 工具配置监控服务和启用自动故障转移功能 +> +> ```bash +> gs_om -t start -D /path/to/data_directory +> ``` +> +> 3、检查集群状态 +> +> ```bash +> gs_om -t status --detail +> ``` + +### 总结 + +> 开发者角度来看,openGauss 6.0 LTS 提供的主从复制架构和自动故障转移机制为数据库系统提供了高可用性保障,简化容灾和故障恢复的过程。通过流复制技术,数据在主从节点之间高效同步,保证了系统的稳定性与容错能力,且支持热备份模式实现读写分离,有效减轻主节点负载,提高查询吞吐量。 +> +> 然而,复制延迟和网络瓶颈可能导致从节点数据滞后,因此在高并发环境下需要对同步延迟进行监控和优化,自动故障转移机制则在主节点故障时自动将从节点提升为新的主节点,确保系统的持续可用性,减少人为干预,提高运维效率,然而在某些极端情况下,故障转移过程中可能会出现短暂的服务中断或数据丢失,通过合适的配置与监控,可以优化故障转移的响应速度和数据一致性,确保在实际业务中能够高效稳定运行。 +> +> 总的来说,openGauss 的高可用性架构不仅提升了数据库系统的稳定性和扩展性,也为开发者提供了更简洁的运维管理工具,减轻了系统管理负担,使得开发者能够更加专注于业务功能的开发与优化。 diff --git "a/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss6.0LTS\345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262-01.png" "b/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss6.0LTS\345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262-01.png" new file mode 100644 index 0000000000000000000000000000000000000000..7f9856ada90ef25847f8a140e6a898730cd942c0 Binary files /dev/null and "b/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss6.0LTS\345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262-01.png" differ diff --git "a/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss6.0LTS\345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262-02.png" "b/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss6.0LTS\345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262-02.png" new file mode 100644 index 0000000000000000000000000000000000000000..8dcd2fbc53b90fa95cfde723d42eba615fda29cc Binary files /dev/null and "b/app/zh/blogs/wei_shuo_study_java/2024-11-05-openGauss6.0LTS\345\256\236\347\216\260\351\253\230\345\217\257\347\224\250\346\200\247\351\203\250\347\275\262-02.png" differ