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) |
GaussDB数据dump实现完全同步的更多相关文章
- 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步
原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...
- Atitit.Gui控件and面板----db数据库区----- .数据库比较同步工具 vOa
Atitit.Gui控件and面板----db数据库区----- .数据库比较同步工具 vOa 1. 咨微海信数据库应用 工具 1 2. 数据库比较工具 StarInix SQL Compare ...
- 真正的原生JS数据双向绑定(实时同步)
真正的原生JS数据双向绑定(实时同步) 接触过vue之后我感觉数据双向绑定实在是太好用了,然后就想着到底是什么原理,今天在简书上看到了一位老师的文章 js实现数据双向绑定 然后写出了我自己的代码 wi ...
- 转:SQL Server - 使用 Merge 语句实现表数据之间的对比同步
表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等.包括在 SSIS Package 中也可以通过 Lookup ...
- SQL Server - 使用 Merge 语句实现表数据之间的对比同步
表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等.包括在 SSIS Package 中也可以通过 Lookup ...
- Oracle通过PLSQL进行数据表之间的同步
昨天被要求拉取第三方oracle中的一个表数据,起初以为要导出表数据,然后再自己库中建个相同的表,然后导入数据,查过资料之后oracle可以通过dblink的方式同步表数据. 1.首先利用PLSQL工 ...
- ArcGIS API for JavaScript 4.2学习笔记[9] 同一种视图不同数据(Map)同步
本例子核心:对MapView对象的map属性值进行替换即可达到更改地图数据的效果. 这个例子用的不是Map对象了,而是用的发布在服务器上的专题地图(WebMap)来加载到MapView上进行显示. 在 ...
- goldengate 12.3 实现mysql数据及DDL实时同步
以下环境在mysql 5.7上完成. set mysql_home=mysql安装路径 set path=%mysql_home%\bin;%path% 首先要准备mysql的启动,可参考:http: ...
- java多线程处理导入数据拆分List集合 同步处理插入数据
原文:https://www.2cto.com/kf/201612/581174.html import org.apache.log4j.Logger; import org.apache.poi. ...
随机推荐
- 软件包管理:RPM包管理-yum在线管理
CentOS 是免费的的 RedHat需要付费 1.IP地址配置 setup #使用setup工具 (这种方式配置的永久有效 同时还可以配置掩码 网关等) 直接输入setup就会弹出(注意的是该命令 ...
- P1057 数零壹
P1057 数零壹 转跳点:
- c#查看本机网络端口和对应的程序名
360安全卫士里面有个组件叫流量防火墙,感觉挺好用,但是不想安装360全家桶,于是自己捣鼓着用C#写一个比较简化的版本. 查看电脑上开启的TCP或UDP端口,可以用netstat命令,netstat用 ...
- springboot#interceptor
_ 拦截器相对与过滤器Filter 而言,拦截器是spring中的概念.过滤器是servlet中的概念.在spring中肯定是优先使用拦截器Interceptor的. public class My1 ...
- Springboot跨域 ajax jsonp请求
SpringBoot配置: <dependency> <groupId>org.springframework.boot</groupId> <artifac ...
- 七十一、SAP中内表的修改,改一行数据,或一行的某个字段
一.SAP中内表的修改,只能通过工作区来修改,代码如下 二.效果如下
- oracle11g导出dmp文件时不能导出空表,导致缺表
一.执行 select 'analyze table '||table_name||' compute statistics;' from user_tables; 将该查询语句查询到的结果粘贴到sq ...
- java开发 中台
中台就是接入层啊,一般有中台的都是比较大的项目,后台会分为很多模块,比如订单模块,比如会员模块,接入层需要做的就是对数据的封装,权限的过滤,以及各种安全什么的, 前台需要什么数据,接入层去对应的后台微 ...
- Python 异常处理(Try...Except)
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...
- .NET via C#笔记17——委托
一.委托的内部实现 C#中的委托是一种类型安全的回调函数,假设有这样一个委托: internal delegate void Feedback(int value); 编译器会生成一个类: inter ...