前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql或者mariadb多线程复制

mysql或者mariadb多线程复制

作者头像
保持热爱奔赴山海
发布2019-09-18 11:08:23
8230
发布2019-09-18 11:08:23
举报
文章被收录于专栏:饮水机管理员饮水机管理员

本页内容整理自《MySQL管理之道》的读书笔记。贴出来便于以后查阅。

多线程复制演示:

以MySQL5.6为例,

在slave上执行下面几条命令:

代码语言:javascript
复制
    > stop slave;
    > set global slave_parallel_workers = 4;  【MariaDB里面是slave_parallel_threads】
    > start slave;
    > show full processlist;可以看到有4个线程 Waiting for an event from Coordinator

如果此时在主上有大量的insert操作,可以在slave上执行> select * from mysql.slave_worker_info\G 应该可以查看到worker_id在不断变化,说明是多线程复制在起作用了。

说明:

slave_parallel_workers 即可实现在slave上多线程并发复制。不过,它只能支持一个实例下多个 database 间的并发复制,并不能真正做到多表并发复制。因此在较大并发负载时,slave还是没有办法及时追上master,需要想办法进行优化(比如:尽量将一个库中的表按照业务逻辑拆分成多个库来保存,这样在写操作时候,slave就能开启多线程复制,减少了同步的时延。)

此外,建议修改my.cnf,增加2行(默认这个info_file是文件的,不写入数据库的)

代码语言:javascript
复制
relay_log_info_repository = table
master_info_repository = table

单单这样还不够,默认这2张表是MyISAM的,不安全还要转换下

代码语言:javascript
复制
> alter table slave_master_info engine innodb;
> alter table slave_relay_log_info engine innodb;
> alter table slave_worker_info engine innodb;

这样的话,可防止表损坏,在损坏后可以自行修复。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-07-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档