kingbase教程FG044-kingbase流复制主备部署实战
目录大纲
- 5.1 流复制最佳实践
- 5.2 常见问题与解决方案,风哥提示:
内容简介
本文档详细介绍kingbase数据库的流复制主备部署方法,包括流复制概念、主备配置、验证步骤等操作。风哥教程参考kingbase官方文档《KingbaseES流复制配置指南》。
Part01-基础概念与理论知识
1.1 流复制概念与作用
流复制是kingbase数据库中基于WAL日志的复制技术,主要作用包括:
- 数据同步
- 高可用性
- 负载均衡
- 灾难恢复,学习交流加群风哥微信: itpux-com
1.2 流复制类型
kingbase数据库中的流复制类型:
- 同步复制:主库等待备库确认后再提交
- 异步复制:主库无需等待备库确认
- 半同步复制:主库等待至少一个备库确认
Part02-生产环境规划与建议
2.1 流复制部署规划
- 节点数量:至少2个节点(1主1备)
- 网络拓扑:确保网络连接稳定,学习交流加群风哥QQ113257174
- 存储配置:备库存储配置与主库一致
- 监控配置:配置复制状态监控
2.2 硬件与网络要求
- 硬件要求:备库硬件配置与主库相当
- 网络要求:低延迟、高带宽的网络环境
- 存储要求:足够的存储空间
- 系统要求:相同的操作系统版本
Part03-生产环境项目实施方案
3.1 主库配置
主库配置的步骤:,更多视频教程www.fgedu.net.cn
- 修改kingbase.conf配置文件
- 配置pg_hba.conf文件
- 创建复制用户
- 重启数据库服务
3.2 备库配置
备库配置的步骤:
- 初始化备库,更多学习教程公众号风哥教程itpux_com
- 创建recovery.conf文件
- 启动备库服务
- 验证复制状态
Part04-生产案例与实战讲解
4.1 主库配置实战
配置主库:
# 修改kingbase.conf
su – kingbase -c “psql -d fgedudb -c ‘ALTER SYSTEM SET wal_level = replica; ALTER SYSTEM SET max_wal_senders = 10; ALTER SYSTEM SET hot_standby = on; ALTER SYSTEM SET max_replication_slots = 10; SELECT pg_reload_conf();'”
ALTER SYSTEM
ALTER SYSTEM
ALTER SYSTEM
ALTER SYSTEM
pg_reload_conf | t
# 配置pg_hba.conf
su – kingbase -c “echo ‘host replication replica 192.168.1.2/32 md5’ >> /kingbase/fgdata/pg_hba.conf”
# 重启数据库
su – kingbase -c “sys_ctl restart -D /kingbase/fgdata”
waiting for server to shut down…. done
waiting for server to start…. done
su – kingbase -c “psql -d fgedudb -c ‘ALTER SYSTEM SET wal_level = replica; ALTER SYSTEM SET max_wal_senders = 10; ALTER SYSTEM SET hot_standby = on; ALTER SYSTEM SET max_replication_slots = 10; SELECT pg_reload_conf();'”
ALTER SYSTEM
ALTER SYSTEM
ALTER SYSTEM
ALTER SYSTEM
pg_reload_conf | t
# 配置pg_hba.conf
su – kingbase -c “echo ‘host replication replica 192.168.1.2/32 md5’ >> /kingbase/fgdata/pg_hba.conf”
# 重启数据库
su – kingbase -c “sys_ctl restart -D /kingbase/fgdata”
waiting for server to shut down…. done
waiting for server to start…. done
4.2 备库配置实战
配置备库:
# 初始化备库
su – kingbase -c “pg_basebackup -h 192.168.1.1 -p 54321 -U replica -D /kingbase/fgdata -F p -X s -P”
Password:
# 输入密码后执行
31700/31700 kB (100%), 1/1 tablespace
# 创建recovery.conf
cat > /kingbase/fgdata/recovery.conf << 'EOF' standby_mode = 'on' primary_conninfo = 'host=192.168.1.1 port=54321 user=replica password=Kingbase@123' recovery_target_timeline = 'latest' EOF chown kingbase:kingbase /kingbase/fgdata/recovery.conf # 启动备库
su – kingbase -c “sys_ctl start -D /kingbase/fgdata”
waiting for server to start…. done
su – kingbase -c “pg_basebackup -h 192.168.1.1 -p 54321 -U replica -D /kingbase/fgdata -F p -X s -P”
Password:
# 输入密码后执行
31700/31700 kB (100%), 1/1 tablespace
# 创建recovery.conf
cat > /kingbase/fgdata/recovery.conf << 'EOF' standby_mode = 'on' primary_conninfo = 'host=192.168.1.1 port=54321 user=replica password=Kingbase@123' recovery_target_timeline = 'latest' EOF chown kingbase:kingbase /kingbase/fgdata/recovery.conf # 启动备库
su – kingbase -c “sys_ctl start -D /kingbase/fgdata”
waiting for server to start…. done
4.3 流复制验证
验证流复制:,from DB视频:www.itpux.com
# 主库查看复制状态
su – kingbase -c “psql -d fgedudb -c ‘SELECT * FROM pg_stat_replication;'”
pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state
—–+———-+———+——————+————-+—————–+————-+—————+————–+——-+———-+———–+———–+————+———–+———–+————+—————+————
1234 | 16384 | replica | walreceiver | 192.168.1.2 | | 54321 | 2024-01-01 12:00:00 | | streaming | 0/123456 | 0/123456 | 0/123456 | 0/123456 | | | | 0 | async
# 备库查看复制状态
su – kingbase -c “psql -d fgedudb -c ‘SELECT pg_is_in_recovery();'”
pg_is_in_recovery
——————-
t
su – kingbase -c “psql -d fgedudb -c ‘SELECT * FROM pg_stat_replication;'”
pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state
—–+———-+———+——————+————-+—————–+————-+—————+————–+——-+———-+———–+———–+————+———–+———–+————+—————+————
1234 | 16384 | replica | walreceiver | 192.168.1.2 | | 54321 | 2024-01-01 12:00:00 | | streaming | 0/123456 | 0/123456 | 0/123456 | 0/123456 | | | | 0 | async
# 备库查看复制状态
su – kingbase -c “psql -d fgedudb -c ‘SELECT pg_is_in_recovery();'”
pg_is_in_recovery
——————-
t
Part05-风哥经验总结与分享
5.1 流复制最佳实践
- 确保主备库网络连接稳定
- 定期监控复制状态
- 测试故障切换流程
- 配置合适的复制类型(同步/异步)
- 定期备份备库
5.2 常见问题与解决方案
- 复制延迟:优化网络性能,调整复制参数
- 复制中断:检查网络连接,重启备库
- 权限问题:确保复制用户权限正确
- 配置错误:检查recovery.conf配置
- 风哥提示:流复制是实现高可用的重要技术,需要正确配置和监控
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
