主从复制!!!

文章详细介绍了MySQL主从复制的原理,包括二进制日志和中继日志的角色,以及主库和从库的配置步骤,如设置server-id,开启binlog,创建同步账号,备份与还原数据,和设置主从同步。同时,提到了在Docker环境下关闭防火墙的必要性。
摘要由CSDN通过智能技术生成

主从复制原理:  

  在每个事务更新数据完成之前,Master 在二进制日志(Binary loq)记录这些改变。写入二进制日志完成后,Master通知存储引擎提交事务。
  slave 将Master的复制到其中继日志(Relay log)。首先salave开始一个工作线程(I/0) ,I/0线程在Master上打开一个普通的连接,然后开始Binlog dump process. Binlog. dump process 从Master的二进制日志中读取事件,如果已经跟上Master,它会睡眠并等待Master产生新的事件,I/0线程将这些事件写入中继日志。
  SQL slave. thread ( SQL从线程)处理该过程的最后一步,SQL线程从中继日志读取事件,并重放其中的事件而更新slave数据,使其与Master 中的数据一致,只要该线程与I/O 线程保持一致,中继日志通常会位于OS缓存中,所以中继日志的开销很小。复制过程有一个很重要的限制,即复制在slave上是串行化的, 也就是说Master上的并行更新操作不能在Slave上并行操作。

MySQL主从复制(一主两从)

环境需要:

  1. docker
  2. 防火墙关闭
    #关闭docker
    systemctl stop docker
    #关闭防火墙
    systemctl stop firewalld
    #启动docker
    systemctl start docker
    

1.主库配置:

设置server-id值并开启binlog参数

bin - log = mysql - bin
sever_id = 137

重启数据库:

[root@localhost ~]# systemctl restart mysqld

建立同步账号:

 锁表设置只读,测试锁表后是否可以创建数据库:

mysql> flush tables with read lock:
mysql> show variables like '%timeout%:

查看主库状态:

mysql> show master status;

备份数据库数据:

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

解锁:

mysql> unlock tables;

主库备份数据上传到从库

[root@localhost ~]# scp /backup/mysql_bak.$(date +%F).sql.gz 192.168.118.148:/backup/

2.从库配置

设置server-id并关闭binlog参数,重启数据库

# log_bin
server_id = 148

还原主库备份数据并检查:

[root@localhost ~]# mkdir /backup/mysql_bak -p
[root@localhost ~]# cd /backup/
[root@localhost  backup~]# zcat /backup/mysql_bak.2023-03-31.sql.gz | mysql -uroot -pABCabc123! -S /date/3307/mysql.sock

查看:

[root@localhost ~]# mysql -uroot -pABCabc123! -S /date/3307/mysql.sock

设置主从同步:

开启从库同步开关:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值