首页 > 数据库 >MySQL主从复制实践

MySQL主从复制实践

时间:2023-09-26 11:44:07浏览次数:36  
标签:主从复制 slave 二进制 数据库 mysql 实践 master MySQL 日志

MySQL主从复制实践

多个数据库间主从复制与读写分离的模型

​ 在一主多从的数据库体系中,多个从服务器采用异步的方式更新主数据库的变化;业务服务器在执行写或者相关修改数据库的操作是在主服务器上进行的,读操作则是在各从服务器上进行

​ Mysql 主从复制的实现原理图大致如下

​ MySQL 之间数据复制的基础是二进制日志文件(binary log file)

​ 一台 MySQL 数据库一旦启用二进制日志后,其作为 master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为 slave 通过一个I/O 线程与主服务器保持通信,并监控 master 的二进制日志文件的变化,如果发现 master 二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave 的一个 SQL 线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制

配置主从复制

master 服务器配置

​ 修改 master 数据库配置文件(my.cnf)

[mysqld]
# 开启二进制日志
log-bin=mysql-bin 
# 设置 server-id
server-id=1 

​ 重启 master 数据库

service mysql restart

​ 通过mysql -hlocalhost -uname -ppassword命令进入 master 数据库,创建一个用于和 slave 通信的用户账号

# 创建用户
CREATE USER 'username'@'slave ip' IDENTIFIED BY 'password';
# 分配权限
GRANT REPLICATION SLAVE ON *.* TO 'username'@'slave ip';
# 刷新权限
flush privileges;   

​ 查看 master 数据库二进制日志文件名及位置(File 列记录的是二进制文件名,Position 记录的是位置)

mysql> SHOW MASTER STATUS;
+------------------+-----------+--------------+------------------+-------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+-----------+--------------+------------------+-------------------+
| mysql-bin.000074 | 156968749 |              |                  |                   |
+------------------+-----------+--------------+------------------+-------------------+

slave 服务器配置

​ 修改 slave 数据库配置文件(my.cnf)

[mysqld]
# 设置 server-id,必须唯一
server-id=2

​ 重启 slave 数据库,并通过以下 sql 配置 master 信息

CHANGE MASTER TO
MASTER_HOST='master ip',
MASTER_USER='上面创建的账号名称',
MASTER_PASSWORD='上面创建的账号密码',
MASTER_LOG_FILE='master 二进制日志文件名',
MASTER_LOG_POS='master 二进制日志文件记录的位置';

​ 启动 slave 同步进程(停止同步进程:stop slave;)

mysql>start slave;

启动 slave 同步进程前需要将 master 数据库的数据迁移到 salve 数据库

​ 查看同步状态

mysql> show slave status\G;

​ 当 Slave_IO_Running 和 Slave_SQL_Running 都为 YES 的时候就表示主从同步设置成功了

​ 接下来就可以进行一些验证了,比如在 master 数据库一张表中插入一条数据,在 slave 的相同数据表中查看是否有新增的数据,还可以关闭 slave,然后再修改 master,看 slave 是否也相应修改(停止 slave 后,master 的修改不会同步到 slave)

​ 扩展,还可以用到的其他相关参数:

​ master 开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在 mysql 配置文件的 [mysqld] 可添加修改如下选项:

# 不同步哪些数据库  
binlog-ignore-db = mysql  
binlog-ignore-db = test  
binlog-ignore-db = information_schema  
  
# 只同步哪些数据库,除此之外,其他不同步  
binlog-do-db = game

​ 参考文档:https://www.cnblogs.com/gl-developer/p/6170423.html

标签:主从复制,slave,二进制,数据库,mysql,实践,master,MySQL,日志
From: https://www.cnblogs.com/Y-wee/p/17729742.html

相关文章

  • MySQL配置文件
    /etc/my.cnf默认配置#Foradviceonhowtochangesettingspleasesee#http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld]##Removeleading#andsettotheamountofRAMforthemostimportantdata#cacheinMySQL.Start......
  • Mysql使用 jemalloc 内存分配器
    /usr/lib64/libjemalloc.so是一个动态链接库文件,它包含了jemalloc内存分配器的实现。jemalloc是一个通用的内存分配器,旨在为多线程应用程序提供优秀的性能。它通常被用在需要高效内存管理的应用程序中,如数据库服务器、Web服务器等。安装库文件这个库文件一般是通过系统的包......
  • Linux系统之安装MySQL8.0版本
    一、MySQL介绍1.1MySQL简介MySQL8.0是最新版本的MySQL数据库管理系统,是一种关系型数据库管理系统,由Oracle公司开发和维护。MySQL8.0带来了一系列新特性,包括多个性能提升,更好的安全性和扩展性,以及新的管理功能。1.2MySQL特点更好的性能:MySQL8.0提供了对于大型查......
  • Windows 安装并配置 MySQL 5.7
    Windows安装并配置MySQL5.7 Windows下安装MySQL有两种方式:下载安装包,根据向导提示一步步安装,不需要什么配置,比较简单下载压缩包,通过命令来安装和配置本文介绍第二种安装方法,使用的MySQL版本为5.7.38假设你已经下载了MySQL压缩文件安装包(官网下载地址:https://www.mysql.......
  • mysql 获取最近6个月的年月
      @s< 5 控制多少个月  SELECT DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL@s:=@s+1MONTH),'%Y-%m')AS`mon` FROM mysql.help_topic, (SELECT@s:=-1)temp WHERE @s<5 ORDERBYmon......
  • DBA容灾与备份恢复:闪回应用及实践(一)
    闪回应用及实践第一天:以时间戳方式恢复被勿更新数据:1.查看UNDO的空间是否充足2.询问操作发生时间23:48:48,经确认这个表中数据变化很小。如果能把这个时间点前的表中数据恢复出来,就能把问题的影响降到最低。先尝试使用闪回查询来做,依赖一些缓存空间和系统的负载,在反复确认时间后,写......
  • MySQL索引原理
    入驻博客园的第一篇博客,希望能够将知识点解释清楚,有些地方可能有一些啰嗦,望见谅。(本文为转载,转载地址文末,自己加了一些结构上的调整) 一、几种树的介绍首先介绍几种树的数据结构:二叉搜索树(BST)、平衡二叉树、B树、B+树1.1二叉搜索树二叉搜索树具有以下性质:(1)......
  • 《软件工程:一种实践方法》读书笔记一
    "软件工程:一种实践方法"是由RogerS.Pressman撰写的软件工程领域的经典教材。以下是一份读后感总结,其中包含了一些重要观点和感受:1.综合性与全面性:这本书对软件工程的内容进行了广泛的涵盖,涉及到了软件开发的各个方面,包括需求工程、设计、测试、维护和项目管理等。它提供了一个......
  • uniapp项目实践总结(二十二)分包优化和游客模式
    导语:这篇主要介绍应用分包和游客模式相关的内容。目录应用分包游客模式应用分包微信对于小程序的打包压缩后的代码体积是有限制的,网页和APP也可以适用分包功能,因此需要进行分包添加以及分包优化。分包添加在pages.json文件中添加分包的信息。例如:有一个名叫user的分......
  • Generative AI 新世界 | 扩散模型原理的代码实践之采样篇
    在上一期的文章中,探讨了在 AmazonSageMakerStudio上使用QLoRA等量化技术微调Falcon40B大语言模型。而从本期开始,我们将一起尝试在更深的知识维度,继续探究生成式AI这一火热的新知识领域。亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开......