From 85c17a66c827a954183959af1da654ee3317ca20 Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Thu, 2 Jun 2022 00:44:43 +0800 Subject: [PATCH] chains --- .../slave_master.md" | 2 +- .../multimaster.md" | 4 +- .../addslave.md" | 9 ++-- .../config.json" | 4 +- .../ms2chains.json" | 7 +++ .../ms2chains.md" | 52 +++++++++++++++++++ .../chains2ms.json" | 7 +++ .../chains2ms.md" | 46 ++++++++++++++++ .../config.json" | 9 +++- data/tree.json | 7 ++- 10 files changed, 134 insertions(+), 13 deletions(-) create mode 100644 "data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.json" create mode 100644 "data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.md" create mode 100644 "data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.json" create mode 100644 "data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.md" diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/1.\344\270\273\344\273\216\345\244\215\345\210\266/slave_master.md" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/1.\344\270\273\344\273\216\345\244\215\345\210\266/slave_master.md" index 8769e75..a7ceba9 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/1.\344\270\273\344\273\216\345\244\215\345\210\266/slave_master.md" +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/1.\344\270\273\344\273\216\345\244\215\345\210\266/slave_master.md" @@ -7,7 +7,7 @@ Joe 要给交易库建立一个从库,实现主从复制。假设主库的服 2. 重启主库 3. 修改从库配置(my.cnf),设定server_id以及binlog和relay-bin相关的信息 4. 重启从库 -5. 在主库上建立来自从库的复制账号 +5. 在主库上建立用于从库连接的复制账号,授予复制权限 `GRANT REPLICATION SLAVE ON *.* TO 'user'@'standby';` 6. 在主库上执行 `FLUSH TABLES WITH READ LOCK;` 锁定 7. 在主库执行 `SHOW MASTER STATUS;` ,记录 binlog 文件及 Position 信息 8. 备份主库,生成备份文件, diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/2.\345\244\232\344\270\273\345\244\215\345\210\266/multimaster.md" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/2.\345\244\232\344\270\273\345\244\215\345\210\266/multimaster.md" index e9adfba..8fbaff3 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/2.\345\244\232\344\270\273\345\244\215\345\210\266/multimaster.md" +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/2.\345\244\232\344\270\273\345\244\215\345\210\266/multimaster.md" @@ -1,4 +1,4 @@ -# 主从复制 +# 多主复制架构 在上一节(主从复制)里,Joe实现了一个点对点的主从复制架构,现在, Joe 要给交易库和用户库建立一个公用的从库,实现多主复制。假设主库 @@ -14,7 +14,7 @@ MySQL 服务器。 2. 重启主库 3. 修改从库配置(my.cnf),设定server_id以及binlog和relay-bin相关的信息 4. 重启从库 -5. 分别在主库服务器上建立来自从库的复制账号 +5. 分别在主库服务器上建立来自从库的复制账号,授予复制权限 `GRANT REPLICATION SLAVE ON *.* TO 'user'@'standby';` 6. 在主库上执行 `FLUSH TABLES WITH READ LOCK;` 锁定 7. 在主库执行 `SHOW MASTER STATUS;` ,记录 binlog 文件及 Position 信息 8. 备份主库,生成备份文件, diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/3.\346\267\273\345\212\240\344\273\216\345\272\223/addslave.md" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/3.\346\267\273\345\212\240\344\273\216\345\272\223/addslave.md" index 2905e0f..8bd3fd4 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/3.\346\267\273\345\212\240\344\273\216\345\272\223/addslave.md" +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/3.\346\267\273\345\212\240\344\273\216\345\272\223/addslave.md" @@ -1,15 +1,13 @@ -# 主从复制 +# 添加从库 在`主从复制`一节里,Joe实现了一个点对点的主从复制架构,现在, Joe 要添加一个名为 backup 的新的从库,他应该怎么做? -我们假设现在是全新的环境,Trade、Auth 和 Standby 都是独立存在的 -MySQL 服务器。 - +简单起见,我们假设现在 trade 和 standby 已经配置为主从架构。 ## 答案 -1. 在主库上建立来自从库backup的复制账号 +1. 在主库上建立来自从库backup的复制账号,授予复制权限 `GRANT REPLICATION SLAVE ON *.* TO 'user'@'backup';` 2. 修改从库配置(my.cnf),设定server_id以及binlog和relay-bin相关的信息 3. 重启从库 5. 在主库上执行 `FLUSH TABLES WITH READ LOCK;` 锁定 @@ -19,7 +17,6 @@ MySQL 服务器。 9. 在从库backup上用该备份恢复 10. 登录backup,配置主服务器的地址、端口、登录信息和binlog启动位置。 11. 在 backup 执行 `START slave;` 启动复制线程。 -12. 重启从库 ## 选项 diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/config.json" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/config.json" index 2d74bc0..d902447 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/config.json" +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/config.json" @@ -2,7 +2,9 @@ "node_id": "mysql-88333dcb84a946a78bfd9f413c6e795b", "keywords": [], "children": [], - "export": [], + "export": [ + "ms2chains.json" + ], "keywords_must": [], "keywords_forbid": [], "group": 0 diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.json" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.json" new file mode 100644 index 0000000..54cacdd --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "ccat", + "source": "ms2chains.md", + "notebook_enable": false, + "exercise_id": "9256f94d78444492bd05a9aaef5e0701" +} \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.md" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.md" new file mode 100644 index 0000000..4e34a0c --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/4.\344\273\216\344\270\273\344\273\216\345\244\215\345\210\266\345\210\260\351\223\276\345\274\217\345\244\215\345\210\266/ms2chains.md" @@ -0,0 +1,52 @@ +# 从主从复制到链式复制 + +在`添加从库`一节里,Joe实现了一个一对多的主从结构。standby 和 backup 都是trade 的从库。 +现在,Joe 需要将 backup 修改为 standby 的从节点,实现链式复制。 + +他应该如何操作? + +## 答案 + +1. 在 standby 和 backup 上分别执行 `STOP SLAVE`,停止复制 +2. 在 standby 和 backup 上分别执行 `SHOW SLAVE STATUS;`,查看 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` 是否一致 +3. 如果状态一致,进入第 5 步。 +4. 如果不一致,在 pos 靠前的服务上执行 `START SLAVE UNTIL MASTER_LOG_FILE='$file', Master_Log_Pos=$pos;`, + 将变更同步到与另一台服务器一致。这里的 `$file` 和 `$pos` 即状态较新的那台服务器的状态值。 +5. 在 standby 上创建用于 backup 连接的复制账号,授予复制权限 `GRANT REPLICATION SLAVE ON *.* TO 'user'@'backup';` +6. 在 standby 执行 `SHOW MASTER STATUS;` 获得其 binlog 文件和 position 值。 +7. 在 standby 执行 `START SLAVE`,启动复制过程。 +8. 在 backup 服务器执行 `STOP SLAVE;` ,停止复制 +9. 在 backup 设定 standby 服务器的地址、端口、登录信息和binlog启动位置,作为主库信息。 +10. 在 backup 执行 `START slave;` 启动复制线程。 + +## 选项 + +### A + +1. 在 standby 和 backup 上分别执行 `STOP SLAVE`,停止复制 +2. 在 standby 和 backup 上分别执行 `SHOW SLAVE STATUS;`,查看 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` 是否一致 +3. 如果状态一致,进入第 5 步。 +4. 如果不一致,在 pos 靠前的服务上执行 `START SLAVE UNTIL MASTER_LOG_FILE='$file', Master_Log_Pos=$pos;`, + 将变更同步到与另一台服务器一致。这里的 `$file` 和 `$pos` 即状态较新的那台服务器的状态值。 +5. 在 standby 上创建用于 backup 连接的复制账号 +6. 备份 standby 。 +7. 在 standby 执行 `START SLAVE`,启动复制过程。 +8. 在 backup 服务器执行 `STOP SLAVE;` ,停止复制 +9. 用standby 的备份文件恢复 backup。 +10. 在 backup 执行 `START slave;` 启动复制线程。 + +### B + +1. 在 standby 和 backup 上分别执行 `STOP SLAVE`,停止复制 +2. 在 standby 和 backup 上分别执行 `SHOW SLAVE STATUS;`,查看 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` 是否一致 +3. 在 standby 上创建用于 backup 连接的复制账号 +4. 在 standby 执行 `SHOW MASTER STATUS;` 获得其 binlog 文件和 position 值。 +5. 在 standby 执行 `START SLAVE`,启动复制过程。 +6. 在 backup 服务器执行 `STOP SLAVE;` ,停止复制 +7. 在 backup 设定 standby 服务器的地址、端口、登录信息和binlog启动位置,作为主库信息。 +8. 在 backup 执行 `START slave;` 启动复制线程。 + + +### C + +所有选项都不对。 \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.json" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.json" new file mode 100644 index 0000000..b61a338 --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "ccat", + "source": "chains2ms.md", + "notebook_enable": false, + "exercise_id": "b1aecdfdd82e4fac8657fe833aac4f49" +} \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.md" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.md" new file mode 100644 index 0000000..e4c91b0 --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/chains2ms.md" @@ -0,0 +1,46 @@ +# 从链式复制到主从复制 + +Joe实现了一个链式复制架构,standby 是 trade 的从库,backup 是 standby 的从库。 +现在,Joe 需要将 backup 修改为 trade 的从节点,实现一对多的主从复制。 + +他应该如何操作? + +## 答案 + +1. 在 trade 服务器上建立用于 backup 访问的复制账户,授予复制权限 `GRANT REPLICATION SLAVE ON *.* TO 'user'@'bakcup';` +2. 在 standby 服务器上执行 `STOP SLAVE;`,停止复制 +3. 在 standby 服务器执行 `SHOW MASTER STATUS;`,记录 binlog 文件和 position。 +4. 在 backup 上执行 `SHOW SLAVE STATUS;`,确认复制进度与 standby 同步 +5. 在 standby 上执行 `SHOW SLAVE STATUS` ,查看来自 trade 的同步进度,记录 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` +6. 在 backup 上执行 `STOP SLAVE;` 停止复制,重新设置复制设定,将主服务器相关配置指向 trade +7. 在 standby 上执行 `START SLAVE;` 启动同步 +8. 在 backup 上执行 `START SLAVE;` 启动同步 + +## 选项 + +### A + +1. 在 standby 服务器上执行 `STOP SLAVE;`,停止复制 +2. 在 standby 服务器执行 `SHOW MASTER STATUS;`,记录 binlog 文件和 position。 +3. 在 backup 上执行 `SHOW SLAVE STATUS;`,确认复制进度与 standby 同步 +4. 在 standby 上执行 `SHOW SLAVE STATUS` ,查看来自 trade 的同步进度,记录 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` +5. 在 backup 上执行 `STOP SLAVE;` 停止复制,重新设置复制设定,将主服务器相关配置指向 trade +6. 在 standby 上执行 `START SLAVE;` 启动同步 +7. 在 backup 上执行 `START SLAVE;` 启动同步 + +### B + +1. 在 trade 服务器上建立用于 backup 访问的复制账户,授予复制权限 `GRANT REPLICATION SLAVE ON *.* TO 'user'@'bakcup';` +2. 在 standby 服务器上执行 `STOP SLAVE;`,停止复制 +3. 在 standby 服务器执行 `SHOW MASTER STATUS;`,记录 binlog 文件和 position。 +4. 在 backup 上执行 `SHOW SLAVE STATUS;`,确认复制进度与 standby 同步 +5. 在 standby 上执行 `SHOW SLAVE STATUS` ,查看来自 trade 的同步进度,记录 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` +6. 在 backup 上执行 `STOP SLAVE;` 停止复制,重新设置复制设定,将主服务器相关配置指向 trade +7. 在 standby 上执行 `START SLAVE;` 启动同步 +8. 在 backup 上执行 `START SLAVE;` 启动同步 +9. 在 trade 上执行 `START MASTER;` 启动同步 + + +### C + +所有选项都不对。 \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/config.json" "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/config.json" index 80f7f73..1d0ad56 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/config.json" +++ "b/data/3.MySQL\351\253\230\351\230\266/6.\350\277\220\347\273\264\344\270\216\346\236\266\346\236\204/5.\344\273\216\351\223\276\345\274\217\345\244\215\345\210\266\345\210\260\344\270\273\344\273\216\345\244\215\345\210\266/config.json" @@ -1,8 +1,13 @@ { "node_id": "mysql-2f6f847907d4415788e98d2f70f64d3c", - "keywords": ["链式复制", "主从复制"], + "keywords": [ + "链式复制", + "主从复制" + ], "children": [], - "export": [], + "export": [ + "chains2ms.json" + ], "keywords_must": [], "keywords_forbid": [], "group": 0 diff --git a/data/tree.json b/data/tree.json index 3993bf3..2255285 100644 --- a/data/tree.json +++ b/data/tree.json @@ -2361,7 +2361,12 @@ { "添加从库": { "node_id": "mysql-1c778aa1adfd43d4ac9da32df9e44238", - "keywords": [], + "keywords": [ + "slave", + "master", + "standby", + "add slave" + ], "children": [], "keywords_must": [], "keywords_forbid": [], -- GitLab