MySQL主从复制实现
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,主从复制原理1.该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志。在事件写入二进制日志完成后,maste
千家信息网最后更新 2025年01月23日MySQL主从复制实现
主从复制原理
1.该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志。在事件写入二进制日志完成后,master通知存储引擎提交事务。
2.slave将master的Binary Log拷贝到它自己的Relay Log。首先,slave开始一个工作线程--I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。binlog dump process从master的二进制日志中读取事件,如果已经同步了master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入Relay Log。
3.SQL slave thread(SQL从线程)处理该过程的最后一步。SQL Thread从Relay Log中读取事件,并重放其中的事件,从而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,Relay Log通常会位于OS的缓存中,所以Relay Log的开销很小。
实现步骤
环境
防火墙和selinux都关闭
master | slave | |
---|---|---|
IP | 192.168.7.71 | 192.168.7.72 |
主机名 | master01 | slave01 |
OS | CentOS7 | CentOS7 |
MySQL版本 | 5.7.28 | 5.7.28 |
1.安装
略
2.master配置
2.1将以下内容添加到my.cnf文件中,然后重新启动数据库。
# vim /etc/my.cnf[mysqld]log-bin = mysql-binserver-id = 1# 重启服务systemctl start mysqld
2.2 创建授权复制账号
grant replication slave on *.* to repluser@'192.168.7.%' identified by '123.com';
2.3 查看二进制日志文件名和position信息
mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 | 154 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
3.slave配置
3.1 将以下内容添加到my.cnf文件中,然后重新启动数据库。
[mysqld]server-id = 2read_only = ON #设为只读,但是对超级用户无效。
3.2 执行以下命令,指定连接主服务的信息。
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.7.71', -> MASTER_USER='repluser', -> MASTER_PASSWORD='123.com', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=154;
注:一定要确保MASTER_LOG_FILE与文件匹配,并且MASTER_LOG_POS与先前的SHOW MASTER STATUS返回的位置匹配。
3.3 启动slave
mysql> start slave;
3.4 查看I/O线程和SQL线程状态,如果为Yes表示与主服务器同步成功。
mysql> show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.7.71 Master_User: repluser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 154 Relay_Log_File: slave01-relay-bin.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes...省略信息...
3.5 和复制功能相关的文件
master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系
线程
日志
二进制
事件
数据
文件
信息
服务
事务
一致
内容
数据库
服务器
账号
过程
同步
更新
配置
主从
普通
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何写软件开发市场情况分析预测
互动百科网络技术股份
mdb数据库同步工具
长沙风信子网络技术有限公司
阳泉商场触控拍照软件开发公司
数据库分区可以在建库时做吗
与服务器登录时间不符
中信银行软件开发中心社招
网络安全在哪
三年级网络安全观后感500字
数据库查询学分为5分的课
操作应用数据库
平谷区好的软件开发调试
数据库中级工程师笔试题
物流app软件开发答辩
数据库上的安全软件
信息网络安全技术应用
spoon 数据库查询
上海品质软件开发诚信服务
两套软件挂载在同一个服务器
网络安全管理专业前景
服务器如何查看服务是否正常
数据库课程设计答辩问题
长沙风信子网络技术有限公司
皇室战争比赛服务器
红外技术是短程无线网络技术吗
垦利区软件开发培训
服务器开机为什么声音大
开源网络安全周
上海品质软件开发诚信服务