MySQL 主从同步完整配置示例

以下是 MySQL 主从同步完整配置示例(基于 Linux 系统),包含主库和从库的配置步骤:


一、主库(Master)配置

1. 安装 MySQL(以 CentOS 为例)
yum install -y mysql-server
systemctl start mysqld
systemctl enable mysqld
2. 修改主库配置文件 /etc/my.cnf
[mysqld]
# 唯一 Server ID(主从需不同)
server-id=1
# 启用二进制日志(必须)
log-bin=mysql-bin
# 指定日志存储位置(可选)
binlog-dir=/var/lib/mysql
3. 重启 MySQL
systemctl restart mysqld
4. 创建复制用户并授权
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
5. 查看主库状态(记录 File 和 Position)
SHOW MASTER STATUS;

输出示例:

File: mysql-bin.000001
Position: 120

二、从库(Slave)配置

1. 安装 MySQL
yum install -y mysql-server
systemctl start mysqld
systemctl enable mysqld
2. 修改从库配置文件 /etc/my.cnf
[mysqld]
# 唯一 Server ID(与主库不同)
server-id=2
# 禁用二进制日志(可选)
skip-log-bin
# 设置为只读(推荐)
read-only=1
3. 重启 MySQL
systemctl restart mysqld
4. 导入主库数据(初次同步)

方法 1:通过物理拷贝数据(推荐快速初始化)

# 停止从库 MySQL
systemctl stop mysqld

# 删除原有数据目录(谨慎操作!)
rm -rf /var/lib/mysql/*

# 从主库复制数据(需主库执行 FLUSH TABLES WITH READ LOCK)
scp -r user@master:/var/lib/mysql /var/lib/

# 解锁主库
mysql -u root -p
UNLOCK TABLES;

# 启动从库 MySQL
systemctl start mysqld

方法 2:通过 SQL 导出导入

# 在主库执行
mysqldump -u root -p --all-databases --triggers --events > all_db.sql
scp all_db.sql user@slave:/root/

# 在从库执行
mysql -u root -p < /root/all_db.sql

三、配置从库复制

1. 连接主库并配置复制
CHANGE MASTER TO
    MASTER_HOST='主库IP',
    MASTER_USER='replica_user',
    MASTER_PASSWORD='your_password',
    MASTER_LOG_FILE='mysql-bin.000001',       -- 主库 SHOW MASTER STATUS 的 File
    MASTER_LOG_POS=120;                        -- 主库 SHOW MASTER STATUS 的 Position
2. 启动从库复制进程
START SLAVE;
3. 检查从库状态
SHOW SLAVE STATUS\G

关键字段应满足:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

四、测试验证

  1. 在主库创建测试表

    CREATE DATABASE test;
    USE test;
    CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(10));
    INSERT INTO t1 VALUES (1, 'master');
    
  2. 在从库查看同步结果

    USE test;
    SELECT * FROM t1;  # 应显示主库插入的数据
    

五、常见问题排查

  1. 主从网络不通:检查防火墙(firewall-cmdiptables)是否开放 3306 端口。
  2. 权限错误:确保从库使用 REPLICATION SLAVE 权限的用户连接主库。
  3. 数据不一致:重新导入数据或检查 master-logrelay-log

附:SELinux 配置(如启用)

# 临时关闭 SELinux(仅测试环境)
setenforce 0

# 永久关闭(修改 /etc/selinux/config)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

通过以上步骤,您可以完成完整的 MySQL 主从同步配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值