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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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,如果还重复,那么你可以去买彩票了):

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
关系型数据库 MySQL Apache
mysql5.7 本地计算机上的mysql 服务启动后停止 的问题解决
mysql5.7 本地计算机上的mysql 服务启动后停止 的问题解决
11 0
|
1月前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
21 1
|
1月前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
28 1
|
1月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
730 0
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
129 1
|
1月前
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
15 1
|
1月前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
24 1
|
1月前
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
22 2
|
1月前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1
|
1月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
95 7