首页 > 教程 > MySQL复制模式及配置步骤详解

MySQL复制模式及配置步骤详解

时间:2024-10-22 | 来源: | 阅读:186

话题: S 复制 配置

1、异步复制:这是MySQL默认的复制模式。在这种模式下,主库在执行完客户端提交的事务后会立即将结果返回给客户端,并不关心从库是否已经接收并处理。这种模式的优点是实现简单,但缺点是如果主库崩溃,已经提交的事务可能没有传到从库,导致数据不一致。 2、全同步复制:在这种模式下,主库执行完一个事务后,需要

MySQL提供了多种复制模式,包括异步复制、全同步复制、半同步复制、增强半同步复制和组复制。每种模式都有其特点和适用场景。以下是对各种复制模式的详细介绍:

1、异步复制:这是MySQL默认的复制模式。在这种模式下,主库在执行完客户端提交的事务后会立即将结果返回给客户端,并不关心从库是否已经接收并处理。这种模式的优点是实现简单,但缺点是如果主库崩溃,已经提交的事务可能没有传到从库,导致数据不一致。

2、全同步复制:在这种模式下,主库执行完一个事务后,需要等待所有从库都执行了该事务才能返回给客户端。这种模式的优点是数据一致性高,但缺点是性能影响较大,因为需要等待所有从库的确认。

3、半同步复制:这种模式介于异步复制和全同步复制之间。主库在执行完客户端提交的事务后,会等待至少一个从库接收到并写入relay log中才返回给客户端。这种模式提高了数据的安全性,但会造成一定的延迟。

4、增强半同步复制:这种模式在半同步复制的基础上进一步增强了数据安全性。主库将每个事务写入binlog后,等待从库刷新到磁盘才返回给客户端。这种模式的优点是进一步减少了数据丢失的风险,但缺点是可能会增加事务的延迟。

5、组复制:这种模式是一种高级的复制技术,支持多主多从架构,适用于读写参半的场景。它通过组内节点间的相互通信和投票机制来保证数据的一致性和高可用性。

在实际应用中,根据业务需求和性能要求选择合适的复制模式非常重要。

接下来,我们将详细介绍如何配置MySQL主从复制,以实现数据同步。

1、获取MySQL镜像

在node1和node2上分别拉取mysql镜像,该镜像mysql版本是8.4.3,执行以下命令:

docker pull mysql:8

2、获取默认配置文件

启动容器,把配置文件copy到本地,(node1和node2同步操作)

# 在/opt/下创建一个mysql目录
# 临时启动一下mysql
docker run -d \
    --name mysql-master \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:8
    
# 把数据和配置目录copy到本地
node1上执行
docker cp mysql-master:/etc/my.cnf /opt/mysql/my.cnf
node2上执行
docker cp mysql-master:/etc/my.cnf /opt/mysql/my.cnf

3、配置启动主库

在node1修改主库配置文件,编辑以下配置:

[mysqld]
#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 2的32次方-1,默认为1
server-id=1
#是否只读,1 代表当前服务器只读(不能做增删改操作), 0代表读写
read-only=0
# 设置日志格式,默认值ROW。row(记录行数据)  statement(记录sql)  mixed(混合模式)
binlog_format=STATEMENT
# 二进制日志名,默认binlog
log-bin=master_binlog
# 设置需要复制的数据库,默认复制全部数据库
#binlog-do-db=test
# 设置不需要复制的数据库
# binlog-ignore-db=test

4、在node1上启动主库

执行以下命令:

docker run -d \
    --name mysql-master \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /opt/mysql/mysql_data:/var/lib/mysql \
    -v /opt/mysql/my.cnf:/etc/my.cnf \
    --restart=always \
    --privileged=true \
    mysql:8

5、创建主备账号

在主库中创建专门用于复制的账户,并授予复制所需的权限。

# 创建专门用于复制的账户
CREATE USER 'backups'@'%' IDENTIFIED BY 'backups';
# 授予此帐户复制所需的权限
GRANT REPLICATION SLAVE ON *.* TO 'backups'@'%';

获取复制源二进制日志坐标,要配置副本在正确的点开始复制过程,需要在二进制日志中记下源的当前坐标。要获取源二进制日志坐标,通过使用命令行客户端连接到源来启动源上的会话,并通过执行以下语句刷新所有表并阻止写入语句。

6、配置启动从库

在node2上编辑从库配置文件,并启动从库。

7、测试

连接主库和从库,创建数据库表并插入数据,查看从库是否同步。

至此,主从同步已经完成。如果需要一主多从,只需要在多部署几个从库,按照上面从库的部署方式就可以了。

如果感觉写的还能看,可以关注公众号,会将最新消息推送给你。


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网