专栏首页技术知识分享Linux 数据同步方案和操作命令
原创

Linux 数据同步方案和操作命令

同步方案根据应用场景大约有两种,定时同步和实时同步。定时同步具有同步时间固定、实时性差、消耗资源较小的特点;实时同步具有实时性强、同步密集、较耗资源等特点。

一、定时同步

1、安装软件:

yum install rsync -y

2、免密登录(也可使用明文采用模拟交互式登录方式,但是从安全角度出发还是建议使用免密登录):

ssh-keygen -t rsa

生成后可以进入目录cd ~/.ssh/ 把生成的密钥~/.ssh/id_rsa.pub内容复制到远程主机的/root/.ssh/authorized_keys中

在这里很多同学对以上的操作为什么就不用输入密码的问题感到好奇,了解免密登录的同学可以跳过这段介绍。这里介绍下免密登录的原理:

rsa又称非对称密钥算法,对应的是对称密钥算法。

所谓对称密钥算法就是A和B通信,为了双方能确认对方的身份,A和B约定一个双方都知道的密钥k来确定身份如下:

A => (mk) B A发送m明文和K密钥跟B,B确认K密钥和之前A约定的一样,就能确定A的身份是真实的。反之B到A的通信也是如此。

非对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

所以以上的操作把A服务器的公钥共享跟了B服务器(远程主机),所以A服务器登录B服务器就不再需要传统的交互式输入密码登录,B服务器能通过A服务器的公钥而确认A服务器的真实性(私钥)。

[root@localhost ~]# cd ~/.ssh/
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub  known_hosts

3、编写shell脚本

[root@localhost ~]# vim back.sh
#!/bin/sh
rsync -avz -e 'ssh -p 22' root@x.x.x.x:/XXX/pub /data/

注意:rsync的数据同步分为拉和推两种不同的动作,在编写脚本之前,一定要测试命令是否能正常执行。

4、crontab定时执行配置(每天3点执行脚本)

到此,定时同步就配置好了。

二、实时同步

Inotify简介

Inotify 是一个 Linux特性,从版本2.6.13开始提供,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。

开始配置Inotify

注:在开始之前需要在服务器A和B上都安装好rsync。

1、在服务器B上调整inotify内核参数,vim /etc/sysctl.conf

fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

2、使调整inotify内核参数立刻生效

sysctl -p

3、安装Inotify-Tool工具

# 先安装扩展包源,否则inotify-tools找不到
yum install epel-release
yum install inotify-tools 

4、打开两个终端,一个终端执行创建删除等操作,另一个执行Inotify-Tool工具,测试Inotify-Tool工具时候正常

inotifywait -mrq -e modify,create,move,delete /var/www/

inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果

5、编写脚本

vim /root/tongbu.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /root/cs"
RSYNC_CMD="rsync -avz -e 'ssh -p 22'  /root/cs/  root@x.x.x.x:/root/cs/ "
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done

注:这里要特别注意,逻辑关系不要搞混了,是B服务器推送跟A服务器。

6、添加开机自动后台自动运行,编辑/etc/profile文件,在最后一行加入下面语句

/bin/bash /root/tongbu.sh &

到此定时同步和实时同步都讲解完毕。根据不同的场景应用不同的方案,需要灵活应对,特别要注意一点的是。实时同步的方案,监控目录千万不能设置成日志目录,不然服务器cpu飙升很有可能会宕机。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux script 命令记录(数据库)操作步骤

        对DBA而言,经常碰到升级数据库或是apply patch,以及有些时候需要运行大量的脚本。对于这些操作我们希望现在在屏幕同时又输出的文件以备后续查询过...

    Leshami
  • 在两台MySQL数据库间实现同步操作命令

    做开发的时候要做MySQL的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,MySQL的版本是4...

    用户4988085
  • linux 远程数据同步工具 命令:rsync

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同...

    用户7639835
  • 数据库管理和维护常用操作和命令

    select file#, bytes, name from v$datafile where name like '%tbs_f2%';

    SQLplusDB
  • Linux服务器数据定期同步和备份方式

    数据安全是做数据分析的人需要关注的一大问题。对于我们分析的关键数据、使用的关键脚本都需要定期备份。 scp 最简单的备份方式,就是使用cp (本地硬盘)或scp...

    生信宝典
  • MySQL数据库,详解MySQL命令行工具和操作

    MySQL是一个简单的SQL外壳(有GNU readline功能)。它支持交互式和非交互式使用。当交互使用时,查询结果采用ASCII表格式。当采用非交互式(例如...

    用户1289394
  • 一种简单无副作用的同源跨页面数据同步方案

    提起这个方案,还要从某个风和日丽的早晨说起。那日小编正忙着手上的各种需求,突然后端的亲火急火燎的找到小编,说是有一个重要的用户,在使用 Word 在线编辑文档功...

    政采云前端团队
  • Android如何通过命令行操作Sqlite3数据库的方法

    1、首先,找到 Android SDK 在本机中的位置,如果不知道,可以通过在 Android Studio 找到,如下:

    砸漏
  • linux操作系统下从命令提示窗口中选择MySQL数据库

    在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。

    用户7639835
  • linux操作系统下从命令提示窗口中选择MySQL数据库

    在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。

    用户4988085
  • linux(十三)之磁盘分区、创建文件系统、挂载

    前面学习了linux的用户管理 ,感觉是不是linux的多用户多任务的系统感觉十分了解了,但是其实并不然的。你还需要了解更多。接下来给大家分享的是 在vmwar...

    用户1195962
  • 大数据开发工程师基本功修炼之史上最全Linux学习笔记(建议收藏)

    Linux是大数据中的基础,无论是运维或开发,都免不了要学,而且学的越扎实越好,下面为大家带来Linux学习笔记

    ChinaManor
  • 大数据技术学习路线

    加米谷大数据
  • 快速入门 Linux 云服务器

    准备与选型注册腾讯云账号新用户需在腾讯云官网进行【注册】。注册指引可参考 如何注册腾讯云 。确定云服务器所在地域及可用区地域选择原则:靠近用户原则。

    云优惠
  • 重启和关闭 Linux 系统的 6 个终端命令

    在 Linux 管理员的日程当中,有很多需要执行的任务,其中就有系统的重启和关闭。

    拓荒者
  • 大数据学习之_01_Linux学习_01_linux的入门+VM和linux的安装+linux的目录结构+远程登录到linux服务器+vi和vim编辑器+开机、重启和用户登录注销+用户管理+用户组管理

    2、Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上。

    黑泽君
  • 2019精炼的大数据技术学习路线

    近年来大数据BigData、人工智能AI、物联网Iot等行业发展迅猛,很多人都想要从事大数据技术开发工作,但是,请问要怎么做,路线是什么?从哪里开始学?学哪些?...

    用户2292346
  • 优秀学员的学习方法展示

    诚然,不同环境下成长的大家吸收新知识的习惯和能力千差万别,但总有一些人的经验非常值得借鉴!同样的指点我发出去了31份,能坚持一个月的寥寥无几,甚至能坚持5天的也...

    生信技能树
  • 干货 | Oracle数据库操作命令大全,满满的案例供你理解,收藏!

    Oracle是美国ORACLE公司研发的一款关系型数据库,主要特点有:速度快、安全性强、可跨平台,主要版本有:Oracle9i、Oracle10g、Oracle...

    网络技术联盟站

扫码关注云+社区

领取腾讯云代金券