MySQL搭建主从备份读写分离(MySQL5.7案例)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL搭建主从备份读写分离(MySQL5.7案例)

配置步骤

首先准备两台CentOS7(其他操作也行,本文由CentOS7做讲解),保证两台机器能够ping通

并且包装两台服务器当中安装同样版本的数据库,可参考我写的MySQL5.7安装文档https://blog.csdn.net/m0_51510236/article/details/113791490

然后使用其中一台作为主数据库(写、更改、删除都在这个里面),这里我是用 192.168.235.5 作为主数据库,用 192.168.235.7 作为从数据库(读可以在这个里面)。在 192.168.235.5 服务器当中修改 /etc/my.cnf 的 mysqld 添加如下配置:

# [mysqld]
server-id=5 # 建议使用IP地址的后缀,因为本机IP地址为 192.168.235.5 ,所以server-id为5
log-bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=xiaohh_user  # xiaohh_user是要同步的数据库的名称,不写默认同步所有数据库
# 需要排除的数据库
binlog_ignore_db=information_schema
binlog_ignore_db=mysql
binlog_ignore_db=performance_schema
binlog_ignore_db=sys

写好之后:

然后使用 systemctl restart mysqld 重启数据库服务器,然后使用 show master status; 查询MySQL的 File 和 Position:

在 192.168.235.7 的从服务器上按照同样的方式配置上如下配置,然后从其服务器

# [mysqld]
server-id=7 # 建议使用IP地址的后缀
log-bin=slave-bin
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

然后在 192.168.235.7 当中执行如下SQL:

change master to master_host='192.168.235.5', master_port=3306, master_user='root', master_password='root', master_log_file='master-bin.000001', master_log_pos=154;

以上SQL的讲解:

# 指定主数据库的地址
master_host='192.168.235.5'
# 指定主数据库的端口
master_port=3306
# 指定主数据库的登陆用户名
master_user='root'
# 指定主数据库的登陆密码
master_password='root'
# 在上一步当中利用 show master status; 命令查询出来的 File 字段
master_log_file='master-bin.000001'
# 在上一步当中利用 show master status; 命令查询出来的 Position 字段
master_log_pos=154

目前两台数据库服务器是没有 xiaohh_user 这个数据库的

192.168.235.7 数据库执行命令:

start slave;
• 1

我们使用SQL语句在 192.168.235.5 主服务器上创建这个数据库:

CREATE DATABASE `xiaohh_user`;
USE `xiaohh_user`;
CREATE TABLE `user` (
  `user_id` BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '用户id',
  `username` VARCHAR(50) NOT NULL COMMENT '用户名',
  `age` TINYINT UNSIGNED DEFAULT 18 COMMENT '年龄',
  `gender` TINYINT UNSIGNED DEFAULT 2 COMMENT '性别;0=男,1=女,2=未知'
) COMMENT '用户表';

查看效果:

在 192.168.235.5 插入一条数据并在从数据库当中查看:

INSERT INTO `user` (`username`, `age`, `gender`) VALUES ('XiaoHH', '24', '0');

在 192.168.230.7 从数据库当中查看:

常见坑点

应为我是在 VMware workstation 里面克隆的虚拟机,所以主数据库和从数据库在 auto.cnf 里面的uuid相同,我们可以在从数据库当中改一下uuid,这个文件默认是在 /var/lib/mysql/auto.cnf,随意更改最后一个字母或数字即可(毕竟这东西可以给世界上每一粒沙子编一个uuid,如果还重复,那么你可以去买彩票了):

从新启动集群,然后就正常了

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
65 4
|
29天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
46 3
|
29天前
|
SQL 关系型数据库 MySQL
案例剖析:MySQL唯一索引并发插入导致死锁!
案例剖析:MySQL唯一索引并发插入导致死锁!
案例剖析:MySQL唯一索引并发插入导致死锁!
|
29天前
|
SQL 关系型数据库 MySQL
案例剖析,MySQL共享锁引发的死锁问题!
案例剖析,MySQL共享锁引发的死锁问题!
|
29天前
|
消息中间件 关系型数据库 MySQL
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
112 0
|
1月前
|
负载均衡 监控 关系型数据库
MySQL 官宣:支持读写分离了!!
【10月更文挑战第8天】MySQL的读写分离功能显著提升了数据库性能、可用性和可靠性。通过将读写操作分配至不同服务器,有效减轻单个服务器负载,提高响应速度与吞吐量,并增强系统稳定性。此外,它还支持便捷的扩展方式,可通过增加只读服务器提升读操作性能。实现读写分离的方法包括软件层面(如使用数据库中间件)和硬件层面(使用独立服务器)。使用时需注意数据一致性、负载均衡及监控管理等问题。
|
12天前
|
关系型数据库 MySQL 数据库
一个 MySQL 数据库死锁的案例和解决方案
本文介绍了一个 MySQL 数据库死锁的案例和解决方案。
17 3
|
15天前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
1月前
|
安全 关系型数据库 MySQL
MySQL用户备份
【10月更文挑战第2天】MySQL用户备份
51 3
|
1月前
|
存储 关系型数据库 MySQL
MySQL如何备份?
【10月更文挑战第2天】MySQL如何备份?
75 3