MySQL主从同步的多种模式
文章目录
- 主从同步模式
- 结构类型
- 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的从服务器
配置步骤:
- 配置数据库服务器56(主服务器配置)
- 配置数据库服务器57(主服务器配置)
- 把服务器57配置为56的从服务器
- 把服务器56配置为57的从服务器
- 分别在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主从同步的多种模式相关推荐
- DBA(三):MySQL主从同步、复制模式
MySQL主从同步 主从同步概述 MySQL主从同步 主从同步介绍 实现数据自动同步的服务结构 主服务器:接受客户端访问连接 从服务器:自动同步主服务器的数据 主从同步的工作原理 主库有1个线程叫du ...
- mysql主从同步的三种模式
mysql 主从同步三种模式:异步复制.半同步复制.全同步复制 今天我们就来看下这三种同步模式的优势和劣势 异步复制 异步复制是mysql 默认的同步方式 在master为slave开通账号密码.ip ...
- MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置
前言:前面我们了解了MySQL数据库的基础知识,今天及接下来的五天时间里我会给大家带来MySQL进阶方面的一些学习总结,如有不足,还请大家留言指出:下面我们就开始今天的内容. ** 部署mysql主从 ...
- MySQL 主从同步模式
目录 MySQL 主从同步模式 主从同步结构 结构类型 配置一主多从结构 拓扑结构 配置从服务器 测试一主多从的配置 配置主从从结构 拓扑结构 配置主服务器 配置从服务器 测试配置 配置主主结构 拓扑 ...
- MySQL主从同步问题集
http://blog.chinaunix.net/uid-8786588-id-3771613.html 在InnoDB引擎下发现,Mysql的主从热备存在数据不一致的问题,一些数据没有成功同步到备 ...
- 基于mysql主从同步的proxy读写分离
mysql-proxy 简介 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载 ...
- mysql 主从同步-读写分离
主从同步与读写分离测试 一. 实验环境(主从同步) Master centos 7.3 192.168.138.13 Slave ...
- mysql主从同步搭建和故障排除
主从同步的定义: 是存储数据的一种结构模式. 主:被客户端访问的数据库服务器就是主库服务器master 从:连接主库服务器,自动同步主库的所有数据到本机slave 1.什么是mysql主从同步? 当 ...
- mysql读写分离6_6\MySQL 主从同步 、 MySQL 读写分离 、 MySQL 性能调优
day06 一.mysql主从同步 二.数据读写分离 三.MySQL优化 ++++++++++++++++++++++++++++++++ 一.mysql主从同步 1.1 主从同步介绍?从库服务器自动 ...
- 部署mysql主从同步
部署mysql主从同步 一.什么是mysql主从同步 主:正在被客户端访问的数据库服务器,被称作主库服务器. 从:自动同步主库上的数据的数据库服务器,被称作从库服务器. 二.配置mysql主从同步 2 ...
最新文章
- spring boot源码分析之SpringApplication
- RNN LSTM 循环神经网络 (分类例子)
- Ricky’s RealDan’s Ricky
- linux中fork和exec
- Oracle client 安装、配置
- 【OpenCV学习】基于轮廓寻找的视频流运动检测
- [CF]Round 516
- python和循环语句_Python 小白零基础入门 -- 条件语句和循环语句
- Excel两列数据比较,相同的保存在另外一列
- MAC安装软件 brew 问题记录
- 记录一下weui文档地址
- Effective C++ 读书笔记(五)
- iOS中app在iTunes中更新版本流程
- 重庆封闭式计算机学校有哪些,重庆市十佳高三学校排名榜
- 网易视频云 php接口
- EF 之 System.InvalidOperationException
- 关于无刷电机驱动器的布板建议(FOC)
- FPS游戏外挂屡禁不止,如何破局?
- cocos2d 屏幕適配_cocos2d-x 屏幕适配新解
- IconJar - Mac 上的一款多功能图标素材管理工具