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. ...
随机推荐
- CentOS 6.5(x86_32)下安装Oracle 10g R2
一.硬件要求 1.内存 & swap Minimum: 1 GB of RAMRecommended: 2 GB of RAM or more 检查内存情况 # grep MemTotal / ...
- [百度之星]资格赛:IP聚合
保持着也不知道什么情怀,觉得到现在才能发出来.这道题做完之后看了其他人的代码,然后再看我的,不得不说,真是幼稚的很,尤其是输入这一块,都什么跟什么啊. 但相较于之前来说,不像以前慌张了,学会先思考再去 ...
- C++面试常见问题——02动态分配内存
动态分配内存 C++动态内存 C++程序中内存分为两个部分 堆:程序中未使用的内存,在程序运行时可用于动态分配内存. 栈:函数内部申明的所有变量都将占用栈内存. 很多时候不知道一个程序到底需要多少内存 ...
- 重采样Resample 的一些研究记录。
最近项目有需要重采样算法,先找了一下,主流的就是几个开源算法,Speex / Opus / ffmpeg / sox 1.最早的事Speex,算法源自CCRMA(Center for Computer ...
- 3-Java逻辑控制语句
目录 Java选择结构 Java循环结构 return.break.continue Math.random()的使用和条件运算符 1.Java选择结构 1.1.if(布尔表达式)单选结构 - 当布尔 ...
- flink笔记(三) flink架构及运行方式
架构图 Job Managers, Task Managers, Clients JobManager(Master) 用于协调分布式执行.它们用来调度task,协调检查点,协调失败时恢复等. Fli ...
- (20)sopel算法
基础知识的理论,主要看这个博客:https://blog.csdn.net/github_38140310/article/details/68959931 然后代码展示: #include &quo ...
- Hbase PleaseHoldException错误
PleaseHoldException ① 原因:(由于正在操作Hbase时,电脑突然关机,未正常关闭hbase,故导致shell无法正常显示)如下图: ②解决过程: 先在网上百度到了使用https: ...
- 编程入门-Eclipse基本使用
编程入门-Eclipse基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设置Eclipse的基本参数 1>.修改Eclipse默认的文件编码为"utf- ...
- 2016蓝桥杯省赛C/C++A组第九题 密码脱落
题意: X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串). 由于年代久远,其中 ...