配置MySQL主从复制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 主服务器数据库的每次操作都会记录在二进制日志文件mysql-bin.xxx(保存文件位置可自行配置) 中。从服务器的I/O线程使用专用帐号登陆到主服务器中读取该二进制文件,并将文件内容写入到自己本地的中继日志relay-log文件中。

MySQL主从复制原理

MySQL 的主从复制并不是数据库磁盘上的文件直接拷贝,也不是直接使用某个编程语言脚本将主服务器数据取出,然后写入到从服务器。 主服务器数据库的每次操作都会记录在二进制日志文件mysql-bin.xxx(保存文件位置可自行配置) 中。从服务器的I/O线程使用专用帐号登陆到主服务器中读取该二进制文件,并将文件内容写入到自己本地的中继日志relay-log文件中。然后从服务器的SQL线程会根据中继日志中的内容执行SQL语句。
image

准备工作

  • 作为操作演示,我直接用VM安装了两台Centos7虚拟主机(在此多一下嘴,大家应该学会使用最廉价、方便的方式去学习和实践,因为VM可以让你肆意捣鼓),为了提供工作效率,我在主机windows上使用Xshell连接两个虚拟机(具体如何连接的,请阅读上一篇文章《在window7主机上连接虚拟机上的Centos系统》)。
  • 关闭两台虚拟机的防火墙:
systemctl stop firewalld
  • 主库 192.168.232.129:3306、从库 192.168.232.128:3306。其中,主库上比从库上多了一个test数据库,因此,此次演示将使用test作为操作对象。
  • 在MySQL主从复制开始工作之前,我们需要让主从库的数据库(test)达到相同状态。因此需要依次做如下操作:
    备份主库的test
mysql -uroot -p
use test;
flush tables with read lock; #将test数据库的表锁上,防止在配置期间有新的改动
mysqldump -uroot -p  test > /root/Desktop/test.sql  #导出位置自行设置
unlock tables; #备份完成后解锁数据库表

导入从库

mysql -uroot -p
create database test;
use test;
source /root/test.sql  #从主库导出的备份文件

配置主数据库

  • 建立用于同步的账号 rep,这个账号是用于代替从库访问主库相关权限的角色,你可以简单地理解为快递员:
grant replication slave on *.* to 'rep'@'192.168.232.129' identified by '123456';
flush privileges;
  • 编辑配置文件my.cnf,在[mysqld]配置段里增加以下几行:
server-id = 1 #值为1~2^32-1 区间内
log-bin=mysql-bin  #操作记录存储的二进制日志文件
log-err=log-err    #错误日志文件
binlog_format=STATEMENT
binlog-ignore-db=mysql  #忽略主库对mysql数据库的操作
binlog-do-db=test   #只复制test数据

image

检查效果:

show master status;

image

配置从数据库

  • 编辑配置文件my.cnf,在[mysqld]配置段里增加以下几行:
server-id = 2  #值为1~2^32-1 区间内,但一定不能和主库的值相
relay-log = mysql-relay  #将主服务器的二进制日志读取过来记录到此处,也可使用默认设置

image

重启mysql服务:

service mysql restart
  • 修改从库的master info:
change master to 
    MASTER_HOST='192.168.232.129',   #主库的host
    MASTER_PORT=3306,                #主库的port
    MASTER_USER='rep',               #在主库创建的那个“快递员”
    MASTER_PASSWORD='123456',        
    MASTER_LOG_FILE='mysql-bin.000019',  #主库show master status中显示的
    MASTER_LOG_POS=154;    #主库show master status中显示的

cat /path/data/master.info 可以看到以下信息:
image
启动slave:

start slave;

查看slave状态:

show slave status;

得到如下结果:
image

说明配置成功了。

测试主从同步

尝试在主库对test进行增、删、改、查等操作,通过对主库的

show master status\G

和从库的

show slave status\G

可以发现,从库的Read_Master_Log_Pos 会随着主库的Position 变化而变化(或者直接进行数据库表的数据对比),说明了从库已经和主库进行了同步操作。

扩展

  • 如果想让主从的所有库表都进行同步,那么可以将主库的配置去掉以下两项:
binlog-ignore-db=mysql  #忽略主库对mysql数据库的操作
binlog-do-db=test   #只复制test数据
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
6月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
302 11
|
5月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
581 30
|
5月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1349 26
|
7月前
|
SQL 网络协议 关系型数据库
MySQL 主从复制
主从复制是 MySQL 实现数据冗余和高可用性的关键技术。主库通过 binlog 记录操作,从库异步获取并回放这些日志,确保数据一致性。搭建主从复制需满足:多个数据库实例、主库开启 binlog、不同 server_id、创建复制用户、从库恢复主库数据、配置复制信息并开启复制线程。通过 `change master to` 和 `start slave` 命令启动复制,使用 `show slave status` 检查同步状态。常见问题包括 IO 和 SQL 线程故障,可通过重置和重新配置解决。延时原因涉及主库写入延迟、DUMP 线程性能及从库 SQL 线程串行执行等,需优化配置或启用并行处理
203 40
|
7月前
|
关系型数据库 MySQL 数据库
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
随着数据量增长和业务扩展,单个数据库难以满足需求,需调整为集群模式以实现负载均衡和读写分离。MySQL主从复制是常见的高可用架构,通过binlog日志同步数据,确保主从数据一致性。本文详细介绍MySQL主从复制原理及配置步骤,包括一主二从集群的搭建过程,帮助读者实现稳定可靠的数据库高可用架构。
388 9
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
|
5月前
|
存储 Oracle 关系型数据库
MySQL 8.4 配置SSL组复制(八个步骤)
MySQL 8.4 配置SSL组复制(八个步骤)
253 0
|
6月前
|
SQL 关系型数据库 MySQL
seatunnel配置mysql2hive
本文介绍了SeaTunnel的安装与使用教程,涵盖从安装、配置到数据同步的全过程。主要内容包括: 1. **SeaTunnel安装**:详细描述了下载、解压及配置连接器等步骤。 2. **模拟数据到Hive (fake2hive)**:通过编辑测试脚本,将模拟数据写入Hive表。 3. **MySQL到控制台 (mysql2console)**:创建配置文件并执行命令,将MySQL数据输出到控制台。 4. **MySQL到Hive (mysql2hive)**:创建Hive表,配置并启动同步任务,支持单表和多表同步。
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
584 1
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!

推荐镜像

更多