文章目录

  • 主从同步模式
    • 结构类型
    • 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. MySQL两千万数据优化迁移
  2. hdu120118岁生日
  3. 深入探讨SDN拓扑发现机制:新的攻击及实践对策【SDN拓扑】(上)
  4. 更新!机器学习手推笔记《规则学习》
  5. 把配置的jenkins主路径删掉_Jenkins详细教程
  6. 命令杀mysql进程
  7. 单片机原理及应用复习
  8. TTL转USB电路(CH340G)
  9. 计算机网络通信设备的运行温度,什么是机房温度、湿度标准?
  10. 和平精英体验服服务器怎么样维护,和平精英体验服账号怎么弄_体验服官网申请教程_3DM手游...
  11. java 并g1_JVM G1详解
  12. tensorflow使用较为底层的方式复现VGG16
  13. imx6ull 14*14 平台使用mfgtools下载代码出现UTP Waiting for device to appear错误
  14. 解析解【闭式解(closed-form solution)】和数值解
  15. SQL优化很难怎么办?给你一个简单暴力的办法
  16. MySQL——数据库锁原理
  17. 梁漱溟:思考问题的八层境界
  18. mysql 查询每个月的销售额 和 每天的销售额
  19. 2021年科技园区规划设计方案
  20. 运行spark时不使用框架中默认提供的大量log4J日志输出

热门文章

  1. 2016 yyuc框架环境配置
  2. DSP技术及应用 知识点整理
  3. 添加内核驱动模块(1)(mydriver.c+ Konfig+Makefile )
  4. java毕业设计便利店系统mybatis+源码+调试部署+系统+数据库+lw
  5. Java程序员不得不会的124道面试题(含答案)
  6. [RubyOnRails]一些网址
  7. Linux下nand flash读写测试
  8. 计算机类专业用五笔输入法,专业英文拼音五笔打字训练
  9. 计算机应用数学自考,计算机应用数学-补充题16年自考复习资料
  10. FCKEditor的用法与下载