网站制作学习网Database→正文:从库Exec_Source_Log_Pos慢于Relay_Log_Space解决方案
字体:

从库Exec_Source_Log_Pos慢于Relay_Log_Space解决方案

Database 2024/12/4 15:05:57  点击:不统计


http://%77w%77%2E%66%6F%72%61%73%70%2E%63n网站制作学习
 在做主从同步时 出现了 mysql 从库读主库log,但是在从库执行很慢的情况,导致 Seconds_Behind_Source逐渐增大,数据库同步慢,无法做到一致,出现 从库Exec_Source_Log_Pos慢于Relay_Log_Space 即,能从主库顺利同步 binlog ,但本地从库无法快速的执行。
 
从以下几个方向去处理:
一 先看以下 从库服务器cpu, I/O状态,如果有问题,可能是出现了等待
 
二 如果没有资源问题,那通过下面几个调整 均在[mysqld] 下调整
(1)调整同步执行线程数量 
slave_parallel_workers = 8
slave_parallel_type = LOGICAL_CLOCK
(2)调整innodb 并发数量 ,默认为1 ,根据实际核心数调整
innodb_thread_concurrency = 16
(3) 调整innodb 下面的缓存数,根据实际内存调节
innodb_buffer_pool_size = 8G
innodb_log_file_size = 1024M
innodb_log_buffer_size = 128M
innodb_flush_log_at_trx_commit = 1
(4)考虑io 调整innodb_flush_log_at_trx_commit 为2 默认1  它确保每次事务提交时都会将日志刷写到磁盘,保证高可靠性。但在复制性能较低的情况下,可以考虑将其设置为 2 或 0,以减少 I/O 负担
innodb_flush_log_at_trx_commit=2
(5) 调整读取缓存大小 
read_buffer_size = 64M
read_rnd_buffer_size = 64M
thread_cache_size = 1M
tmp_table_size = 256M
 (6)调整 innodb_flush_log_at_trx_commit 为 2
innodb_flush_log_at_trx_commit 的值
0: 日志仅写入 InnoDB 的内存缓冲区,不会立即写入文件系统或磁盘,性能最好,因为减少了磁盘写入操作。如果崩溃丢失1秒数据
1:每次事务提交时,InnoDB 会将日志从内存缓冲区写入文件系统并同步刷新到磁盘。高安全 性能开销较高,因为每次提交都会触发磁盘写入和刷新操作。
2: 每次事务提交时,InnoDB 会将日志从内存缓冲区写入文件系统,但不会立即刷新到磁盘。在性能和数据安全之间取得平衡。相比 1 性能更高,安全性也优于 0。崩溃可能丢失1秒数据
 
我遇到的问题是,从库是服务器弱单核,而主库是多核心多库并发执行,导致 读取binlog可以顺利同步,但是由于单核执行,1个核心100%无法满足现在大量的sql执行。主要调节 (2) 即可。

http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E

·上一篇:MySQL Group Replication 配置mysql 主从同步, mysql 一主多从 >>    ·下一篇:mysql同步更改从库relay_log位置 >>
推荐文章
最新文章