7 - MySQL主从同步|主从同步模式

这篇具有很好参考价值的文章主要介绍了7 - MySQL主从同步|主从同步模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库系列文章

1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型
2 - 表结构 | MySQL键值
3 - 字段约束|MySQL索引|MySQL用户管理
4 - 基础查询进阶|连接查询
5 - 视图|存储过程
6 - 数据备份与恢复|innobackupex
7 - MySQL主从同步|主从同步模式
8 - MySQL数据读写分离|MySQL多实例
9 - 数据分片概述|部署MyCat服务
10 - MHA集群概述|部署MHA集群
11 - PXC集群|MySQL存储引擎

MySQL主从同步

主从同步介绍

存储数据的服务结构
主服务器: 接收客户端访问连接
从服务器:自动同步主服务器数据

主从同步工作过程

7 - MySQL主从同步|主从同步模式,数据库,mysql,数据库
7 - MySQL主从同步|主从同步模式,数据库,mysql,数据库
启动binlog日志

  • Slave
    • Slave_IO :复制master主机 binlog日志文件里的SQL命令到本机的relay-log文件里
    • Slave_SQL:执行本机relay-log文件里的SQL语句,实现与Master数据一致

主从同步结构模式

一主一从同步结构 :存储数据的服务结构,能够实现数据的自动同步(也就是数据备份)
一主多从同步结构
主从从同步结构 (给一主一从服务器的从服务器也配置一台从服务器)
主主同步结构 (两台服务器 彼此是对方的主服务器 同时还是对方的从服务器)

配置主从同步

一主一从同步结构

  • 配置主服务器
  1. 启动binlog日志
vim /etc/my.cnf
[mysqld]
server_id=51
log_bin=master51  # 日志默认存储在数据库目录下
--------
systemctl restart mysqld
  1. 授权用户
mysql -uroot -p密码
# replication slave 让用户有复制命令的权限
mysql> grant replication slave on *.* to repluser@"%" identified by "密码"
  1. 查看binlog日志信息
# 
mysql> show master status;

7 - MySQL主从同步|主从同步模式,数据库,mysql,数据库

  • 配置从服务器
  1. 设置server_id 服务器编号 并重启服务
vim /etc/my.cnf
[mysqld]
server_id=52

systemctl restart mysqld
  1. 确保与主服务器数据一致
  2. 指定主库信息
mysql -uroot -p密码
mysql > change master to master_host="192.168.4.51",master_user="repluser",master_password="密码",master_log_file="master51.000001",master_log_pos=441 # 和主一样
  1. 启动slave程序
mysql> start slave;
  1. 查看状态信息(io线程和SQL线程必须同时是yes状态)
mysql> show slave status

7 - MySQL主从同步|主从同步模式,数据库,mysql,数据库

一主多从同步结构

一台主 两台从
在从服务器做如下服务:

  1. 设置server_id 服务器编号 并重启服务
vim /etc/my.cnf
[mysqld]
server_id=53

systemctl restart mysqld
  1. 确保与主服务器数据一致
    第一步 在主服务器 对db1库做完全备份 然后吧备份文件拷贝给53
# --master-data 做完全备份数据时,在备份文件里记录使用的日志名和偏移量
mysqldump -uroot -pxxx --master-data -B db1 > /root/db1.sql
scp /root/db1.sql 192.168.4.53:/opt/

第二步 主机53使用备份文件恢复数据

]# mysql -uroot -pxxx < /opt/db1.sql
]# mysql -uroot -pxxx -e 'show databases'
]# mysql -uroot -pxxx -e 'select count(*) from db1.t1'
  1. 指定主库信息
# 在备份文件里查看日志名和偏移量
grep master51 /opt/db1.sql
#显示如下信息
CHANGE MASTER TO MASTER_LOG_FILE='master51.000001',MASTER_LOG_POS=2000;
mysql -uroot -p密码
mysql > change master to master_host="192.168.4.51",master_user="repluser",master_password="密码",master_log_file="master51.000001",master_log_pos=20000 # 和主一样
  1. 启动slave程序
mysql> start slave;
  1. 查看状态信息(io线程和SQL线程必须同时是yes状态)
mysql> show slave status

测试主从

# 在主服务器上插入新数据
mysql> insert into db1.t1 values(999)
# 2台从服务器可以看到一样的数据
] # mysql -uroot -pxxx -e 'select * from db1.t1'

主从从同步结构

7 - MySQL主从同步|主从同步模式,数据库,mysql,数据库

把数据库服务器 53 54 55 配置为主从从结构
就是给一主一从中的从服务器也配置从服务器
环境准备:把53主机恢复为独立的数据库服务器 54 55 配置主从从同步

[root@hotst53 ~]# cd /var/lib/mysql
[root@hotst53 ~]# rm -rf master.info
[root@hotst53 ~]# rm -rf relay-log.info
[root@hotst53 ~]# ls host53-relay-bin.*
[root@hotst53 ~]# rm -rf *-relay-bin.*
[root@hotst53 ~]# systemctl restart mysqld
mysql > show slave status \G
Empty set
mysql > drop database db1;

具体配置如下
第一步 配置主数据库服务器 53

1.启用binlog日志
vim /etc/my.cnf
[mysqld]
server_id=53
log_bin=master53

systemctl restart mysqld
2.用户授权
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
3.查看日志信息
mysql> show master status;

第二步 配置主机54 因为同时是2中角色,所以2种角色都要有

vim /etc/my.cnf
[mysqld]
server_id=54
log_bin=master54
log_slave_updates # 允许级联复制 54主机把自己主服务器的数据拷贝给自己的从服务器
:wq
systemctl restart mysqld
2.用户授权
mysql> grant replication slave on *.* to repluser@'%' identified by "123qqq..a";
3.指定主机服务器地址 日志名 偏移量
mysql> change master to master_host="192.168.4.53",master_user="repluser",master_password="123..." master_log_file="master53.000001",master_log_pos=441;
mysql> start slave;
mysql> show slave status \G

第三步 配置主机 55 (做54的从服务器)

1指定server_id 并重启mysql服务
vim /etc/my.cnf
[mysqld]
server_id=55
:wq
systemctl restart mysqld
2指定主服务器信息
mysql> change master to master_host="192.168.4.54",master_user="repluser",master_password="xxx",master_log_file="master54.000001",master_log_pos=441
3启动slave进程
4查看状态

验证结果 : 在53创建的数据 54 55都能看到

主主同步结构

两台数据库服务器分别做彼此的从服务器和主服务器 2台服务器2种角色的配置都要有
第一步 配置68 配置69

vim /etc/my.cnf
[mysqld]
server_id=68
log_bin=master68
:wq
systemctl restart mysald
mysql> show master status
69主机mysql> grant replication slave on *.* to repluser@"%" identified by "111";
69主机mysql> change master to master_host="192.168.4.68",master_user="repluser",master_password="xxx",master_log_file="master68.000001",master_log_pos=441;
mysql>

主从同步模式

主从同步结构模式复制模式

主从数据库服务实现数据同步的工作方式
支持的工作方式:

  • 第一种 异步复制模式(默认)
    主服务器执行一次事物后,立即将结果返回给客户端,不关心从服务器是否已经同步数据
  • 第二种 半同步复制模式
    等待至少一个从服务器同步后 才会给客户端

把主服务器和从服务器的工作模式都修改为半同步复制模式
方法一 命令行设置
好处 不用重启服务 马上生效 但是不是永久化

1.安装master模块
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME "semisync_master.so"
2.安装slave模块
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME "semisync_salve.so"
3.查看模块是否安装
mysql> select plugin_name,plugin_status from information_schema.plugins where plugin_name like "%semi%"
4.启用master模块
mysql> set global rpl_semi_sync_master_enabled=1;
5.启用slave模块
mysql> set global rpl_semi_sync_slave_enabled=1;
6.查看模块是否启用
mysql> show variables like "rpl_semi_sync_%_enabled"

7 - MySQL主从同步|主从同步模式,数据库,mysql,数据库

方法二 永久配置 编辑主配置文件文章来源地址https://www.toymoban.com/news/detail-782911.html

vim /etc/my.cnf
[mysqld]
# 安装模块
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
# 启用模块
rpl_semi_sync_slave_enabled=1
rpl_semi_sync_master_enabled=1

到了这里,关于7 - MySQL主从同步|主从同步模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL8.0+数据库GTID主从模式搭建

    参见: MySQL数据库8.0+版本部署安装-CSDN博客 部署环境[例]: 主库:192.168.179.153:3306 从库:192.168.179.154:3306 主从库开启GTID模式 // 主从库均修改,修改从库配置文件,在[mysqld]下添加如下配置 $ vim /etc/my.cnf gtid_mode = on enforce_gtid_consistency = on 需检查server-id配置,为主从架构中的所有

    2024年02月04日
    浏览(66)
  • MySQL数据库——主从复制

    在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似

    2024年02月11日
    浏览(99)
  • mysql 数据库主从复制搭建

    MySQL 主从复制主要用于实现高可用性和备份。在主从复制中,一个 MySQL 实例(称为主节点)将其数据更改复制到至少一个其他 MySQL 实例(称为从节点)上。主要借助于数据库二进制日志binlog进行数据的复制。 主从数据库对应的操作系统、数据库版本要一致。 1、主库配置 设

    2024年02月20日
    浏览(56)
  • Mysql主从数据库搭建(一主两从)

    目录 1、服务器规划 2、主从同步流程 3、主从搭建 3.1、master节点上配置文件修改 3.2、master节点创建同步用户和权限 3.3、slave1和slave2节点配置文件修改 3.4、slave1和slave2节点执行同步任务 3.5、解决虚拟机克隆导致mysql所有服务器uuid都一样的问题 4、bin-log相关说明 5、主从同步注

    2024年02月11日
    浏览(47)
  • 【MySQL数据库】主从复制与读写分离

    读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据库

    2024年02月11日
    浏览(59)
  • 【数据库】mysql主从复制与读写分离

      读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE ),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。   因为数据库的\\\"写”(写10000条数据可能要3分钟)操作是比较耗时的。   

    2024年02月11日
    浏览(72)
  • MySQL数据库 主从复制与读写分离

    读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据库

    2024年02月10日
    浏览(48)
  • 【数据库七】MySQL主从复制与读写分离

    读写分离,基本的原理是让主数据库处理事务性增、改、删操作 (insert、update、delete),而 从数据库处理select查询操作 。 数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库 。 因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。 但是数据

    2024年02月11日
    浏览(59)
  • Docker 容器搭建mysql 集群(主从数据库)

    目录 1.背景         2.设备及软件版本 3.开始搭建(这里不介绍安装docker及mysql) 3.1创建主数据库容器(master) 3.2查看容器是否创建成功 3.3进入修改容器下的/etc/my.cnf文件 3.3.1先拷贝my.cnf到容器外修改完再覆盖容器原来的my.cnf文件 3.4重启mysql容器使配置文件生效 3.5查看是否

    2024年02月08日
    浏览(101)
  • 7 - MySQL主从同步|主从同步模式

    1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型 2 - 表结构 | MySQL键值 3 - 字段约束|MySQL索引|MySQL用户管理 4 - 基础查询进阶|连接查询 5 - 视图|存储过程 6 - 数据备份与恢复|innobackupex 7 - MySQL主从同步|主从同步模式 8 - MySQL数据读写分离|MySQL多实例

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包