MySQL主从复制原理及配置

目录

一、MySQL主从复制原理

1、什么是主从复制

2、主从复制原理

二、主从复制配置

1、主服务器数据库配置

 (1)设置server-id值并开启binlog参数,启用二进制日志功能后,重启数据库。

 (2)建立同步账号,在主服务器数据库上创建一个用于复制的用户,并授予复制权限。

 (3)锁表设置只读,为后面备份准备,注意生产环境要提前申请停机时间

 (4)查看主服务器数据库状态,获取二进制日志的位置和文件名

 (5)备份主数据库数据

 (6)解锁表

 (7)将主服务器数据库备份数据上传到从服务器数据库

2、从服务器数据库配置

 (1)设置server-id值并关闭binlog参数,启用从服务器功能后,重启数据库。

 (2)还原从主库备份数据,检查还原

 (3)设定从主库同步,即设置从服务器要复制的主服务器信息

 (4)启动从库同步开关即从服务器的复制进程,检查状态

一、MySQL主从复制原理

1、什么是主从复制

MySQL主从复制是一种数据复制技术,用于将一个MySQL数据库主节点的数据复制到其他MySQL数据库节点(一个或多个),以实现数据的备份、负载均衡和高可用性。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

2、主从复制原理

(1)主服务器(master)将数据更改记录到二进制日志(Binary Log)中,包括插入、更新和删除操作;

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

(3)主服务器为每个I/O线程启动一个dump线程,用于向其发送二进制日志,并保存至从服务器本地的中继日志(Relay Log)中,从服务器将启动SQL线程从中继日志中读取二进制日志,并将其应用到自己的数据库中,实现数据的复制,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

二、主从复制配置

1、主服务器数据库配置

(1)设置server-id值并开启binlog参数,启用二进制日志功能后,重启数据库。

[root@localhost ~]# vim /etc/my.cnf

log_bin=mysql-bin
server_id=11

[root@localhost ~]# systemctl restart mysqld

(2)建立同步账号,在主服务器数据库上创建一个用于复制的用户,并授予复制权限。

mysql> grant replication slave on *.* to 'rep'@'192.168.2.%' identified by '123456';

mysql> show grants for 'rep'@'192.168.2.%';

mysql> flush privileges;

 (3)锁表设置只读,为后面备份准备,注意生产环境要提前申请停机时间

mysql> flush tables with read lock;

mysql> show variables like '%timeout%';

 (4)查看主服务器数据库状态,获取二进制日志的位置和文件名

mysql> show master status;

 (5)备份主数据库数据

[root@localhost ~]# mysqldump -uroot -p123456 -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

 (6)解锁表

mysql> unlock tables;

(7)将主服务器数据库备份数据上传到从服务器数据库

自己在/server/backup/目录中查看备份文件(mysql_bak.2023-07-23.sql.gz)

2、从服务器数据库配置

 (1)设置server-id值并关闭binlog参数,启用从服务器功能后,重启数据库。

[root@localhost ~]# vim /etc/my.cnf
server_id=12

[root@localhost ~]# systemctl restart mysqld

(2)还原从主库备份数据,检查还原

[root@localhost ~]# cd /server/backup/
[root@localhost backup]# gzip -d mysql_bak.2023-07-23.sql.gz 
[root@localhost backup]# mysql -uroot -p123456 < mysql_bak.2023-07-23.sql

 (3)设定从主库同步,即设置从服务器要复制的主服务器信息

mysql> change master to
    -> MASTER_HOST='192.168.2.130',
    -> MASTER_PORT=3306,
    -> MASTER_USER='rep',
    -> MASTER_PASSWORD='123456',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=742;

(4)启动从库同步开关即从服务器的复制进程,检查状态

mysql> start slave;

mysql> show slave status \G

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从复制是基于二进制日志(binary log)的复制方式,通过将主数据库上的操作记录在二进制日志中,并将二进制日志传输到从数据库,从数据库再执行相同的操作来实现数据同步。以下是MySQL主从复制的基本原理: 1. 主库(Master)的操作: - 主库将所有的写操作(INSERT、UPDATE、DELETE等)记录在二进制日志(binary log)中,包括数据修改语句和事务信息。 2. 从库(Slave)的配置: - 从库需要连接到主库,并设置复制相关的参数,如主库的IP地址、端口号、复制用户名和密码等。 3. 初始数据同步: - 在开始主从复制之前,通常需要进行一次初始数据同步,将主库的数据复制到从库。可以使用备份和恢复的方式来实现初始数据同步。 4. 主库和从库的连接: - 从库通过连接到主库,发送一个复制请求,请求获取主库的二进制日志。 5. 主库二进制日志传输: - 主库收到从库的复制请求后,开始将二进制日志传输给从库。传输可以通过网络传输,也可以通过共享文件系统传输。 6. 从库的二进制日志解析和执行: - 从库接收到主库传输过来的二进制日志后,开始解析并执行其中的数据修改语句和事务信息。从库会按照主库的操作顺序来执行这些操作。 7. 从库的回放和复制延迟: - 从库根据主库的操作顺序逐条执行二进制日志中的操作,将主库的操作在从库上重现。由于复制过程是异步的,从库的复制延迟可能会导致从库上的数据与主库存在一定的时间差。 8. 主库故障和主从切换: - 如果主库发生故障,可以将一个从库提升为新的主库,然后将其他从库切换到新的主库上,实现主从切换。 通过主从复制,可以实现数据的备份、读写分离、负载均衡等功能,并提高数据库的可用性和性能。同时,需要注意主从复制配置和监控,以确保数据一致性和复制的稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值