千家信息网

什么是MySQL主从复制

发表于:2024-10-03 作者:千家信息网编辑
千家信息网最后更新 2024年10月03日,这篇文章主要介绍"什么是MySQL主从复制",在日常操作中,相信很多人在什么是MySQL主从复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"什么是MySQL主从复制"
千家信息网最后更新 2024年10月03日什么是MySQL主从复制

这篇文章主要介绍"什么是MySQL主从复制",在日常操作中,相信很多人在什么是MySQL主从复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"什么是MySQL主从复制"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.主从复制简介及原理

主从复制(也称 AB 复制)是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器既可充当主机,也可充当从机。MySQL默认采用异步复制方式。

主从复制的过程及原理可以总结如下:

  1. master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中。

  2. slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件。

  3. 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致。

2.基于二进制文件位置配置主从复制

基于二进制文件位置的主从复制又可以称为传统复制,即从服务器依赖于主服务器的binlog文件位置,当主库发生数据变更时,binlog pos位点会增长,从库会感应到变化来完成同步。

配置主从复制,我们首先要准备至少两台MySQL实例,一台充当主服务器、一台充当从服务器。由于主从复制依赖于binlog,所以主库必须开启binlog,且主从要配置不同的server_id,下面具体展示下配置过程:

2.1 确认主从库配置参数

MySQL主从服务器建议有如下配置,可以先确认下,如果未配置,则需要修改配置文件然后重启。

# 主库参数配置 要有以下参数vim /etc/my.cnf [mysqld] log-bin = binlog  //启用二进制日志server-id = 137  //服务器唯一ID,默认值是1,一般设置为IP地址的最后一段数字binlog_format = row //bilog设置为row模式 防止复制出错# 从库建议配置以下参数vim /etc/my.cnf [mysqld] relay-log = relay-binserver-id = 138

2.2 确定主库二进制位置,创建同步账号

若主从库都是刚刚初始化完成,且主库无操作时,从库可不用同步主库的数据,直接确定主库的binlog位置即可。

# 查看主库binlog文件位置show master status;# 主库创建同步账号create user 'repl'@'%' identified by '123456';grant replication slave on *.* to 'repl'@'%';

若主库已经运行了一段时间,有业务数据在,而从库刚刚初始化完成,此时则需要备份主库的数据,然后导入从库,使得主从数据一致。

# 主库创建同步账号create user 'repl'@'%' identified by '123456';grant replication slave on *.* to 'repl'@'%';# 全备主库数据mysqldump -uroot -pxxxx -A -R -E --single-transaction --master-data=2 > all_db.sql# 从库端恢复mysql -uroot -pxxxx < all_db.sql# 从备份文件中可以找到主库的binlog位置

2.3 进入从库,开启主从复制

找到主库二进制文件位置且完成主从数据一致后,我们就可以正式开启主从复制了。

# 进入从库MySQL命令行 执行change master语句连接主库# 二进制文件名及pos位置由上面步骤获得CHANGE MASTER TO MASTER_HOST='MySQL主服务器IP地址',    MASTER_PORT=3306,    MASTER_USER='repl',    MASTER_PASSWORD='123456',    MASTER_LOG_FILE='binlog.000002',    MASTER_LOG_POS=154;# 开启主从复制 并坚持状态start slave;show slave status \G //查看slave状态 确保Slave_IO_Running: Yes Slave_SQL_Running: Yes
3.基于GTID的主从复制

GTID是MySQL 5.6的新特性,其全称是Global Transaction Identifier,可简化MySQL的主从切换以及Failover。GTID用于在binlog中唯一标识一个事务。当事务提交时,MySQL Server在写binlog的时候,会先写一个特殊的Binlog Event,类型为GTID_Event,指定下一个事务的GTID,然后再写事务的Binlog。

在基于GTID的复制中,首先从服务器会告诉主服务器已经在从服务器执行完了哪些事务的GTID值,然后主库会有把所有没有在从库上执行的事务,发送到从库上进行执行,并且使用GTID的复制可以保证同一个事务只在指定的从库上执行一次,这样可以避免由于偏移量的问题造成数据不一致。也就是说,无论是级联情况,还是一主多从的情况,都可以通过GTID自动找位置,而无需像之前那样通过File_name和File_position找主库binlog位置了。

基于GTID的主从复制与上面基于二进制文件位置的主从复制搭建步骤类似,同样简单展示下搭建过程:

3.1 确认主从库配置,开启GTID

# 主库参数配置 要有以下参数vim /etc/my.cnf [mysqld] server-id = 137log-bin = binlog  binlog_format = row gtid-mode = ON //开启gtid模式enforce-gtid-consistency = ON   //强制gtid一致性,用于保证启动gitd后事务的安全 # 从库建议配置以下参数vim /etc/my.cnf [mysqld] server-id = 138log-bin = binlog  binlog_format = row gtid-mode = ON enforce-gtid-consistency = ON relay-log = relay-bin

3.2 创建同步账号,保持主从库数据一致

若主库刚初始化完成或者主库端保留有全部二进制文件,则从库无需手动同步数据。否则需要手动同步数据使得主从一致。

# 主库创建同步账号create user 'repl'@'%' identified by '123456';grant replication slave on *.* to 'repl'@'%';# 若主库刚初始化或保留有完整二进制文件 则无需执行下面步骤# 全备主库数据mysqldump -uroot -pxxxx -A -R -E --single-transaction  > all_db.sql# 从库端恢复mysql -uroot -pxxxx < all_db.sql

3.3 进入从库,开启主从复制

# 进入从库MySQL命令行 执行change master语句连接主库CHANGE MASTER TO MASTER_HOST='MySQL主服务器IP地址',    MASTER_PORT=3306,    MASTER_USER='repl',    MASTER_PASSWORD='123456',    MASTER_AUTO_POSITION = 1;# 开启主从复制 并坚持状态start slave;show slave status \G

到此,关于"什么是MySQL主从复制"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

主从 服务器 服务 数据 二进制 配置 位置 文件 同步 事务 一致 参数 日志 账号 学习 地址 建议 数据库 步骤 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 合肥新广网络技术有限公司 光纤最新网络技术 自己动手实现数据库 美国利用网络安全吗 好活科技发力互联网板块 河南存储服务器散热器供应 上海电力应急软件开发参考价格 欧盟小儿辅料安全和毒性数据库 云服务器安全产品安全狗 传奇获取物品数据库的字段值 服务器管理器怎么禁止弹出 网络技术安全得不到保障 k8s备份数据库 点滴身边官网网络技术 查看sql数据库名称 湖北交友软件开发哪家实惠 黑色沙漠什么服务器便宜 计算机网络技术适合初中生吗 总票房电影票房排行榜数据库 独立服务器哪个平台好 养老软件开发 空间数据库课程设计题目 敬畏技术加强修养网络安全 服务器无法加载系统 不用登录加速服务器app 上海华为数据库实验室 牡丹江帅辉互联网科技工作室 吴中区正规服务器价格咨询 软件开发生命周期指南 数据库中成绩表英文
0