clickhouse 冷备份
采用rysnc的工作模式为:不同机器的操作利用远程机器 rsync 程序 拷贝本地内容到远程机器
# 针对该模式的命令样例
rsync -av /data/clickhouse user@remoteip::clickhouse
# 实际操作中rsync客户端命令如下
rsync --port=10000 --bwlimit=10240 --progress -avz --password-file=/etc/rsync.pass /mnt/disks/2/data/ rsyncuser@10.176.6.24::clickhouse
1 配置rsync服务端(gcp新开备份机器上-192.168.1.10)、普通用户 ci-user 启动rsync
1.1 创建与 rsync 程序有关的目录
[ci-user@clickhouse-backup-test01 ~]$ mkdir -p /home/ci-user/rsyncd/{log,run,etc}
1.2 配置 /etc/rsyncd.conf 文件
[ci-user@clickhouse-backup-test01 ~]$ cat >> /etc/rsyncd.conf <<eof
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# [ftp]
# path = /home/ftp
# comment = ftp export area
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /home/ci-user/rsyncd/log/rsyncd.log
pid file = /home/ci-user/rsyncd/run/rsyncd.pid
lock file = /home/ci-user/rsyncd/run/rsyncd.lock
reverse lookup = yes
port = 10000 # default 873 root start
[clickhouse]
path = /data01/dev8-ck-backup/data
comment = clickhouse-backup
read only = false
auth users = rsyncuser
secrets file = /home/ci-user/rsyncd/etc/rsync.pass
eof
1.3 创建 /home/ci-user/rsyncd/etc/rsync.pass
文件,并修改权限为 600
[ci-user@clickhouse-backup-test01 ~]$ echo "rsyncuser:clickhouse" >/home/ci-user/rsyncd/etc/rsync.pass
[ci-user@clickhouse-backup-test01 ~]$ chmod 600 /home/ci-user/rsyncd/etc/rsync.pass
1.4 修改 path 的路径的所属主和所属组为普通用户 ci-user
chown -R ci-user:ci-user /data01/dev8-ck-backup/data
1.5 启动 rsync 程序,默认读取 /etc/rsyncd.conf 文件
rsync --daemon
1.6 查看端口 10000 是否出于监听状态
netstat -lntp |grep 10000
2 rsync 客户端(clickhouse数据库机器-192.168.1.11)
2.1 查看要备份到远程的目录所属的组 input ,把ck数据库机器执行命令的普通用户加入该组
[calico@dev88 2]$ id calico
[calico@dev88 2]$ gpasswd -a calico input # 该操作只会把该用户多添加到另一个组内,并不会把该用户从之前所在组内移除
[calico@dev88 2]$ id calico
2.2 创建 /etc/rsync.pass, 把 rsync 服务端设置的密码写进去
[calico@dev88 2]$ echo clickhouse > /etc/rsync.pass
2.3 启动 rsync 客户端命令,开始远程同步
rsync --port=10000 --bwlimit=10240 --progress -avz --password-file=/etc/rsync.pass /mnt/disks/2/data/ rsyncuser@192.168.1.10::clickhouse
# /mnt/disks/2/data/ 这个路径data后面的 / 很重要,没有这个 / 会把 data 目录也拷贝过去,如果有了 /, 只会把data目录下的文件和目录拷贝过去
2.4 定时任务执行
00 */2 * * * rsync --port=10000 --bwlimit=10240 --progress --delete -avz --password-file=/etc/rsync.pass /mnt/disks/2/data/ rsyncuser@192.168.1.10::clickhouse >/home/yuatang/shutang/rsync.out 2>&1
# 标准输出 1 和 标准错误输出 都输出到文件/home/yuatang/shutang/rsync.out