当前位置: 首页> 游戏> 网游 > 北京营销网站建设设计_免费出装修效果图_个人网站设计内容_广州网站seo公司

北京营销网站建设设计_免费出装修效果图_个人网站设计内容_广州网站seo公司

时间:2025/7/13 23:05:47来源:https://blog.csdn.net/weixin_42375949/article/details/143201474 浏览次数:0次
北京营销网站建设设计_免费出装修效果图_个人网站设计内容_广州网站seo公司

目录

  • 一:MySQL 主从复制介绍
  • 二: 异步单线程主从复制
    • 1. 主服务器配置流程
    • 2. 从服务器配置
  • 二:异步多线程主从复制
    • 1. 配置流程

一:MySQL 主从复制介绍

MySQL 主从复制是MySQL官方提供的一种数据备份容灾和负载均衡技术。

  • 数据容灾:主从复制通过将主服务器(master)上的数据更改实时复制到从服务器(slave)上,实现数据的实时备份。

  • 负载均衡:配置好主从复制后,可以将写操作(INSERT、UPDATE、DELETE)指向主服务器,将读操作(SELECT)分散到从服务器上,从而实现读写分离。


实现原理
1、主服务器上,所有的数据更改操作都会记录到二进制日志(binary log)中。
2、从服务器上:通过 I/O 线程读取主服务器上的二进制日志,并将这些日志写入自己的中继日志(relay log)。然后SQL 线程读取中继日志并执行其中的 SQL 语句,从而使从服务器上的数据与主服务器保持一致。

二: 异步单线程主从复制

一般我们配置的主从复制都是这种,主服务器将更改的数据写入二进制日志后,不管从服务器是否已经完成同步。 所以负载高的时候会有延迟,并且主服务器挂了可能会导致部分数据的丢失。

  • 启动单个IO线程读取主服务器的二进制日志

  • 启动单个SQL线程来读取中继日志并执行其中的 SQL 语句,实现数据同步。

1. 主服务器配置流程

(1)配置二进制日志

[mysqld]
server-id               = 145  # 需要唯一 
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 14
max_binlog_size         = 256M

(2)创建复制账户,从服务器通过这个账户来获取二进制日志中的数据

mysql> create user replica@'%' identified by 'eHIGH2014';
Query OK, 0 rows affected (0.01 sec)# 用于复制的用户需要有 REPLICATION SLAVE 这两个权限
mysql> grant all privileges ON *.* to replica@'%';
Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2. 从服务器配置

(1)开启中继日志(不用手动配置,系统自动就开启了的)

(2)设置一个唯一的 server id

[mysqld]
server-id               = 146

(3)从服务器使用指定的用户和连接信息从主服务器获取二进制日志(binary log)数据

change master tomaster_host="192.168.12.145",master_port=3306,master_user="replica",master_password="eHIGH2014",  master_log_file='mysql-bin.000001',  -- 明确指定日志文件master_log_pos=157;   -- 明确指定日志位置
Query OK, 0 rows affected, 8 warnings (0.03 sec)  

(1)如果没有指定从哪个二进制文件(master_log_file)和具体的位置(master_log_pos)开始复制,默认就是从主服务器当前的二进制日志位置开始复制。

(2)执行这个步骤的时候,IO线程会连接到主服务器,此时主服务器会开启一个dump 线程,通过dump线程将主服务器上的二进制日志事件发送给从服务器的 I/O 线程。


(4)启动两个线程,开始主从复制

# 方法一:不指定线程名称,两个线程会一起开启
START SLAVE;# 方法二:分别开启两个线程
START SLAVE IO_THREAD;
START SLAVE SQL_THREAD;

(5)验证复制状态

SHOW SLAVE STATUS\G

主要关注 I/O线程 和 SQL线程 是否在运行

# 两个都是YES,说明同步正常Slave_IO_Running: YES
Slave_SQL_Running: YES

二:异步多线程主从复制

这种方式是为了解决单线程复制时,主机和从机复制延迟的问题。通过多线程来提高复制性能。

  • I/O 线程始终只有一个。这是因为主服务器上的二进制日志是线性顺序写入的,单个 I/O 线程足以处理这个顺序读取和写入中继日志的工作。

  • 可以配置多个 SQL 线程,每个 SQL 线程并行处理中继日志中的不同事件,以提高复制的并行度和性能。

从服务器使用多个 SQL 线程并行处理不同的复制工作负载,从而加速从服务器应用二进制日志事件的过程。

1. 配置流程

配置流程和异步单线程主从复制流程一样,但是从服务器需要再添加以下配置来配置线程数量:

[mysqld]
# 启用 4 个并行 SQL 线程,指定SQL线程数量,一般多少个CPU就指定数量为几。
slave_parallel_workers = 4# 并行复制的调度策略设置为数据库级别(默认就是),这适合多个数据库主从复制且不用复杂化配置
slave_parallel_type = DATABASE
关键字:北京营销网站建设设计_免费出装修效果图_个人网站设计内容_广州网站seo公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: