centos7 mysql 基本测试(7)主从并行简单测试
参考
MySQL 数据库同步之主从复制实践及故障处理
https://blog.51cto.com/phpervip/11244092
MySQL实战 主从同步(原理+实战)
https://developer.aliyun.com/article/1048072
《MySQL高级篇》十六、主从复制
https://blog.youkuaiyun.com/LXYDSF/article/details/133461269
重启MySQL服务使配置生效。
注意:并行复制需要slave的硬件资源充足,并且确保网络通信和IO性能不是瓶颈。不是所有的应用场景都适合并行复制,比如写密集型应用或者slave负载已经很高的情况下,开启并行复制可能会导致性能下降。
MySQL 5.6及以上版本支持并行复制。在配置slave时,可以通过设置slave_parallel_workers参数来指定并行复制的线程数。
以下是一个配置并行复制的例子:
在MySQL的slave配置文件中(my.cnf或者my.ini),添加或修改以下配置项:
[mysqld]
# 设置并行复制的工作线程数,默认为0,表示不并行
slave_parallel_workers = 4
# 设置SQL线程每个工作线程的执行的字节数上限,防止由于大事务占用过多I/O资源
slave_parallel_type = LOGICAL_CLOCK
slave_parallel_workers = 4
在MySQL命令行中设置:
SET GLOBAL slave_parallel_workers = 4;
SET GLOBAL slave_parallel_type = 'LOGICAL_CLOCK';
111
mysql 主从 并行 slave_parallel_workers
slave_parallel_workers是MySQL中的一个配置参数,用于指定并行复制时的工作线程数量。当启用了并行复制(即基于行的复制)时,MySQL会尝试并行应用日志事件,以减少复制延迟。
要配置并行复制,请按照以下步骤操作:
确保你的MySQL版本支持并行复制。
在my.cnf(或my.ini)配置文件中设置slave_parallel_workers参数。
重启MySQL服务以使更改生效。
例如,要设置并行工作线程数为4,你可以在my.cnf中添加以下行:
[mysqld]
slave_parallel_workers = 4
然后,你可以通过运行以下SQL命令来查看更改是否生效:
SHOW VARIABLES LIKE 'slave_parallel_workers';
请注意,并行复制可能会带来数据一致性方面的挑战,因此在配置并行复制前应当充分测试和了解你的数据库环境。
222
Mysql主从复制之skip-slave-start,slave-parallel-type,slave-parallel-workers参数详解和测试
https://blog.youkuaiyun.com/liys0811/article/details/132827438
参数1)skip-slave-start = 0
参数详解:禁用skip-slave-start,slave进程会随着mysql启动而启动。skip-slave-start=1为开启
测试:当前slave的查不到该参数,且/etc/my.cnf也没有配置该文件,重启服务后,发现slave进程自动启动,且停服务期间master插入的数据也复制过来了,看了这个参数默认是skip-slave-start = 0
参数2)slave-parallel-type = LOGICAL_CLOCK
slave-parallel-workers = 16
参数详解:mysql在5.7中加入了slave_parallel_type,默认值是database,需要改成基于时钟逻辑的LOGICAL_CLOCK。slave_parallel_workers数,默认为0,按需修改,可以根据服务器的配置来开启相应的并行度。将slave_parallel_type设置为’LOGICAL_CLOCK’,slave_parallel_workers设置为大于0的值,即算是开启了并行复制
当前使用的是默认值:
[root@localhost:mytest1]>show variables like ‘%slave_parallel%’;
我们在/etc/my.cnf写入这个参数slave-parallel-type = LOGICAL_CLOCK,slave-parallel-workers = 16然后重启服务,发现已经有16个复制线程了
注意将这个database修改为logical_clock,在此之前,需要先关闭sql_thread
stop slave sql_thread;
set global slave_parallel_type=‘LOGICAL_CLOCK’;
start slave sql_thread;
1
> slave_parallel_workers=20
> slave_parallel_type = LOGICAL_CLOCK
> slave_pending_jobs_size_max=1G
> sync_binlog=1
> max_allowed_packet = 256M
遇到问题
Coordinator stopped because there were error(s) in the worker(s).
The most recent failure being: Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql