centos

centos lnmp如何实现数据同步

小樊
40
2025-09-14 00:16:13
栏目: 智能运维

在CentOS上使用LNMP(Linux, Nginx, MySQL, PHP)堆栈时,实现数据同步通常涉及以下几个方面:

  1. 文件同步:确保Nginx的配置文件、网站文件等在多个服务器之间保持一致。
  2. 数据库同步:确保MySQL或MariaDB数据库在多个服务器之间保持一致。

以下是一些常见的方法来实现这些同步:

文件同步

使用rsync

rsync是一个非常强大的文件同步工具,可以在本地或远程服务器之间同步文件。

# 安装rsync
sudo yum install rsync

# 同步文件
rsync -avz /path/to/source/ user@remote_host:/path/to/destination/

你可以将这个命令添加到cron作业中,定期执行。

使用GlusterFS或Ceph

GlusterFS和Ceph是分布式文件系统,可以在多台服务器之间共享和同步文件。

# 安装GlusterFS
sudo yum install glusterfs-server glusterfs-fuse

# 启动GlusterFS服务
sudo systemctl start glusterd.service

# 创建卷
sudo gluster volume create myvol transport tcp server1:/gluster/brick1 server2:/gluster/brick2 force

# 启动卷
sudo gluster volume start myvol

数据库同步

主从复制

MySQL和MariaDB支持主从复制,可以实现读写分离和数据备份。

  1. 配置主服务器: 编辑/etc/my.cnf/etc/mysql/my.cnf文件,添加以下内容:

    [mysqld]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    binlog_do_db = your_database_name
    

    重启MySQL服务:

    sudo systemctl restart mysqld
    

    创建一个用于复制的用户:

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
    FLUSH PRIVILEGES;
    

    查看主服务器的状态:

    SHOW MASTER STATUS;
    

    记录FilePosition的值。

  2. 配置从服务器: 编辑/etc/my.cnf/etc/mysql/my.cnf文件,添加以下内容:

    [mysqld]
    server-id = 2
    relay_log = /var/log/mysql/mysql-relay-bin.log
    log_bin = /var/log/mysql/mysql-bin.log
    binlog_do_db = your_database_name
    read_only = 1
    

    重启MySQL服务:

    sudo systemctl restart mysqld
    

    配置从服务器连接到主服务器:

    CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='replicator',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=123;
    START SLAVE;
    

使用Galera Cluster

Galera Cluster是一个多主复制解决方案,可以实现实时数据同步。

  1. 安装Galera Cluster

    sudo yum install galera-4 galera-40 galera-api-40
    
  2. 配置MySQL: 编辑/etc/my.cnf/etc/mysql/my.cnf文件,添加以下内容:

    [mysqld]
    wsrep_provider=/usr/lib64/galera/libgalera_smm.so
    wsrep_cluster_address=gcomm://server1,server2,server3
    wsrep_node_address=server1
    wsrep_node_name=server1
    wsrep_sst_method=xtrabackup-v2
    

    重启MySQL服务:

    sudo systemctl restart mysqld
    

总结

根据你的具体需求和服务器架构,可以选择适合的同步方法。对于文件同步,rsync是一个简单有效的工具;对于数据库同步,主从复制和Galera Cluster都是不错的选择。确保在生产环境中进行充分的测试,以避免数据丢失或不一致。

0
看了该问题的人还看了