MySQL主从复制

https://blog.51cto.com/u_16175461/11903860

1. 配置主服务器

修改配置文件my.cnf

[mysqld]
server-id=1 # 设置 id,这个可以是任意数字 log-bin=/mydata/log/master-bin # 启动 binlog 日志,名字必须是 log-bin sync_binlog=1 # 确保主从复制的事务安全

配置完成后重启数据库

sudo service mysql restart  # 重启 MySQL 服务

2. 创建复制用户
连接到主服务器,并创建一个用于复制的用户账号:

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';  -- 创建复制用户
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';  -- 授权复制权限
FLUSH PRIVILEGES;  -- 刷新权限

确保从服务器能够使用该用户连接到主服务器。

3. 配置从服务器

修改配置文件my.cnf

server-id=2                          # 这个 id 随便给,但不要和 master 的一样
relay-log=/mydata/log/slave-relay    # 这里是 relay-log 了,名字必须是 relay-log,备份的名字也就 slave-relay
sync_binlog=1
read-only=ON                         # 开启只读模式,确保主备数据一致

保存并重启 MySQL 服务:

sudo service mysql restart  # 重启 MySQL 服务

4. 启动复制

SHOW MASTER STATUS;  -- 查看主服务器的二进制日志位置

假设输出显示如下:

+---------------------+----------+--------------+------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| mysql-bin.000001    | 154      |              |                  |
+---------------------+----------+--------------+------------------+

在从服务器上执行以下命令以启动复制:

CHANGE MASTER TO
    MASTER_HOST='主服务器IP',       -- 替换为主服务器的 IP 地址
    MASTER_USER='replica_user',     -- 上面创建的复制用户
    MASTER_PASSWORD='password',      -- 复制用户密码
    MASTER_LOG_FILE='mysql-bin.000001', -- 二进制日志文件名
    MASTER_LOG_POS=154;              -- 日志位置
START SLAVE;                        -- 启动复制

上述命令告诉从服务器从哪个主服务器及其位置开始复制数据。

5. 检查复制状态
确保复制工作正常,连接到从服务器并执行:

SHOW SLAVE STATUS\G;  -- 显示从服务器的复制状态

检查 Slave_IO_RunningSlave_SQL_Running 是否为 Yes,表示复制正常。

通过监控状态,可以及时了解到复制是否正常工作。

6. 配置复制模式

异步复制:默认模式,数据写入主服务器后不等待从服务器确认。

半同步复制:

配置主服务器:

SET GLOBAL rpl_semi_sync_master_enabled=1;  -- 启用半同步复制

配置从服务器:

SET GLOBAL rpl_semi_sync_slave_enabled=1;  -- 启用半同步复制

全同步复制:需要使用外部工具实现(如 Galera Cluster),复杂度较高,通常不鼓励初学者使用。

总结
通过以上步骤,你已经成功配置了 MySQL 的主从复制功能。这有助于提高数据库的可用性和性能。请注意,随着数据量的增加,你可能需要考虑更复杂的复制架构和优化措施。同时,也要定期备份数据,确保数据安全。继续学习和实验,将有助于你成为一名优秀的数据库管理员!

 

posted @ 2024-11-04 20:45  斯世轻尘  阅读(8)  评论(0编辑  收藏  举报