首页主机资讯Ubuntu MySQL复制如何配置

Ubuntu MySQL复制如何配置

时间2025-11-27 00:49:04发布访客分类主机资讯浏览1245
导读:Ubuntu 上配置 MySQL 主从复制 一 准备与规划 准备两台 Ubuntu 服务器,分别安装 MySQL 5.7/8.0,确保网络互通(建议内网),并规划用途:主库(写)、从库(读/备)。 规划复制账号与权限:在主库创建仅用于复制...

Ubuntu 上配置 MySQL 主从复制

一 准备与规划

  • 准备两台 Ubuntu 服务器,分别安装 MySQL 5.7/8.0,确保网络互通(建议内网),并规划用途:主库(写)、从库(读/备)。
  • 规划复制账号与权限:在主库创建仅用于复制的账号,授予 REPLICATION SLAVE 权限。
  • 规划唯一 server-id(每台不同),主库开启 二进制日志 binlog,从库建议开启 中继日志 relay_log 并设置 read_only=1
  • 建议主从时间同步(如 NTP),并尽量保持主从 MySQL 版本兼容

二 主库 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
    • 可选:binlog_do_db/ignore_db 指定库(不推荐过度使用,易遗漏 DDL)
  • 重启生效:sudo systemctl restart mysql
  • 创建复制用户并授权:
    • 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 / 123)
    • 备份数据(两种常用方式,二选一或结合):
      • 逻辑备份:mysqldump -u root -p --all-databases --master-data > backup.sql
      • 物理/热备:使用 Percona XtraBackup 等工具以减少停机
    • 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(应用端应避免使用 SUPER 账号直连写入)
  • 重启生效:sudo systemctl restart mysql
  • 导入主库备份:mysql -u root -p < backup.sql
  • 配置复制起点并启动:
    • STOP SLAVE;
    • CHANGE MASTER TO
      • MASTER_HOST=‘master_ip’,
      • MASTER_USER=‘replicator’,
      • MASTER_PASSWORD=‘YourStrongPass!’,
      • MASTER_LOG_FILE=‘mysql-bin.000001’,
      • MASTER_LOG_POS=123;
    • START SLAVE;
  • 检查复制状态:SHOW SLAVE STATUS\G,确保 Slave_IO_Running=YesSlave_SQL_Running=Yes

四 验证与常见问题

  • 验证:在主库执行建表/插入,在从库 SELECT 验证是否一致;持续观察复制延迟(Seconds_Behind_Master)。
  • 常见问题与处理:
    • IO/SQL 线程异常:查看从库错误日志(/var/log/mysql/error.log),常见为账号权限、网络、起点不一致或主库 binlog 被清理。
    • 复制过滤配置不当:避免仅用 binlog_do_db 导致跨库 DDL 未复制,生产更推荐全库复制 + 应用层/中间件控制读写。
    • 主库 binlog 过期:设置 expire_logs_days 合理保留,或基于备份策略管理。
    • 版本兼容:主从版本差异过大可能导致复制异常,尽量保持版本一致或按官方兼容矩阵升级。
    • 高可用思路:一主多从、读写分离、定期校验(如 pt-table-checksum)与延迟监控。

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


若转载请注明出处: Ubuntu MySQL复制如何配置
本文地址: https://pptw.com/jishu/757319.html
ubuntu环境变量命名规范 Ubuntu MySQL插件如何使用

游客 回复需填写必要信息