【MySQL】主从复制(二)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 【MySQL】主从复制(二)

2.3.2 向主服务器的数据库中插入一些行数据:

INSERT INTO mytable (id, name, age) VALUES (1, 'John', 30);
INSERT INTO mytable (id, name, age) VALUES (2, 'Mary', 25);

2.3.3 启用 MySQL 的二进制日志(binlog):

在 MySQL 配置文件 my.cnf 中添加以下信息:

[mysqld]
log-bin=mysql-bin
server-id=1

2.3.4 在从服务器上启用混合型复制:

在 MySQL 配置文件 my.cnf 中添加以下信息:

[mysqld]
server-id=2
log-slave-updates=TRUE
binlog-format=MIXED
relay-log=relay-bin

2.3.5 在从服务器上添加主服务器的信息:

CHANGE MASTER TO MASTER_HOST='主服务器的IP地址',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='主服务器的binlog文件名',
MASTER_LOG_POS=主服务器的binlog偏移量;

其中,replication_user 和 replication_password 是主服务器上的授权访问从服务器的账号和密码;主服务器的binlog文件名和偏移量可以通过 SHOW MASTER STATUS 命令获得。

2.3.6 开始混合型复制:

START SLAVE;

2.3.7 在主服务器上更新一些行数据和插入数据:

UPDATE mytable SET age=35 WHERE id=1;
INSERT INTO mytable (id, name, age) VALUES (3, 'Tom', 20);

2.3.8 在从服务器上检查数据同步情况:

SELECT * FROM mydatabase.mytable;

可以发现,从服务器上的 mytable 表的前两条数据是通过行复制同步而来的,而第三条数据是通过语句复制同步而来的。

需要注意的是,在混合型复制中,如果 SQL 语句无法被正确解析,就会使用行复制进行数据同步。因此,如果在使用混合型复制的过程中出现了数据不一致的情况,需要检查主从服务器之间的数据同步方式是否一致,以及 SQL 语句是否可以被正确解析。

3. 主从复制应用场景

MySQL主从复制可以应用于以下场景:

3. 1 数据备份

主从复制可以实现主服务器的数据备份。从服务器可以作为备份服务器,当主服务器数据丢失或出现故障时,可以快速启用备份服务器以恢复数据。

以下是数据备份的操作示例:

  1. 在主服务器上启用二进制日志(binlog)功能: 在 MySQL 配置文件 my.cnf 中添加以下信息:
[mysqld]
log-bin=mysql-bin
server-id=1
  1. 在从服务器上启用基于语句的复制: 在 MySQL 配置文件 my.cnf 中添加以下信息:
[mysqld]
server-id=2
binlog-format=STATEMENT
log-slave-updates=TRUE
relay-log=relay-bin
  1. 将主服务器的数据复制到从服务器:

在从服务器上添加主服务器的信息:

CHANGE MASTER TO MASTER_HOST='主服务器的IP地址',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='主服务器的binlog文件名',
MASTER_LOG_POS=主服务器的binlog偏移量;

其中,replication_user 和 replication_password 是主服务器上的授权访问从服务器的账号和密码;主服务器的binlog文件名和偏移量可以通过 SHOW MASTER STATUS 命令获得。

  1. 然后,在从服务器上启动复制流程:
START SLAVE;
  1. 手动备份数据: 在从服务器上,使用 mysqldump 命令备份数据库数据到本地文件,例如:
mysqldump -u root -p mydatabase > mydatabase.sql
  1. 自动备份数据: 对于自动备份,可以通过配置 crontab 定时任务,在特定时间自动备份数据库数据。例如:
0 0 * * * mysqldump -u root -p mydatabase > /backup/mydatabase-`date +"%Y%m%d"`.sql

以上命令指定在每天 0 点执行备份操作,并将备份文件保存在 /backup 目录下,以日期为后缀进行命名,如 mydatabase-20211010.sql。

需要注意的是,备份文件需要存储在安全的地方,以免数据泄露或丢失。另外,备份操作可能会影响服务器的性能,因此需要根据实际情况选择合适的备份时间。

3. 2 负载均衡

主从复制可以通过将查询请求转发到从服务器上进行读操作,以减轻主服务器的负载,提高整体的并发处理能力。

以下是负载均衡的操作示例:

  1. 在主服务器上启用二进制日志(binlog)功能:

在 MySQL 配置文件 my.cnf 中添加以下信息:

[mysqld]
log-bin=mysql-bin
server-id=1
  1. 在从服务器上启用基于语句的复制:

在 MySQL 配置文件 my.cnf 中添加以下信息:

[mysqld]
server-id=2
binlog-format=STATEMENT
log-slave-updates=TRUE
relay-log=relay-bin
  1. 将主服务器的数据复制到从服务器:

在从服务器上添加主服务器的信息:

CHANGE MASTER TO MASTER_HOST='主服务器的IP地址',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='主服务器的binlog文件名',
MASTER_LOG_POS=主服务器的binlog偏移量;

其中,replication_user 和 replication_password 是主服务器上的授权访问从服务器的账号和密码;主服务器的binlog文件名和偏移量可以通过 SHOW MASTER STATUS 命令获得。

然后,在从服务器上启动复制流程:

START SLAVE;
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 存储 关系型数据库
MySQL的主从复制&主从同步
MySQL的主从复制&主从同步
31 0
|
4月前
|
SQL 关系型数据库 MySQL
面试官:说一下MySQL主从复制的原理?
面试官:说一下MySQL主从复制的原理?
95 0
面试官:说一下MySQL主从复制的原理?
|
4月前
|
SQL 关系型数据库 MySQL
MySQL主从复制
MySQL主从复制
|
19天前
|
负载均衡 容灾 关系型数据库
mysql主从复制
mysql主从复制
34 1
|
1月前
|
SQL 存储 运维
MySQL高可用性:主从复制和集群
MySQL高可用性:主从复制和集群
37 0
|
4月前
|
关系型数据库 MySQL Linux
Linux下搭建MySQL主从复制之一主一从架构
Linux下搭建MySQL主从复制之一主一从架构
60 0
|
18天前
|
SQL 关系型数据库 MySQL
mysql主从复制
mysql主从复制
|
1月前
|
SQL 网络协议 关系型数据库
【怒怼大厂面试官】听说你精通MySQL?来说说MySQL主从复制
面试官:MySQL主从复制了解吧?嗯嗯了解的。主要是利用了MySQL的Binary Log二进制文件。那我把二进制文件丢给从库,从库复制整个文件吗。噢噢不是的。
48 1
【怒怼大厂面试官】听说你精通MySQL?来说说MySQL主从复制
|
1月前
|
监控 负载均衡 关系型数据库
|
3月前
|
SQL 负载均衡 关系型数据库
MySQL(六)主从复制
MySQL(六)主从复制
27 0