在Linux系统上配置数据同步有多种方法,下面我将介绍几种常用的同步方案及其配置步骤。
rsync是最常用的Linux文件同步工具,支持增量同步和远程同步。
# 安装rsync
sudo apt-get install rsync # Debian/Ubuntu
sudo yum install rsync # CentOS/RHEL
# 本地同步
rsync -avz /source/directory/ /destination/directory/
# 远程同步(推送到远程)
rsync -avz -e ssh /local/path/ user@remotehost:/remote/path/
# 远程同步(从远程拉取)
rsync -avz -e ssh user@remotehost:/remote/path/ /local/path/
-a
: 归档模式,保留权限、时间戳等-v
: 详细输出-z
: 压缩传输--delete
: 删除目标中源不存在的文件--exclude
: 排除特定文件/目录# 编辑crontab
crontab -e
# 添加每天凌晨3点同步的条目
0 3 * * * /usr/bin/rsync -avz /source/ user@remote:/destination/
lsyncd使用inotify机制监控文件系统变化并实时同步。
# 安装lsyncd
sudo apt-get install lsyncd # Debian/Ubuntu
sudo yum install lsyncd # CentOS/RHEL
# 配置文件示例(/etc/lsyncd.conf)
settings {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd-status.log",
statusInterval = 20
}
sync {
default.rsync,
source = "/source/path",
target = "user@remotehost:/target/path",
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
}
}
# 启动服务
sudo systemctl start lsyncd
sudo systemctl enable lsyncd
DRBD(Distributed Replicated Block Device)提供块设备级别的实时同步。
# 安装DRBD
sudo apt-get install drbd-utils # Debian/Ubuntu
sudo yum install drbd kmod-drbd # CentOS/RHEL
# 配置示例(/etc/drbd.d/drbd0.res)
resource drbd0 {
protocol C;
disk {
on-io-error detach;
}
on node1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.1:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.2:7788;
meta-disk internal;
}
}
# 初始化资源
sudo drbdadm create-md drbd0
sudo drbdadm up drbd0
# 在主节点上设置为primary
sudo drbdadm primary --force drbd0
# 安装rclone
curl https://rclone.org/install.sh | sudo bash
# 配置云存储
rclone config
# 同步到云存储
rclone sync /local/path remote:path
-- 主服务器配置(my.cnf)
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = db_name
-- 创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- 从服务器配置
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 107;
START SLAVE;
选择哪种同步方案取决于您的具体需求: - 文件级同步:rsync或lsyncd - 块设备级同步:DRBD - 实时性要求高:lsyncd或DRBD - 云存储集成:rclone - 数据库同步:原生复制功能
需要更详细的特定方案配置或有其他问题,请随时询问。