Linux下搭建MySQL主从复制之一主一从架构

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Linux下搭建MySQL主从复制之一主一从架构

这里的配置指的是MySQL的my.cnf文件[mysqld]下进行配置。环境是Centos7.9+MySQL8.0,可以参考博文Centos7下使用RPM包安装MySQL8 。


如果是在虚拟机上操作并且是克隆方式生成的虚拟机(包含MySQL Server),则克隆的虚拟机MySQL Server的UUID相同,这是需要修改的。

vim /var/lib/mysql/auto.cnf
systemctl restart mysqld

【1】 主MySQL配置

建议MySQL版本一致且后台以服务运行,主从所有配置项都配置在[mysqld]节点下,且都是小写字母。


① 必选

主服务器唯一ID

# 主服务器唯一ID
server-id=1
#启用二进制日志,指明路径 log-bin=自己本地路径/mysqlbin
log-bin=mysqlbin


② 可选

# 0 默认 表示读写,1 表示只读
read-only=0
#设置日志文件保留的时长 单位是秒
binlog_expire_logs_seconds=6000000
# 控制单个二进制日志大小,此参数的最大和默认值是1GB
max_binlog_size=200M
# 设置不要复制的数据库
binlog-ignore-db=test
# 设置需要复制的数据库,如果不设置,则默认同步除忽略的之外的数据库
binlog-do-db=需要复制的主数据库名字
#设置binlog格式
binlog_format=STATEMENT
# --------其他亦可自行配置,比如数据目录--------
#错误日志
log-err=自己本地路径/mysqlerr
#根目录
basedir="自己本地路径"
# 临时目录
tmpdir="自己本地路径"
# 数据目录
datadir="自己本地路径/Data/"

重启后台MySQL服务,使配置生效。需要注意的是,建议先搭建主从配置,再创建数据库。MySQL主从复制起始时,从机不继承主机数据。

【2】从服务器配置

主要是从服务器唯一ID与二进制日志文件配置。

#[必选]
server-id=2
#[可选]如果默认已经配置,无需更改
log-bin=mysqlbin
#[可选] 启用中继日志
relay-log=mysql-relay

修改完配置需要重启MySQL服务。

【3】开启复制

① 主MySQL上建立账户并授权

在master上建立账户并授权给slave。

grant replication slave on *.* to 'slave1'@'从机数据库IP' identified by '123456'; # 5.5 ,5.7
flush privileges;

如果使用的MySQL8.0,需要如下的方式建立账户并授权salve。

#创建用户
create user 'slave1'@'%' identified by '123456';
#授予复制权限
grant replication slave on *.* to 'slave1'@'%';
#重置密码哦,必须执行
alter user 'slave1'@'%' identified with mysql_native_password by '123456';
#刷新权限
flush privileges;

查询master状态,并记录下file和position的值

show master status
mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| mysqlbin.000001 |     1164 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

到这里暂时不要操作master,防止状态值变化,接下来设置slave。

② 从机配置需要复制的主机

从机上复制主机的命令:

change master to 
master_host='主机IP',
master_user='主机用户名',
master_password='主机用户密码',
master_log_file='mysqlbin.具体数字',
master_log_pos=position数字;

举例:

change master to master_host='192.168.255.128',master_user='slave1',master_password='123456',
master_log_file='mysqlbin.000001',master_log_pos=1164;

启动slave同步

start slave;

如果报错如下:

可以执行如下操作,删除之前的relay_log信息。然后重新执行change master to ...语句即可。

如果报错如下:
在这里插入图片描述
可以执行如下操作,删除之前的relay_log信息。然后重新执行change master to ...语句即可。
reset sla

查看slave状态

show slave status

如果下面两个参数都是yes,则说明主从复制成功。

Slave_IO_Running:Yes
Slave_SQL_Running:Yes

停止从复制功能

stop slave

重新配置主从,需要在从机上执行:

stop slave;
reset master;#删除master中所有的binlog文件,并将日志索引文件清空,重新开始所有新的日志文件--慎用!!
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
12天前
|
SQL 存储 缓存
MySQL的架构与SQL语句执行过程
MySQL架构分为Server层和存储引擎层,具有高度灵活性和可扩展性。Server层包括连接器、查询缓存(MySQL 8.0已移除)、分析器、优化器和执行器,负责处理SQL语句;存储引擎层负责数据的存储和读取,常见引擎有InnoDB、MyISAM和Memory。SQL执行过程涉及连接、解析、优化、执行和结果返回等步骤,本文详细讲解了一条SQL语句的完整执行过程。
30 3
|
1月前
|
存储 SQL 缓存
MySQL原理简介—2.InnoDB架构原理和执行流程
本文介绍了MySQL中更新语句的执行流程及其背后的机制,主要包括: 1. **更新语句的执行流程**:从SQL解析到执行器调用InnoDB存储引擎接口。 2. **Buffer Pool缓冲池**:缓存磁盘数据,减少磁盘I/O。 3. **Undo日志**:记录更新前的数据,支持事务回滚。 4. **Redo日志**:确保事务持久性,防止宕机导致的数据丢失。 5. **Binlog日志**:记录逻辑操作,用于数据恢复和主从复制。 6. **事务提交机制**:包括redo日志和binlog日志的刷盘策略,确保数据一致性。 7. **后台IO线程**:将内存中的脏数据异步刷入磁盘。
|
3月前
|
关系型数据库 MySQL Linux
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
164 8
|
3月前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
257 7
|
3月前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
3月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
4月前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
183 2
|
4月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
309 3
|
2月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决