首页主机资讯Ubuntu MariaDB主从复制配置教程

Ubuntu MariaDB主从复制配置教程

时间2025-12-22 23:40:04发布访客分类主机资讯浏览497
导读:Ubuntu MariaDB 主从复制配置教程 一 环境准备与网络要求 准备两台 Ubuntu 服务器(建议 22.04 LTS),分别作为 Master 与 Slave,安装 MariaDB(版本尽量一致,例如都为 10.6.x 或 1...

Ubuntu MariaDB 主从复制配置教程

一 环境准备与网络要求

  • 准备两台 Ubuntu 服务器(建议 22.04 LTS),分别作为 MasterSlave,安装 MariaDB(版本尽量一致,例如都为 10.6.x10.11.x)。
  • 确保网络互通,开放 TCP 3306 端口(系统防火墙如 ufw/firewalld 与云安全组均需放行)。
  • 建议 NTP 时间同步,避免复制延迟或 GTID 判断异常。
  • 如 Master 已有业务数据,需先完成一次一致性备份并在导入 Slave 后再开启复制。

二 主库 Master 配置

  • 安装与初始化
    • 安装:sudo apt update & & sudo apt install mariadb-server
    • 安全加固:sudo mysql_secure_installation(设置 root 密码、移除匿名用户等)
  • 修改配置文件(常见路径:/etc/mysql/mariadb.conf.d/50-server.cnf/etc/mysql/my.cnf
    • [mysqld] 段添加或修改:
      server-id = 1
      log_bin = /var/log/mysql/mysql-bin.log
      # 可选:仅同步指定库
      # binlog_do_db = your_database_name
      bind-address = 0.0.0.0
      
    • 重启:sudo systemctl restart mariadb
  • 创建复制专用账号并授权
    • 登录 MariaDB:mysql -u root -p
    • 执行:
      CREATE USER 'replicator'@'%' IDENTIFIED BY 'YourStrongPass!';
          
      GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
          
      FLUSH PRIVILEGES;
          
      
  • 获取二进制日志位点(用于从库接入)
    • 在锁定业务写的前提下获取位点(维护窗口执行):
      FLUSH TABLES WITH READ LOCK;
          
      SHOW MASTER STATUS;
          
      
    • 记录输出中的 FilePosition(如:mysql-bin.000001、488),随后执行:
      UNLOCK TABLES;
          
      
    • 如需迁移存量数据,可在锁表期间使用 mysqldump 全量导出并在从库恢复,再继续后续复制配置。

三 从库 Slave 配置

  • 安装与初始化
    • 安装:sudo apt update & & sudo apt install mariadb-server
    • 安全加固:sudo mysql_secure_installation
  • 修改配置文件(常见路径:/etc/mysql/mariadb.conf.d/50-server.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
      bind-address = 0.0.0.0
      
    • 重启:sudo systemctl restart mariadb
  • 配置复制链路并启动
    • 登录 MariaDB:mysql -u root -p
    • 使用 Master 上记录的位点执行(请替换为实际值):
      CHANGE MASTER TO
        MASTER_HOST='master_ip',
        MASTER_USER='replicator',
        MASTER_PASSWORD='YourStrongPass!',
        MASTER_LOG_FILE='mysql-bin.000001',
        MASTER_LOG_POS=488;
          
      
      START SLAVE;
          
      
  • 检查复制状态
    • 执行:SHOW SLAVE STATUS\G
    • 关键字段需满足:Slave_IO_Running: YesSlave_SQL_Running: Yes,且 Seconds_Behind_Master 接近 0

四 验证与常见问题

  • 功能验证
    • 在 Master 创建库表或插入数据,在 Slave 上确认是否一致出现,例如:
      -- Master
      CREATE DATABASE IF NOT EXISTS test_repl;
          
      USE test_repl;
          
      CREATE TABLE t(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
          
      INSERT INTO t(name) VALUES ('alice'), ('bob');
          
      
      -- Slave
      SELECT * FROM test_repl.t;
          
      
  • 常见问题排查
    • 无法连接主库:检查 bind-address、系统防火墙与云安全组是否放行 3306,以及复制账号主机白名单是否正确。
    • Slave_IO_Running=No:核对 MASTER_HOST/USER/PASSWORD、网络连通性、以及 MASTER_LOG_FILE/POS 是否与 Master 当前位点一致(必要时在 Master 重新执行 SHOW MASTER STATUSSTOP SLAVE; CHANGE MASTER TO ...; START SLAVE; )。
    • 复制延迟或中断:关注 Seconds_Behind_Master、主库负载、从库 I/O 与 SQL 线程错误日志;必要时调整从库参数或优化长事务。

五 进阶与扩展

  • 仅同步指定库表:在主库使用 binlog_do_db,在从库使用 replicate_do_db/replicate_wild_do_table 精确控制;跨库操作较多时建议谨慎使用库级白名单。
  • 读写分离实践:应用层或中间件将 指向 Master, 分摊到多个 Slave;从库建议设置为 read_only=1 防止误写。
  • 高可用扩展:基于主从可进一步构建 MHAOrchestrator、或结合 Keepalived/VRRP 实现故障切换与虚拟 IP 漂移,提升业务连续性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu MariaDB主从复制配置教程
本文地址: https://pptw.com/jishu/777927.html
Ubuntu MariaDB网络配置与优化 Ubuntu MariaDB索引优化策略

游客 回复需填写必要信息