Ubuntu MySQL复制功能如何设置
导读:Ubuntu 上搭建 MySQL 主从复制 一 环境准备与安装 准备两台 Ubuntu 服务器,分别作为 Master 与 Slave,安装相同版本的 MySQL(如 5.7/8.0),并确保网络互通(建议内网通信)。 安装命令: su...
Ubuntu 上搭建 MySQL 主从复制
一 环境准备与安装
- 准备两台 Ubuntu 服务器,分别作为 Master 与 Slave,安装相同版本的 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; 记录 File 与 Position(如: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: Yes 且 Slave_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
