MySQL主从复制

主从复制原理

原理图

 

主从配置

1. 主:

1.1 修改配置文件:

编辑主服务器的MySQL配置文件 my.cnf(一般位于 /etc/mysql/my.cnf/etc/my.cnf),在 [mysqld] 部分添加或修改以下配置项:

[mysqld]
server-id = 1                  # 唯一标识主服务器,必须是正整数
log_bin = mysql-bin            # 启用二进制日志
binlog_do_db = cannian         # 指定需要复制的数据库

配置说明:

  • server-id:每个 MySQL 实例必须有唯一的 ID。

  • log_bin:启用二进制日志,主从复制依赖它。

  • binlog_do_db:限制只复制 cannian 数据库。

1.2 重启服务

systemctl restart mysqld       # 重启服务 

1.3 创建复制用户

CREATE USER 'repl'@'192.168.1.101' IDENTIFIED WITH 'mysql_native_password' BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101';
FLUSH PRIVILEGES;

配置说明:

  • 'repl'@'192.168.1.101':指定从服务器 IP。
  • your_password:替换为你的密码。
  • MySQL 8.0 默认使用 caching_sha2_password,但主从复制可能需要 mysql_native_password。

1.4 获取主机状态

SHOW MASTER STATUS;

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

记录 File(如 mysql-bin.000001)和 Position(如 154),后续从服务器需要用到。

2. 从

2.1 修改配置文件

[mysqld]
server-id = 2                  # 唯一标识从服务器,必须与主服务器不同
replicate-do-db = cannian      # 指定只复制 cannian 数据库

2.2 重启mysql

systemctl restart mysqld

2.3 配置主服务器链接

mysql -u root -p

CHANGE REPLICATION SOURCE TO
    SOURCE_HOST = '192.168.1.100',       # 主服务器 IP
    SOURCE_USER = 'repl',                # 复制用户
    SOURCE_PASSWORD = 'your_password',   # 复制用户密码
    SOURCE_LOG_FILE = 'mysql-bin.000001',# 主服务器二进制日志文件
    SOURCE_LOG_POS = 154;                # 主服务器日志位置

MySQL 8.0 使用 CHANGE REPLICATION SOURCE TO(旧版本为 CHANGE MASTER TO)

2.4 启动复制

START REPLICATION;

2.5 获取从机状态

SHOW REPLICATION STATUS\G

确认以下字段:

  • Source_Host:主服务器 IP。

  • Replication_Running:应为 Yes。

  • Last_Error:应为空(无错误)。

3. 测试

3.1 主机上操作

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

3.2 从机上验证

USE cannian;
SELECT * FROM test_table;
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇