• 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)

  • 相关阅读:
    TypeScript Handbook 2——接口1(翻译)
    TypeScript Handbook 1——基本类型(翻译)
    [转]AJAX 跨源 HTTP 请求
    [转] Delphi Socket Architecture
    handsontable的一种js继承方式
    test11
    test
    javascript代码风格
    maven创建web项目
    Oracle 11g R2 for Win10(64位)的安装注意点
  • 原文地址:https://www.cnblogs.com/albertarmstrong/p/10234257.html
Copyright © 2020-2023  润新知