MysqL 的异步复制概述
发布时间:2023-09-07 12:30:00 所属栏目:MySql教程 来源:
导读:MysqL 复制属于水平扩展架构,是构建大规模高性能应用的基础。在 MysqL 中,有两种常用的搭建复制的方式:异步复制和增强半同步复制,本小节主要介绍 MysqL 的异步复制。
1. 复制概述
复制解决的问题,是让一台数
1. 复制概述
复制解决的问题,是让一台数
MysqL 复制属于水平扩展架构,是构建大规模高性能应用的基础。在 MysqL 中,有两种常用的搭建复制的方式:异步复制和增强半同步复制,本小节主要介绍 MysqL 的异步复制。 1. 复制概述 复制解决的问题,是让一台数据库的数据与其他数据库保持同步。复制的原理是将主库的 DML 和 DDL操作通过 binlog 日志传到从库,然后在从库上重放这些日志,从而使主库和从库保持数据同步。 MysqL复制的优点: 实现高可用架构,避免单点故障; 可以在从库执行查询,分担主库的查询压力; 可以在从库执行备份,降低主库受到的影响。 2. 异步复制 MysqL 的复制默认是异步复制,主从异步复制是 MysqL 很常见的复制场景,搭建步骤也相对简单。下面从实战的角度一步步搭建异步复制环境。 2.1 基本环境 Master Slave MysqL版本 MysqL-5.7.31-x86_64 MysqL-5.7.31-x86_64 IP 192.168.0.1 192.168.0.2 port 3306 3306 2.2 主库配置 修改 my.cnf 文件: gtid-mode = on enforce-gtid-consistency = binlog_format = row server-id = log-bin = /MysqL/log/MysqL-bin binlog_cache_size = 1M 创建复制用账号: create user 'repl'@'.' identified by ''; grant replication slave on *.* to 'repl'@'.'; 2.3 从库配置 修改 my.cnf 文件: gtid-mode = on enforce-gtid-consistency = binlog_format = row server-id = log-bin = /MysqL/log/MysqL-bin binlog_cache_size = 1M skip_slave_start = 导出导入: --主库导出 MysqLdump -uroot -p --single-transaction --master-data=2 --databases test123 > test_200908.sql --从库导入 MysqL -uroot -p < test_200908.sql --调整复制起点 change master to master_host='192.168.0.1', master_port=, master_user='repl', master_password='123456', master_auto_position=; --开始复制 start slave; --查看复制 show slave status\G; 2.4 环境校验 --主库,创建表t1并插入数据 use test123; create table t1(id int); insert into t1 values(); select * from t1; --从库,检查t1表是否存在 use test123; select * from t1; 扩展问题 如果主库导出时出现如下警告信息: MysqLdump -uroot -p --single-transaction --master-data=2 --databases test123 > test_200908.sql Enter password: Warning: A partial dump from server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events. 当MysqL为GTID模式时,用MysqLdump导出默认会带上当前已执行的GTID 如果是从库的GTID_EXECUTED为空值,即从库无任何事务操作,则无需理会; 如果是从库的GTID_EXECUTED为非空,两种解决方案。 在主库 MysqLdump 导出时,加上参数 --set-gtid-purged=OFF,适合场景为导出部分数据; 在从库 MysqLdump 导入前,执行 reset master,适合场景为搭建新从库。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |