主从同步原理

master记录数据操作

开启binlog日志

设置binlog日志格式

指定server_id

slave启用俩个线程

slave_io:复制master主机binlog日志为文件里的sql到本机的relay-log文件中

slave_SQL:执行本机relay_log文件里的sql语句重现master数据操作

案例1

部署mysql一主一从架构

主库:192.168.1.22

从库:192.168.1.61

俩台服务器安装mysql5.7,关闭防火墙

一、主库操作:

1.编辑配置文件并重启服务

vim /etc/my.cnf  添加以下内容

server_id=22   /指定server_id

log-bin  /开启binlog日志
binlog_format="mixed"  /设置binlog日志格式

:wq  /保存并退出

systemctl   restart mysqld  /重启mysql服务 

2.登陆数据库

mysql -uroot -p“密码”

3.创建数据同步账号

grant replication slave  on *.*  to replic@"192.168.1.61"  identified by "Myql@2022";

4.查看 master状态,并记住文件名与偏移量

show master status;

二、 从库操作

1.编辑配置文件并重启服务

vim /etc/my.cnf  添加以下内容

server_id=22   /指定server_id

:wq  /保存并退出

systemctrl   restart mysqld  /重启mysql服务 

2.登陆数据库

mysql -uroot -p“密码”

3.指定主库信息

change master to

mater_host="192.168.1.22",

mater_user="replic",

master_password="Mysql@2022",

master_log_file="mysql-bin.0000051"

master_log_pos=3124;

4.开启slave

start slave

5.查看slave状态

show slave status\G

注:以下俩个值必须是yes状态

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

6.从库启动成功后,数据库目录下新增加四个类型相关文件/master61较乱,采用master62展示4个类型文件

master.info //存放主库信息
relay-log.info //中继日志信息
主机名-relay-bin.index //索引文件
主机名-relay-bin.xxxxxx //中继日志

三、.测试配置

1.主库授权一个用户用于测试

2.使用账户lw登录数据库

创建库wl

3.从库查看是否有wl库(如果有表示成功)

案例2

部署主从从架构

主库:192.168.1.22  /192.168.1.61的主库

从库:192.168.1.61  /192.168.1.22的从库,192.168.1.62的主库

从库:192.168.1.62  /192.168.1.61的从库

结合以上配置新增一台从库192.168.1.62

主库192.168.1.61配置

1.编辑配置文件并重启服务

vim /etc/my.cnf   /添加以下配置

server_id=61      /案例一中已添加,无需添加此行
log-bin
binlog-format="mixed"
log_slave_updates     /开启级联复制

:wq    /保存并退出

systemctrl   restart mysqld  /重启mysql服务

2.登陆数据库

mysql -uroot -p“密码”

3.创建数据同步账号

grant replication slave  on *.*  to master62@"192.168.1.62"  identified by "Myql@2022";

4.查看 master状态,并记住文件名与偏移量

show master status;

二、 从库操作

1.编辑配置文件并重启服务

vim /etc/my.cnf  添加以下内容

server_id=62  /指定server_id

:wq  /保存并退出

systemctl   restart mysqld  /重启mysql服务 

2.登陆数据库

mysql -uroot -p“密码”

3.指定从库信息

change master to

mater_host="192.168.1.61",

mater_user="master62",

master_passwword="Mysql@2022",

master_log_file="master61-bin.000005 "

master_log_pos=913;

4.开启slave

start slave

5.查看slave状态

show slave status\G

三、.测试配置

1.主库授权一个用户用于测试

2.使用账户lw登录数据库

创建库wl

3.从库查看是否有wl库(如果有表示成功)

 主从复制同步模式

异步复制模式(默认为该模式)
主库执行完一次事务后,立即将结果返回给客户端,不关心从库是否已
经同步成功

全同步复制模式
当主库执行完一次事务后,等所有从库都同步成功后将结果返回给客户

半同步复制模式
主库在执行完一次事务后,等待至少一个从库同步成功才将结果返回给
客户端

配置半同步模式

主库:192.168.1.22  /192.168.1.61的主库

从库:192.168.1.61  /192.168.1.22的从库,192.168.1.62的主库

从库:192.168.1.62  /192.168.1.61的从库

一、192.168.1.22主库配置

1.查看是否允许加载模块
默认是允许状态
mysql> show variables like "have_dynamic_loading";

2.192.168.1.22主库上安装插件
mysql> install plugin rpl_semi_sync_master soname "semisync_master.so";

3.查看插件是否安装成功
mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like "%semi%";

二、192.168.1.61主从库配置

主库上安装插件
mysql> install plugin rpl_semi_sync_master soname "semisync_master.so";  /主库插件

从库上安装插件
mysql> install plugin rpl_semi_sync_slave soname "semisync_slave.so";   /从库插件

查看插件是否安装成功
mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like "%semi%";

三、192.168.1.62从库配置

从库上安装插件
mysql> install plugin rpl_semi_sync_slave soname "semisync_slave.so";

查看插件是否安装成功
mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like "%semi%";

四、启动半同步模式

在安装完插件后,半同步复制模式默认是关闭的,需要手动启用/on为开启
1.主库上启用半同步复制模式
mysql> set global rpl_semi_sync_master_enabled=1;
2.在从库上启用半同步模式
mysql> set global rpl_semi_sync_slave_enabled=1;
3.查看半同步复制模式
mysql> show variables like "rpl_semi_sync_%_enabled";

 五、永久启动半同步模式

修改配置文件永久启用半同步复制模式

1、主库配置
vim /etc/my.cnf
plugin-load=rpl_semi_sync_master=semisync_master.so

rpl_semi_sync_master_enabled=1

2、从库配置
plugin_load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
注意:是两行的,不是一行

mysql主从同步复制的更多相关文章

  1. 烂泥:mysql5.5主从同步复制配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上篇文章<烂泥:学习mysql数据库主从同步复制原理>中,我们介绍了有关mysql主从复制的基本原理.在这篇文章中,我们来实际测试下mys ...

  2. mysql 主从 同步原理及配置

    一.在mssql 里头实现同步镜像,只能主库用而镜像库不能同时用,而mysql 主从同步可以实现 数据库的读写分离,主库负责 update insert delete ,从库负责select 这样一来 ...

  3. mysql5.5主从同步复制配置

    在上篇文章<烂泥:学习mysql数据库主从同步复制原理>中,我们介绍了有关mysql主从复制的基本原理.在这篇文章中,我们来实际测试下mysql5.5的主从同步复制功能. 注意mysql5 ...

  4. Mysql主从同步(复制)

    目录: mysql主从同步定义      主从同步机制 配置主从同步      配置主服务器      配置从服务器 使用主从同步来备份      使用mysqldump来备份      备份原始文件 ...

  5. Mysql主从同步(复制)(转)

    文章转自:https://www.cnblogs.com/kylinlin/p/5258719.html 目录: mysql主从同步定义 主从同步机制 配置主从同步 配置主服务器 配置从服务器 使用主 ...

  6. MySQL数据库的主从同步复制配置

    一.主从同步机制原理 MYSQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态), ...

  7. MySQL半同步复制

    从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...

  8. MySQL主从同步原理 部署【转】

    一.主从的作用:1.可以当做一种备份方式2.用来实现读写分离,缓解一个数据库的压力二.MySQL主从备份原理master 上提供binlog ,slave 通过 I/O线程从 master拿取 bin ...

  9. shell脚本修复MySQL主从同步

    发布:thebaby   来源:net     [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改mysql主从同步的shell脚本. 例子 ...

  10. mysql主从同步+mycat读写分离+.NET程序连接mycat代理

    背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...

随机推荐

  1. 玩玩 Visual Studio Code 和 MSYS2

    注意:为了便于理解本文内容,您可能需要一些前置知识,例如命令行操作,编译器操作,路径操作,环境变量操作,vscode操作-- 众所周知 Visual Studio Code 是一个优秀的编辑器. 众所 ...

  2. https原理(五)双向实践(https代理)

    本文为了证明: 1 双向可以通过直接转发tcp的中间人代理网关 2 双向可以防止明文中间人 开始.(服务端need,使用myhost.com-pub-capub.jks,myhost.com-pub- ...

  3. tomcat前后端项目部署及调优

    第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...

  4. 怎么把百度地图的搜索结果全部导出到Excel文件

    有很多人问我,怎么样能够快速的把BAIDU地图左边的搜索列表里的商家地图,电话,导出到EXCEL里. 我就开发了一个小软件,专门为快速的实现导出数据到EXCEL. 为了使用方便,已经将全国的所又省份, ...

  5. cv::inRange

    // 简单实现 cv::namedWindow("Example 2-3", cv::WINDOW_AUTOSIZE); cv::VideoCapture cap; cap.ope ...

  6. Json数组转List

    List<Person> list = obj.list.ToObject<List<Person>>()

  7. gym102586C Sum Modulo

    题意: 给你 \(n,m,k\) 以及\(p_i(1\le i\le n)\) ,保证 \(\sum p_i=1\) 你有一个数 \(X\),一开始 \(X=0\) 每次你会生成一个随机数 \(A\) ...

  8. 解决uniapp 使用自带 switch 双向绑定视图不更新的问题

    使用  this.$set( a, b, c) a:需要更新视图属性对象 b:具体的属性值(就是你要更新视图的属性值) c:传递的参数 this.$set(this.gwjSelet,this.gwj ...

  9. FSCapture怎么取色

    启动软件后 点击setting->Screen color Picker 此时箭头会变为一个吸管形状, 选择要吸取的颜色,点击鼠标左键 出现如图所示 完了复制这个十六进制颜色值

  10. Ajax后台传数组参数,接收不到报错!

    var Gid = ""; var Name = ""; var strGid = []; var strName = []; for (var i = 0; ...