大数跨境
0
0

ubuntu部署mysql主从复制

ubuntu部署mysql主从复制 SRE云原生
2025-12-01
1

环境配置
mysql主库
ip:10.132.47.61
mysql从库
ip:10.132.47.62


主库的核心作用是
记录二进制日志(binlog),并为从库提供日志同步的账号和权限。
1. 编辑主库配置文件(my.cnf 或 my.ini

找到主库的配置文件(通常在 /etc/mysql/my.cnf 或 /etc/my.cnf),添加以下内容:

[mysqld]# 启用二进制日志(主从复制的核心,记录所有数据变更操作)log-bin = mysql-bin# 主库的唯一标识(1-2^32-1 之间的整数,从库需不同)server-id = 1# 可选:指定需要同步的数据库(若不指定则同步所有数据库)# binlog-do-db = 你的数据库名# 可选:指定忽略同步的数据库# binlog-ignore-db = mysql
2. 重启主库服务

使配置生效:

systemctl restart mysqld  # CentOS/RHEL# 或systemctl restart mysql   # Ubuntu/Debian
3. 主库创建复制专用账号
-- 登录主库的 MySQL 命令行(mysql -u root -p)CREATE USER 'repl'@'10.132.47.62' IDENTIFIED BY 'shyshy521521';
-- 从库IP为10.132.47.62
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.132.47.62';FLUSH PRIVILEGES;
#如果有问题#删除原有账号DROP USER IF EXISTS 'repl'@'10.132.47.62';#重新创建 repl 账号CREATE USER 'repl'@'10.132.47.62' IDENTIFIED WITH mysql_native_password BY 'shyshy521521';
#重新授予复制权限GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.132.47.62';
FLUSH PRIVILEGES;  -- 刷新权限使配置生效
4. 查看主库二进制日志状态

登录主库的 MySQL 命令行(主库 IP 是 10.132.47.61):在主库服务器上执行:

mysql -u root -p

执行命令查询主库 binlog 状态:在 MySQL 命令行中执行:

SHOW MASTER STATUS;

记录结果中的 File 和 Position 值:执行后会返回类似如下的表格(示例):

File
Position
Binlog_Do_DB
Binlog_Ignore_DB
mysql-bin.000001
157


  • File 列的值(如 mysql-bin.000001)就是 MASTER_LOG_FILE 需要填写的内容。
  • Position 列的值(如 157)就是 MASTER_LOG_POS 需要填写的内容。

从库需要通过该账号读取主库的 binlog,建议创建专用账号而非用 root,增强安全性

二、从库(10.132.47.62)配置

从库的核心作用是读取主库 binlog 并回放操作,实现数据同步。

1. 编辑从库配置文件(my.cnf 或 my.ini

添加以下内容:

[mysqld]# 从库的唯一标识(必须与主库不同)server-id = 2# 可选:启用中继日志(从库暂存主库binlog的日志,若仅做备份可不用,但建议启用)relay-log = mysql-relay-bin# 可选:中继日志索引文件relay-log-index = mysql-relay-bin.index
2. 重启从库服务

使配置生效:

systemctl restart mysqld  # CentOS/RHEL# 或systemctl restart mysql   # Ubuntu/Debian
3. 配置从库连接主库的参数

登录从库的 MySQL 命令行(mysql -u root -p),执行以下命令,将 <主库binlog文件> 和 <主库binlog位置> 替换为步骤 3.4 中记录的 File 和 Position

CHANGE MASTER TO  MASTER_HOST = '10.132.47.61',       -- 主库IP  MASTER_USER = 'repl',              -- 复制账号  MASTER_PASSWORD = 'shyshy521521',  -- 复制账号密码  MASTER_LOG_FILE = 'mysql-bin.000001',  -- 主库binlog文件名  MASTER_LOG_POS = 157;              -- 主库binlog位置


4. 启动从库的复制进程
START SLAVE;
5. 验证从库状态

执行以下命令,确认 Slave_IO_Running 和 Slave_SQL_Running 均为 Yes

SHOW SLAVE STATUS\G;

三、主从复制验证

在主库创建一个测试数据库 / 表并插入数据,验证从库是否同步:

主库操作:

CREATE DATABASE test_repl;USE test_repl;CREATE TABLE test_table (id INT, name VARCHAR(20));INSERT INTO test_table VALUES (1'test');


从库验证:

USE test_repl;SELECT * FROM test_table;-- 若能查询到 id=1, name='test',说明主从复制配置成功


关键概念解释
  • 二进制日志(binlog):主库记录所有数据变更操作的日志文件,是主从复制的 “数据源”。
  • 中继日志(relay log):从库暂存主库 binlog 的日志文件,从库通过回放中继日志实现数据同步。
  • server-id:主从库的唯一标识,用于区分集群中的不同节点,必须全局唯一。
  • Replication Slave 权限:从库账号需具备该权限才能读取主库 binlog。

【声明】内容源于网络
0
0
SRE云原生
专注于分享运维、Devops、网络安全以及SRE云原生相关知识,内容包括但不限于自动化运维、云架构、云监控、云安全、AI、AWS以及攻防渗透等。内容多以原创为主,旨在于编写高质量文章。
内容 35
粉丝 0
SRE云原生 专注于分享运维、Devops、网络安全以及SRE云原生相关知识,内容包括但不限于自动化运维、云架构、云监控、云安全、AI、AWS以及攻防渗透等。内容多以原创为主,旨在于编写高质量文章。
总阅读22
粉丝0
内容35