写点什么

mysql8.0 主从架构模式【0 到 1 架构系列】

  • 2024-08-24
    福建
  • 本文字数:1588 字

    阅读完需:约 5 分钟

前提条件


  1. 准备 3,4,5 台虚拟机

  2. 祼装 mysql8.0




主从架构


常见两种模式“一主多从”和“级联复制”两种,基本都很简单,都是依赖 binlog 日志文件进行同步,binlog 日志会记录 DDL 和部分 DDL 语句,进行同步时从库会重新执行这些语句从而实现主从同步。




步骤 1:


配置主/从服务器的server_id,如果不清楚 mysql 服务器 server_id,使用命令SHOW VARIABLES LIKE 'server_id';可以查询,server_id 的值没有严格规定,保证全局唯一性即可,server_id 值默认是 1。

debian 服务器编辑命令如下:nano /etc/mysql/my.conf ,加入下面节点,假设主库设置 1,从库设置 2,保存之后重启数据库systemctl restart mysql


[mysqld]server-id=1 #主库配置加入
复制代码


[mysqld]server-id=2 #从库配置加入
复制代码


步骤 2(非必要):


主机上执行show master status;显示最新的日志文件和当前位置。



File 当前正在写入的二进制日志文件名。


Position 当前二进制日志文件的偏移量,表示下一个要写入的位置。


Binlog_Do_DB 主服务器上配置的需要记录到二进制日志中的数据库。


Binlog_Ignore_DB 主服务器上配置的不需要记录到二进制日志中的数据库。


Executed_Gtid_Set 在 GTID 模式下,该属性表示已经执行过的全局事务标识符的集合


步骤 3:


从服务器连接主服务器进行主从同步,在从服务器上面执行如下代码:


CHANGE REPLICATION SOURCE to SOURCE_HOST='192.168.3.107', SOURCE_USER='root', SOURCE_PASSWORD='1234', SOURCE_LOG_FILE='binlog.000009', SOURCE_LOG_POS=0;
复制代码


SOURCE_HOST:主库连接地址


SOURCE_USER:账号


SOURCE_PASSWORD:密码


SOURCE_LOG_FILE:主库当前二进制文件名


SOURCE_LOG_POS:当前二进制日志文件的偏移量


执行完成之后可以通过show REPLICA status;可以查看复制集群状态,通过如下命令可以启动,暂停,删除集群。


show REPLICA status; #查看start REPLICA;       #开始stop REPLICA;        #暂停RESET REPLICA ALL;   #删除
复制代码


通过设置 SOURCE_HOST 地址连接主库或从库,就可以轻松实现一主多从,或一主一从一从的链式架构。


GTID 模式(推荐)


主从复制中 mysql 提供一种 GTID 模式,SHOW GLOBAL VARIABLES LIKE 'gtid_mode';查看 Gtid 模式的状态。gtid 是一种新的日志格式,gtid 每个事务都有一个唯一的 GTID,保证了事务在整个复制拓扑中的唯一性,主要与传统日志格式区别就是以事务为单位而传统日志是基于日志位置。


RESET MASTER;重置主库的 binlog 日志,注意一旦重置日志将丢失所有日志数据,将从 00001 开始,编辑nano /etc/mysql/my.cnf,各个数据库的 server_id 按 1-5 排序下去,主库和从库都需要配置。


[mysqld]server-id=1gtid_mode=onenforce_gtid_consistency=true
复制代码


gtid_mode:开启 gtid 模式。


enforce_gtid_consistency:强制 GTID 一致性,这有助于提高数据的可靠性和一致性,防止数据丢失或损坏。


从库执行如下代码:


CHANGE REPLICATION SOURCE to  SOURCE_HOST='192.168.3.107', SOURCE_USER='root', SOURCE_PASSWORD='123', SOURCE_AUTO_POSITION=1;
复制代码


你会发现 SOURCE_LOG_FILE 和 SOURCE_LOG_POS 将不再需要填写,因为 gtid 的好处之一就是会自动定位日志文件和位置,减少配置复杂性。其它的集群管理与传统的命令一致。


#主库常用命令show master status  #查看主库状态reset master;       #重置主库binlog日志 #从库常用命令show replica status;    #查看从库状态start replica;          #开始同步stop replica;           #暂停同步reset replica all;      #重置(删除)全部同步select * from performance_schema.replication_applier_status_by_worker; #查看同步线程的信息(主要用于查看具体报错信息) #其它show variables like 'server_id';         #查看server_idshow global variables like 'gtid_mode';  #查看gtid状态
复制代码


文章转载自:老猿新码

原文链接:https://www.cnblogs.com/netcore3/p/18355396

体验地址:http://www.jnpfsoft.com/?from=infoq

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
mysql8.0 主从架构模式【0到1架构系列】_MySQL_快乐非自愿限量之名_InfoQ写作社区