ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MySQL 5.7主从同步功能

MySQL 5.7主从同步功能 目录一、环境准备二、主库配置1. 修改配置文件2. 创建复制用户3. 查看主库状态三、从库配置1. 修改配置文件2. 配置主从同步四、验证同步状态1. 查看从库状态2. 测试数据同步五、MySQL主从同步与Canal、Otter在功能上的区别六、创建mysql用户并赋权样例解析第一条语句创建用户第二条语句授予数据库权限第三条语句授予全局复制权限综合总结以下是一个完整的MySQL 5.7主从同步实例包含环境准备、配置步骤及验证过程一、环境准备主库MasterIP192.168.1.100操作系统CentOS 7MySQL版本5.7.44从库SlaveIP192.168.1.101操作系统CentOS 7MySQL版本5.7.44二、主库配置1. 修改配置文件编辑/etc/my.cnf添加以下内容[mysqld] server-id1 # 主库唯一ID log-binmysql-bin # 开启二进制日志 binlog_formatROW # 推荐使用ROW格式 binlog-do-dbtest # 仅同步test库可选 expire_logs_days7 # 日志保留7天重启MySQLsystemctl restart mysqld2. 创建复制用户登录MySQL执行CREATE USER repl192.168.1.101 IDENTIFIED BY Repl123456; GRANT REPLICATION SLAVE ON *.* TO repl192.168.1.101; FLUSH PRIVILEGES;3. 查看主库状态执行SHOW MASTER STATUS;**记录输出中的File和Position**如mysql-bin.000001、154后续从库配置需使用。三、从库配置1. 修改配置文件编辑/etc/my.cnf添加以下内容[mysqld] server-id2 # 从库唯一ID不能与主库重复 relay-logmysql-relay-bin # 开启中继日志 read_only1 # 从库只读生产环境建议开启重启MySQLsystemctl restart mysqld2. 配置主从同步登录从库MySQL执行CHANGE MASTER TO MASTER_HOST192.168.1.100, MASTER_USERrepl, MASTER_PASSWORDRepl123456, MASTER_LOG_FILEmysql-bin.000001, # 主库记录的File MASTER_LOG_POS154; # 主库记录的Position START SLAVE; # 启动同步四、验证同步状态1. 查看从库状态在从库执行SHOW SLAVE STATUS\G关键字段说明Slave_IO_RunningYes表示从库正在拉取主库日志。Slave_SQL_RunningYes表示从库正在执行日志中的SQL。Seconds_Behind_Master0表示无延迟若为NULL需检查网络或权限。2. 测试数据同步在主库插入数据USE test; INSERT INTO users (name, age) VALUES (Alice, 25), (Bob, 30);在从库查询数据USE test; SELECT * FROM users; # 应看到与主库一致的数据五、MySQL主从同步与Canal、Otter在功能上的区别MySQL主从复制通过binlog是MySQL数据库内置的功能通过复制binlog日志来实现数据的同步。支持异步、半同步和全同步复制。主要用于数据备份、读写分离、高可用性等场景。Canal是阿里巴巴开源的基于MySQL binlog的增量日志订阅和消费组件。模拟MySQL slave的交互协议伪装自己为MySQL slave向MySQL master发送dump协议获取binlog解析并存储。常用于将MySQL的数据变更同步到其他数据存储如Elasticsearch、Redis、HBase等或用于缓存更新、消息通知等。Otter也是阿里巴巴开源的分布式数据库同步系统基于Canal。提供分布式、可靠、低延迟的数据同步解决方案支持双向同步、冲突检测和解冲突等。主要用于跨机房、跨地域的数据同步支持多源、多目标、双向同步等复杂场景。六、创建mysql用户并赋权样例解析mysql CREATE USER maxwell% IDENTIFIED BY 123456; mysql GRANT ALL ON maxwell.* TO maxwell%; mysql GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO maxwell%;这些SQL语句的总体目的是创建一个名为 maxwell 的数据库用户并授予其特定的权限通常是为了让这个用户能够作为MySQL的数据同步工具如Maxwell、Canal等连接并捕获数据库的变更。第一条语句创建用户mysql CREATE USER maxwell% IDENTIFIED BY 123456;含义解释CREATE USER: 这是创建一个新用户的命令。maxwell%: 这是指定用户名和允许其连接的主机。maxwell: 是新创建的用户名。: 是分隔符。%: 是一个通配符代表任意主机。这意味着用户maxwell可以从任何IP地址或任何一台机器上连接到这个MySQL服务器。这在开发和测试环境中很方便但在生产环境中存在安全风险通常会限制为特定的IP地址例如maxwell192.168.1.100。IDENTIFIED BY 123456: 这部分设置了用户的登录密码。用户maxwell的密码被设置为123456。一句话总结创建一个名为maxwell的用户密码是123456并允许他从任何地方连接到MySQL服务器。第二条语句授予数据库权限mysql GRANT ALL ON maxwell.* TO maxwell%;含义解释GRANT: 这是授予权限的命令。ALL: 这是一个权限的简写代表所有权限如SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER等。ON maxwell.*: 这指定了权限应用的范围。maxwell: 是数据库名。.*: 是一个通配符代表该数据库中的所有表。所以maxwell.*的意思是在maxwell这个数据库里的所有表上。TO maxwell%: 指明将权限授予哪个用户。这里就是授予我们刚刚创建的maxwell用户。一句话总结授予用户maxwell对名为maxwell的数据库及其所有表拥有完全的增删改查和管理权限。这通常是为了让maxwell工具能自己创建和操作它所需要的状态表、配置表等。第三条语句授予全局复制权限mysql GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO maxwell%;含义解释GRANT: 授予权限的命令。SELECT, REPLICATION CLIENT, REPLICATION SLAVE: 这是授予的三个核心权限每个都非常重要SELECT: 允许用户从任何表中读取数据。对于数据同步工具来说这是为了能读取表的元数据如表结构和初始数据。REPLICATION CLIENT: 允许用户查询主服务器的二进制日志binlog文件和位置信息。执行SHOW MASTER STATUS;命令就需要这个权限。这是数据同步工具找到从哪里开始读取变更的关键。REPLICATION SLAVE: 允许用户连接到主服务器并请求其binlog数据流。这是实现数据实时同步的核心权限。没有这个权限工具就无法接收到数据库的增量变更。ON *.*: 这指定了权限应用的范围。第一个*代表所有数据库。第二个*代表所有表。所以*.*的意思是在整个MySQL服务器实例的所有数据库和所有表上。这使得这些权限成为全局权限。TO maxwell%: 再次指明将这些权限授予用户maxwell。一句话总结授予用户maxwell在整个MySQL服务器范围内的全局权限使其能够读取任何数据、查询复制状态以及作为“从库”一样拉取主库的二进制日志数据。综合总结这三条SQL语句组合在一起完整地完成了为数据同步工具如Maxwell准备专用账户的工作创建账户先建立一个叫maxwell的登录凭证。配置工作空间给这个账户一个专属的数据库maxwell让它在里面可以自由地读写和管理自己的配置信息而不会干扰其他业务数据库。授予核心能力最后授予它读取整个MySQL实例变更数据binlog的核心能力这是实现实时数据同步的根本。因此执行完这些命令后maxwell这个用户就具备了连接MySQL、监控并捕获所有数据库变更所需的最小但必要权限集合。
返回列表