首页主机资讯Ubuntu MySQL复制功能如何设置

Ubuntu MySQL复制功能如何设置

时间2026-01-22 02:33:03发布访客分类主机资讯浏览1162
导读:Ubuntu 上搭建 MySQL 主从复制 一 环境准备与安装 准备两台 Ubuntu 服务器,分别作为 Master 与 Slave,安装相同版本的 MySQL(如 5.7/8.0),并确保网络互通(建议内网通信)。 安装命令: su...

Ubuntu 上搭建 MySQL 主从复制

一 环境准备与安装

  • 准备两台 Ubuntu 服务器,分别作为 MasterSlave,安装相同版本的 MySQL(如 5.7/8.0),并确保网络互通(建议内网通信)。
  • 安装命令:
    • sudo apt update
    • sudo apt install mysql-server
  • 启动并验证服务:
    • sudo systemctl status mysql
  • 建议:主从服务器时间同步(如 NTP),防火墙放行 3306 端口(或仅内网网段)。

二 主库 Master 配置

  • 编辑配置文件(常见路径:/etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/my.cnf),在 [mysqld] 段添加:
    • server-id = 1
    • log_bin = /var/log/mysql/mysql-bin.log
    • binlog_format = ROW
    • sync_binlog = 1
    • expire_logs_days = 7
    • 可选:bind-address = 主库内网IP(仅监听内网更安全)
  • 重启使配置生效:
    • sudo systemctl restart mysql
  • 创建复制专用账号并授权:
    • mysql -u root -p
    • CREATE USER ‘replicator’@‘从库IP或%’ IDENTIFIED BY ‘强密码’;
    • GRANT REPLICATION SLAVE ON . TO ‘replicator’@‘从库IP或%’;
    • FLUSH PRIVILEGES;
  • 获取复制起点(在锁定数据前执行,避免位点变化):
    • FLUSH TABLES WITH READ LOCK;
    • SHOW MASTER STATUS; 记录 FilePosition(如:mysql-bin.000001、123)
  • 备份数据(两种常用方式,二选一):
    • 逻辑备份:mysqldump -u root -p --all-databases --master-data > backup.sql
    • 物理备份:停机后拷贝数据目录(停机时间可控时可选)
  • 解锁表:
    • UNLOCK TABLES;
  • 将备份文件安全传至从库(如 scp)。

三 从库 Slave 配置

  • 编辑配置文件,在 [mysqld] 段添加:
    • server-id = 2(必须唯一)
    • relay_log = /var/log/mysql/mysql-relay-bin.log
    • 可选:log_bin = /var/log/mysql/mysql-bin.log(若从库后续可能提升为主库)
    • read_only = 1(防止业务误写,复制线程不受限)
  • 重启使配置生效:
    • sudo systemctl restart mysql
  • 导入主库备份:
    • mysql -u root -p < /tmp/backup.sql
  • 配置连接主库并启动复制:
    • mysql -u root -p
    • STOP SLAVE;
    • CHANGE MASTER TO
      • MASTER_HOST=‘主库IP’,
      • MASTER_USER=‘replicator’,
      • MASTER_PASSWORD=‘强密码’,
      • MASTER_LOG_FILE=‘上一步记录的File’,
      • MASTER_LOG_POS=上一步记录的Position;
    • START SLAVE;
  • 验证复制状态:
    • SHOW SLAVE STATUS\G
    • 确认 Slave_IO_Running: YesSlave_SQL_Running: Yes

四 验证与常见排错

  • 验证:在主库创建库表或插入数据,几秒内应在从库可见;也可再次执行 SHOW SLAVE STATUS\G 观察 Seconds_Behind_Master 是否收敛。
  • 常见错误与处理:
    • 位点不匹配或文件不存在:重新核对 MASTER_LOG_FILE/POS,必要时用最新备份重建从库。
    • 复制中断(如唯一键冲突):根据错误定位业务或数据问题,处理后执行 START SLAVE; 或 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 谨慎使用。
    • 主从延迟:检查网络带宽/延迟、从库负载、参数(如 sync_binlog、innodb_flush_log_at_trx_commit)、大事务拆分。
    • 连接失败:核对账号权限、从库 IP 白名单、防火墙与 bind-address 设置。
    • 只读无效:确认从库全局 read_only=1,且应用不以具备 SUPER 权限的账号直连写入。

五 进阶与安全加固

  • 主主复制(双向):两台服务器互为主从,注意自增主键冲突,可配置:
    • auto_increment_increment = 2
    • auto_increment_offset = 1/2(分别配置在不同节点)
  • 半同步复制(提高一致性):安装 semisync 插件并启用 rpl_semi_sync_master/wait_for_slave_count 等参数。
  • SSL/TLS 加密复制:在 CHANGE MASTER TO 中加入
    • MASTER_SSL=1,
    • MASTER_SSL_CA=‘/path/ca.pem’,
    • MASTER_SSL_CERT=‘/path/client-cert.pem’,
    • MASTER_SSL_KEY=‘/path/client-key.pem’。
  • 监控与告警:定期巡检 SHOW SLAVE STATUS\G,关注 Last_Error、Last_IO_Error、Last_SQL_Error、Seconds_Behind_Master,结合脚本或监控平台告警。

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


若转载请注明出处: Ubuntu MySQL复制功能如何设置
本文地址: https://pptw.com/jishu/789422.html
如何在Ubuntu中管理MySQL用户 如何设置Debian Node.js日志备份策略

游客 回复需填写必要信息