暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL主备同步的基本原理及实验

月球软件源码 2021-06-24
1082

一、基本原理

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而另一个或者 多个其他服务器充当从服务器。MySQL复制是基于主服务器在二进制日志中跟踪所有对数据库的更改。因此,要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收主服务器已经记录到日志的数据。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,并在本机上执行相同的更新。然后封锁并等待主服务器通知新的更新。从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。

二、作用及条件

1、作用
  实时灾备,用于故障切换
  读写分离,提供查询服务
  备份,避免影响业务

  高可用和故障切换(需要做HA)
2、主从部署必要条件:
  主库开启binlog日志(设置log-bin参数)
  主从server-id不同
  从库服务器能连通主库


三、实验

主服务器(Master)

1、启用二进制日志 log-bin。

2、设置一个全局唯一的 server_id。

3、提前准备好一个有复制权限(replication slave,replication client)的用户。

从服务器(Slave)

1、启动中继日志 relay-log。

2、设置一个全局唯一的 server_id。

3、使用主服务器提供的有复制权限的用户连接至 Master。

4、启动复制线程。


环境要求

1、主服务器:192.168.121.130 
2、从服务器:192.168.0.107
3、mysql版本:mysql-5.7
4、系统:主 centos,从 Windows10


主服务器配置

1、配置 my.ini

添加配置信息


log-bin=master-log-bin
server-id=1

innodb-file-per-table=ON


2、重启服务,并进入MySQL查看主服务器状态信息


3、给复制用户授权

grant replication slave,replication client on *.* to root@192.168.0

.107;

或者 用%通配符允许局域网内所有IP地址访问


4、刷新权限:flush privileges;


到此主服务器配置完成!


从服务器配置

1、配置 my.ini

log-bin=slave-log-bin
relay_log=relay-log
relay_log_index=relay-log.index
server-id=2
innodb_file_per_table=ON

2、重启并进入MySQL服务

3、用主服务器提供的复制用户连接主服务器

change master to 

master_host='192.168.121.130',master_port=3306,master_user='root',master_password='root123',master_log_file='master-log-bin.000001',master_log_pos=154;  

# 这里的 master 日志文件和位置必须与主服务器当前状态一致!

4、启动复制线程

start slave;


此时会启动 IO Thread 和 SQL Thread 这两个线程 ,这两个线程必须是yes才可以,不然无法进行实验。


测试

在主服务器上新建一个没有的数据库(test),

新建后再在从服务器上查看


至此测试完毕并达到预期的效果!



文章转载自月球软件源码,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论