GaussDB数据dump实现完全同步

问题背景:搭建服务后端容灾集群,服务正常时容灾DB需要从业务DB完全同步数据,服务异常时,容灾DB停止抽取数据,自动从探针采集业务数据。

解决方案:常用的有两种思路,一是从服务后端定时每天拉取业务DB数据,并批量写入插入到容灾DB;二是从数据库节点开发定时脚本,dump数据并同步import到容灾DB,这里dump方案适合用于完全同步,简单粗暴,但特别有效

单表同步步骤:

  log INFO "${TIME_STAMP}: START SYNC table ${TABLE}."

  dropTable ${TABLE}

  dumpTable ${TABLE}

  importTable ${TABLE}

  log INFO "${TIME_STAMP}: END SYNC table ${TABLE}."

drop表

gsql -U ${DBUSER} -W ${DBPASSWD} -h ${REMOTE_HOSTNAME} -p ${REMOTE_PORT} -c "drop table if exists ${TABLE_NAME}"

dump表

gs_dump ${DBNAME} -t ${TABLE_NAME} -f ${DUMP_NAME}.sql -U ${DBUSER} -W ${DBPASSWD} -h ${LOCAL_HOSTBAME} -p ${LOCAL_PORT}

import表

gsql -U ${DBUSER} -W ${DBPASSWD} -h ${REMOTE_HOSTNAME} -p ${REMOTE_PORT} < ${DUMP_NAME}.sql

配置crontab定时任务

30 10 * * * dbadmin /bin/sh /opt/dbadmin/cronDump/cronSync.sh

观察定时执行情况,没有日志,查看crond进程正常

service crond status

查看cron日志

(dbadmin) PAM ERROR (Authentication token expired)

(dbadmin) FAILED to authorize user with PAM (Authentication token expired)

在网上搜索,提示是用户dbadmin PAM过期,重置用户密码后,定时执行正常。

调试cron定时任务过程中,还出现 环境变量无法识别,导致数据库dump命令不识别,查看环境变量文件,指定gaussdb 相关库路径:

 

增加环境变量:

source /home/dbadmin/.bashrc

最后,同步数据日志

 

补充 环境变量文件

文件名称

环境变量

生效时间

/etc/profile

系统为每个用户单独设定

用户第一次登录

/etc/bashrc

每个运行bash shell的用户

Shell打开

~/.bash_profile

系统为用户设定shell信息,交互式 login方式进入bash

用户登录时,执行一次

~/.bashrc

系统为用户设定shell信息,交互式 non_login方式进入

用户登录或打开新shell

~/.bash_logout

系统为用户设定shell信息

退出系统(shell)

转载于:https://www.cnblogs.com/albertarmstrong/p/10234257.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值