文章目录

  • 主从同步模式
    • 结构类型
    • MySQL一主多从:
      • 拓扑结构
      • 配置一主多从
      • 验证一主多从的配置
    • MySQL主从从结构
      • 拓扑结构
      • 配置主服务器(192.168.5.53)
      • 配置服务器(192.168.5.54)
        • 开始配置
      • 配置从服务器(192.168.4.55)
      • 验证主从从的配置
    • MySQL的主主结构
      • 配置主服务器
      • 配置从服务器
      • 验证主主结构的配置
  • MySQL实现主从时的复制模式
    • 复制模式介绍
    • 题目:做一个半同步复制的主从
      • 模式配置:
        • 命令行加载插件
        • 启用半同步复制
        • 永久启用半同步复制

主从同步模式

结构类型

  • 基本应用

    • 单向复制:一主 <— 一从
    • 这个详细配置请看:MySQL的主从备份
  • 扩展应用
    • 一主多从: 从<—主----->从
    • 链式复制:主<-----从<-----从
    • 互为主从: 主<------>主

MySQL一主多从:

拓扑结构

配置一主多从

把数据库192.168.4.53也配置为192.168.4.51的从服务器

配置从服务器192.168.4.53

vim /etc/my.cnf
[mysqld]
server_id=53systemctl restart mysqld

确保和主库数据一致

#192.168.4.51 (主库数据)
mysqldump -uroot -p123456 --master-data -B db2 db1 >/root/twodb.sql
scp /root/twodb.sql root@192.168.4.53:/root
#192.168.4.53(从服务器)
mysql -uroot -p123456 < /root/twodb.sql
mysql -uroot -p123456 -e "show databases"   #查看是否恢复成功
#查看主库日志信息和偏移量
grep master51 /root/twodb.sql

指定主库信息

mysql>
change master to
master_host="192.168.4.51",        #主库的IP地址
master_user="repluser",            #主库授权用户
master_password="123456",          #授权用户密码
master_log_file='master51.000002' ,     #主库日志文件,这个文件在主库使用show    master status; 查看日志名与偏移量
master_log_pos=441;

启动slave程序

mysql> start slave;

查看状态信息

show slave status \G;

验证一主多从的配置

客户端连接主服务器51访问数据

在从服务器53 本机可以查看到同样的数据

客户端

mysql -u admin -h 192.168.4.51 -p123456
insert into db1.a values(2);
insert into db1.a values(3);
insert into db2.user values(5,"alive");

从服务器:192.168.4.53

mysql>
select * from db1.a;
select * from db2.user;

MySQL主从从结构

拓扑结构

在这个实验中53作为主服务器,由于53做了上个实验的从服务器,所以先清除53的从服务器配置

rm -rf /var/lib/mysql/master.info
rm -rf /var/lib/mysql/relay-log.info
rm -rf /var/lib/mysql/sql3-relay-bin.*
systemctl restart mysqld
mysql -uroot -p123456 -e "show slave status"  #没有输出信息说明重置成功
#为了保持主从库数据一致,我们刚刚在53数据库进行了一些数据的备份,现在删除他们,确保数据一致
mysql -u root -p123456
drop database db1;
drop database db2;

配置主服务器(192.168.5.53)

配置步骤:

  • 启用binlog日志
  • 重启数据库服务
  • 用户授权
vim /etc/my.cnf
[mysqld]
server_id=53
log_bin=master53systemctl restart mysqld
mysql -uroot -p123456
grant replication slave on *.* to repluser@"%" identified by "123456";
show master status;

配置服务器(192.168.5.54)

因为54服务器在这里即做主库,又作从库,所以这里需要给54做主库的配置和从库的配置

友情提醒:各位开始配置时记得关闭selinux和防火墙,或者防火墙开启3306端口

开始配置

配置过程

  • 修改配置文件
  • 用户授权
  • 指定主库信息
  • 启动slave进程
vim /etc/my.cnf
[mysqld]
server_id=54
log-bin=master54
log_slave_updates     #允许级联复制,要做主从从配置,必须要有这个systemctl restart mysqld
mysql -uroot -p123456
grant replication slave on *.* to repluser@"%" identified by "123456";
show master status;    #查看主库配置
show slave status \G;   #查看从库配置
change master to
master_host="192.168.4.53",
master_user="repluser",
master_password="123456",
master_log_file="master53.000001",
master_log_pos=441;
start slave;
show slave status \G;

配置从服务器(192.168.4.55)

配置步骤:

  • 设置server_id
  • 确保与主服务器数据一致
  • 指定主库信息
  • 启动slave程序
  • 查看状态信息
vim /etc/my.cnf
[mysqld]
server_id=55systemctl restart mysqld
mysql -u root -p123456
show slave status;
change master to
master_host="192.168.4.54",
master_user="repluser",
master_password="123456",
master_log_file="master54.000001",
master_log_pos=441;
start slave;
show slave status \G;

验证主从从的配置

测试步骤:

  • 在主库授权访问数据的连接用户
  • 客户端连接主库,执行与权限匹配的SQL操作
  • 授权用户连接第一台从库,可以看到主库的数据
  • 授权用户连接第二台从库,可以看到主库的数据

192.168.4.53

mysql> grant all on db1.* to tom@"%" identified by "123456";

客户端连接主服务器53,测试

mysql -h192.168.4.53  -utom -p123456
show grants;
show databases;
create database db1;
create table db1.user(id int,name char(10));
insert into db1.user values(1,"tom");

从服务器在本机查看数据

#192.168.4.54
mysql -uroot -p123456 -e "select * from db1.user"
#192.168.4.55
mysql -uroot -p123456 -e "select * from db1.user"


MySQL的主主结构

主主结构就是两个服务器之间互为主从

192.168.4.56是192.168.4.57的主服务器,也是192.168.4.57的从服务器

192.168.4.57是192.168.4.56的主服务器,也是192.168.4.56的从服务器

配置步骤:

  1. 配置数据库服务器56(主服务器配置)
  2. 配置数据库服务器57(主服务器配置)
  3. 把服务器57配置为56的从服务器
  4. 把服务器56配置为57的从服务器
  5. 分别在2台服务器查看slave状态信息

配置主服务器

#192.168.4.56
vim /etc/my.cnf
log-bin=master56
server_id=56systemctl restart mysqld
mysql -uroot -p123456
show master status;
grant replication slave on *.* to repluser@"%" identified by "123456";
#192.168.4.57
vim /etc/my.cnf
log-bin=master57
server_id=57systemctl restart mysqld
mysql -uroot -p123456
show master status;


配置从服务器

#192.168.4.57
mysql>
show slave status \G;
change master to
master_host="192.168.4.56",
master_user="repluser",
master_password="123456",
master_log_file="master56.000001",
master_log_pos=154;
start slave ;
show slave status \G;#192.168.4.56
mysql>
show slave status \G;
change master to
master_host="192.168.4.57",
master_user="repluser",
master_password="123456",
master_log_file="master57.000001",
master_log_pos=154;
start slave ;
show slave status \G;


验证主主结构的配置

测试步骤:

  • 在56,57授权访问数据的连接用户
  • 客户端连接数据库,执行与权限匹配的SQL操作
  • 在相应的服务器上查看数据
#192.168.4.56
msyql>grant all on db1.* to tom@"%" identified by "123456";
#192.168.4.57
msyql>grant all on db1.* to lucy@"%" identified by "123456";

客户端连接进行测试

#192.168.4.56
mysql -h192.168.4.56 -utom -p123456show grants;show databases;
create database db1;
create table db1.user( id int ,name char(10));insert into db1.user values(1,"tom");
#192.168.4.57
mysql -h192.168.4.57 -ulucy -p123456show grants;show databases;insert into db1.user values(2,"lucy");


在数据库中查看结果

MySQL实现主从时的复制模式

复制模式介绍

  • 异步复制(默认)(Asynchronous replication)

    • 主库执行完一次事务后,立即将结果返给客户端,并不关心从库是否已经接受并处理
  • 全同步复制(Full synchronous replication)
    • 当主库执行完一次事务,且所有从库都执行了该事务后才将结果返回给客户端
  • 半同步复制(Semisynchronouhs replication)
    • 介于异步复制和全同步复制之间
    • 主库在执行完一次事务之后,等待至少一个从库接收到并写到relay log中才将结果返回给客户端

题目:做一个半同步复制的主从

本次实验在数据库56,57上进行,56和57在之前做过一个主主结构的主从,所以56和57,既是主库又是从库

模式配置:

查看是否允许动态加载模块

  • 默认允许

    • show variables like 'have_dynamic_loading';
      

命令行加载插件

  • 使用数据库管理员root用户访问服务

  • mysql>install plugin rpl_Semi_sync_master
    SONAME "semisync_master.so";   #在主服务器上执行,rpl_Semi_sync_主服务器模块,模块名为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%';   #查看
    

启用半同步复制

半同步复制,默认关闭

mysql>
set global rpl_semi_sync_master_enabled=1;   #主服务器执行
set global rpl_semi_sync_slave_enabled=1;   #从服务器执行
show variables like "rpl_semi_sync_%_enabled";   #查看

永久启用半同步复制

  • 修改主配置文件 /etc/my.cnf
  • 在[mysqld]下方添加
vim /etc/my.cnf
[mysqld]
#主的配置
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
#从的配置
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
  • 是master和slave两种角色时

    • 需同时启用
    vim /etc/my.cnf
    [mysqld]
    plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
    rpl_semi_sync_master_enabled=1
    rpl_semi_sync_slave_enabled=1systemctl restart mysqld
    mysql -uroot -p123456 -e'show variables like "rpl_semi_sync_%_enabled"'
    

在57上进行一样的操作,复制模式要一致

MySQL主从同步的多种模式相关推荐

  1. DBA(三):MySQL主从同步、复制模式

    MySQL主从同步 主从同步概述 MySQL主从同步 主从同步介绍 实现数据自动同步的服务结构 主服务器:接受客户端访问连接 从服务器:自动同步主服务器的数据 主从同步的工作原理 主库有1个线程叫du ...

  2. mysql主从同步的三种模式

    mysql 主从同步三种模式:异步复制.半同步复制.全同步复制 今天我们就来看下这三种同步模式的优势和劣势 异步复制 异步复制是mysql 默认的同步方式 在master为slave开通账号密码.ip ...

  3. MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置

    前言:前面我们了解了MySQL数据库的基础知识,今天及接下来的五天时间里我会给大家带来MySQL进阶方面的一些学习总结,如有不足,还请大家留言指出:下面我们就开始今天的内容. ** 部署mysql主从 ...

  4. MySQL 主从同步模式

    目录 MySQL 主从同步模式 主从同步结构 结构类型 配置一主多从结构 拓扑结构 配置从服务器 测试一主多从的配置 配置主从从结构 拓扑结构 配置主服务器 配置从服务器 测试配置 配置主主结构 拓扑 ...

  5. MySQL主从同步问题集

    http://blog.chinaunix.net/uid-8786588-id-3771613.html 在InnoDB引擎下发现,Mysql的主从热备存在数据不一致的问题,一些数据没有成功同步到备 ...

  6. 基于mysql主从同步的proxy读写分离

    mysql-proxy 简介 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载 ...

  7. mysql 主从同步-读写分离

    主从同步与读写分离测试 一.  实验环境(主从同步) Master                   centos 7.3              192.168.138.13 Slave     ...

  8. mysql主从同步搭建和故障排除

    主从同步的定义:  是存储数据的一种结构模式. 主:被客户端访问的数据库服务器就是主库服务器master 从:连接主库服务器,自动同步主库的所有数据到本机slave 1.什么是mysql主从同步? 当 ...

  9. mysql读写分离6_6\MySQL 主从同步 、 MySQL 读写分离 、 MySQL 性能调优

    day06 一.mysql主从同步 二.数据读写分离 三.MySQL优化 ++++++++++++++++++++++++++++++++ 一.mysql主从同步 1.1 主从同步介绍?从库服务器自动 ...

  10. 部署mysql主从同步

    部署mysql主从同步 一.什么是mysql主从同步 主:正在被客户端访问的数据库服务器,被称作主库服务器. 从:自动同步主库上的数据的数据库服务器,被称作从库服务器. 二.配置mysql主从同步 2 ...

最新文章

  1. spring boot源码分析之SpringApplication
  2. RNN LSTM 循环神经网络 (分类例子)
  3. Ricky’s RealDan’s Ricky
  4. linux中fork和exec
  5. Oracle client 安装、配置
  6. 【OpenCV学习】基于轮廓寻找的视频流运动检测
  7. [CF]Round 516
  8. python和循环语句_Python 小白零基础入门 -- 条件语句和循环语句
  9. Excel两列数据比较,相同的保存在另外一列
  10. MAC安装软件 brew 问题记录
  11. 记录一下weui文档地址
  12. Effective C++ 读书笔记(五)
  13. iOS中app在iTunes中更新版本流程
  14. 重庆封闭式计算机学校有哪些,重庆市十佳高三学校排名榜
  15. 网易视频云 php接口
  16. EF 之 System.InvalidOperationException
  17. 关于无刷电机驱动器的布板建议(FOC)
  18. FPS游戏外挂屡禁不止,如何破局?
  19. cocos2d 屏幕適配_cocos2d-x 屏幕适配新解
  20. IconJar - Mac 上的一款多功能图标素材管理工具

热门文章

  1. 在线演示(动画演示)各种算法的实现过程
  2. d-s证据理论 matlab 完整代码
  3. 1.5多媒体技术的应用领域
  4. Flash倒计时+写在自定义类+写在关键帧
  5. java实现端口扫描
  6. 微计算机与单片机原理及应用答案,电子科技大学《单片机原理及应用》20春期末考试【标准答案】...
  7. Mac 从零搭建Android开发环境记录以及提高效率软件推荐
  8. java函数命名规范_java命名规范
  9. 如何破解无线网络密码(无线网络密码破解)
  10. 支持移动触摸的jQuery图片Lightbox插件 1