这几天在研究mysql数据同步,查看一些资料发现5.7版本可以使用gtid来实现主备数据库的数据同步。

经过一些折腾,搭建完毕,在master上建库、建表、插入数据,在从库上都能看到。看来一切正常。

随着测试的深入发现了一些问题,通过一个存储过程批量往表里插入10000条数据,发现速度慢的离奇。

如果不开启gtid只是单个数据库的话速度很快。

存储过程如下:

DELIMITER ;;

create procedure vip5()

begin

declare i int default 0;

while i < 100000

do

insert into a values(1,2);

set i = i + 1;

end while;

end;;

后来发现原来是autocommit(自动提交,把数据从内存写入磁盘)搞得鬼,在执行存储过程前先执行set autocommit=0,问题解决。

my.cnf配置如下:

master:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

gtid-mode = on

enforce-gtid-consistency = 1

log-bin = /var/lib/mysql/mysql-bin-gtid

server-id = 3306100

binlog_format = row

skip_slave_start = 1

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

sync_binlog = 1

#-------------------gobal variables------------#

max_connect_errors = 100000

max_connections = 10000

wait_timeout = 3600

interactive_timeout = 3600

net_read_timeout = 3600

net_write_timeout = 3600

table_open_cache = 2000

table_definition_cache = 2000

open_files_limit = 20000

thread_cache_size = 512

#thread_handling = pool-of-threads

#thread_pool_max_threads = 5000

#thread_pool_size = 8

character-set-server = utf8

collation-server = utf8_general_ci

skip_external_locking

performance_schema = 1

myisam_recover_options = DEFAULT

skip-name-resolve

local_infile = 0

lower_case_table_names = 0

key_buffer_size = 384M

max_allowed_packet = 128M

master_info_repository = table

relay_log_info_repository = table

#--------------------innoDB------------#

innodb_buffer_pool_size = 1G

#innodb_data_file_path = ibdata1:200M:autoextend

innodb_flush_log_at_trx_commit = 0

innodb_io_capacity = 3000

innodb_lock_wait_timeout = 30

innodb_log_buffer_size = 8M

innodb_log_file_size = 200M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 85

innodb_read_io_threads = 8

innodb_write_io_threads = 8

innodb_support_xa = 1

innodb_thread_concurrency = 8

innodb_file_per_table

innodb_rollback_on_timeout

#------------session variables-------#

join_buffer_size = 8M

bulk_insert_buffer_size = 32M

max_heap_table_size = 96M

tmp_table_size = 96M

read_buffer_size = 16M

sort_buffer_size = 4M

read_rnd_buffer_size = 32M

expire_logs_days = 15

max_binlog_size = 200M

binlog_cache_size = 64k

log_warnings = 1

long_query_time = 0.125

##log_timestamps=SYSTEM

#---------------replicate--------------#

#slave-parallel-threads = 4

slave_parallel_workers=4

#slave_parallel_type='logical_clock'

replicate-ignore-db = mysql_identity

init_slave = 'set sql_mode=STRICT_ALL_TABLES'

log-slave-updates = 1

slave:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

gtid-mode = on

enforce-gtid-consistency = 1

log-bin = /var/lib/mysql/mysql-bin-gtid

server-id = 3306101

binlog_format = row

skip_slave_start = 1

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

sync_binlog = 1

#-------------------gobal variables------------#

max_connect_errors = 100000

max_connections = 10000

wait_timeout = 3600

interactive_timeout = 3600

net_read_timeout = 3600

net_write_timeout = 3600

table_open_cache = 2000

table_definition_cache = 2000

open_files_limit = 20000

thread_cache_size = 512

#thread_handling = pool-of-threads

#thread_pool_max_threads = 5000

#thread_pool_size = 8

character-set-server = utf8

collation-server = utf8_general_ci

skip_external_locking

performance_schema = 1

myisam_recover_options = DEFAULT

skip-name-resolve

local_infile = 0

lower_case_table_names = 0

key_buffer_size = 384M

max_allowed_packet = 128M

master_info_repository = table

relay_log_info_repository = table

#--------------------innoDB------------#

innodb_buffer_pool_size = 1G

#innodb_data_file_path = ibdata1:200M:autoextend

innodb_flush_log_at_trx_commit = 0

innodb_io_capacity = 3000

innodb_lock_wait_timeout = 30

innodb_log_buffer_size = 8M

innodb_log_file_size = 200M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 85

innodb_read_io_threads = 8

innodb_write_io_threads = 8

innodb_support_xa = 1

innodb_thread_concurrency = 8

innodb_file_per_table

innodb_rollback_on_timeout

#------------session variables-------#

join_buffer_size = 8M

bulk_insert_buffer_size = 32M

max_heap_table_size = 96M

tmp_table_size = 96M

read_buffer_size = 16M

sort_buffer_size = 4M

read_rnd_buffer_size = 32M

expire_logs_days = 15

max_binlog_size = 200M

binlog_cache_size = 64k

log_warnings = 1

long_query_time = 0.125

##log_timestamps=SYSTEM

#---------------replicate--------------#

#slave-parallel-threads = 4

slave_parallel_workers=4

#slave_parallel_type='logical_clock'

replicate-ignore-db = mysql_identity

init_slave = 'set sql_mode=STRICT_ALL_TABLES'

log-slave-updates = 1

mysql commit慢_mysql autocommit问题导致的gtid同步变慢相关推荐

  1. mysql autocommit问题导致的gtid同步变慢

    这几天在研究mysql数据同步,查看一些资料发现5.7版本可以使用gtid来实现主备数据库的数据同步. 经过一些折腾,搭建完毕,在master上建库.建表.插入数据,在从库上都能看到.看来一切正常. ...

  2. mysql ddl 锁_MySQL Online DDL导致全局锁表案例分析

    MySQL Online DDL导致全局锁表案例分析 我这边遇到了什么问题? 线上给某个表执行新增索引SQL, 然后整个数据CPU打到100%, 连接数暴增到极限, 最后导致所有访问数据库的应用都奔溃 ...

  3. mysql 表死锁_MySQL Innodb表导致死锁日志情况分析与归纳

    案例描述在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下:(1)insert into backup ...

  4. mysql 字符集 性能_MySQL字符集不一致导致性能下降25%,你敢信?

    故事是这样的: 我在对MySQL进行性能测试时,发现CPU使用率接近100%,其中80%us, 16%sys,3%wa,iostat发现磁盘iops2000以下,avgqu-sz不超过3,%util最 ...

  5. mysql编码不对_MySQL编码不一致导致乱码问题总结

    使用MySQL常常会出现乱码问题,一般情况下都是因为编码不一致造成,以下提供了MySQL数据编码相关的一些信息,希望会有所帮助. 一.MySQL的编码机制: 1.数据库级别的编码:数据库服务器上允许建 ...

  6. mysql update commit吗_MySQL需要commit么

    mysql在进行如插入(insert)操作的时候需不需要commit,这得看你的存储引擎,如果是不支持事务的引擎,如myisam,则是否commit都没有效的. 推荐课程:MySQL教程. 如果是支持 ...

  7. mysql 回退查询_MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题...

    Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...

  8. mysql 双引号报错_MySQL 双引号导致ERROR 1054 (42S22) at line 1: Unknown column

    问题现象 发现监控进程获取MySQL数据的时候报错导致监控进程报错: mysql: [Warning] Using a password on the command line interface c ...

  9. mysql show 原理_mysql事务的实现原理

    此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中  有一个整体的认识,如下图 如上图所示, ...

最新文章

  1. IBM----Yacc 与 Lex 快速入门
  2. hyperopt中文文档:Recipes
  3. 实习总结之jquery实例
  4. 她不理我了,怎么办?
  5. unity声音组件AudioSource的使用
  6. 【JSON系列】JSON核心知识点总结
  7. Java开发环境!java工程师薪资行情
  8. libspark.swfassist的体会
  9. 【SDOI2008】【P1377】仪仗队
  10. 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
  11. 酷派D530刷机指引之民间ROM
  12. Daily errors about log encoding and web page garbled characters
  13. Android蓝牙源码分析——BTA层消息分发
  14. gnome 如何自定义样式_在Gnome 3中自定义字体
  15. git 不abandon的办法
  16. Log4Qt 日志格式化(TTCCLayout)
  17. latex在参考文献表中不输出网址和doi
  18. PPT批量替换字体、行间距操作
  19. 百度以外可用的离线下载空间
  20. 计算机视觉论文-2021-03-18

热门文章

  1. 呼和浩特机器人光缆设备_工业机器人最坚固配件,虐它千万次,性能依旧
  2. android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解
  3. 和与余数的和同余理解_每日一题 | 第38期:数量关系之余数特性
  4. 焊缝标注vlx实用程序_焊缝标注实例(记住这七个技巧,受益无穷)
  5. JAVA写的爬虫小工具
  6. 免费开源、功能完善、暗黑风格,你会拒绝这款SSH工具吗?
  7. GitHub 大热!也许会成为你心中的OCR开源工具NO1!
  8. 淘宝面试:说一下 ThreadLocal 的原理?网友:现在面试不看源码不行啊~
  9. 皮一皮:我好像知道了什么...
  10. Spring Redis中使用Lua脚本实现高并发原子操作