xtrabackup是拷贝的innodb文件,这种的直接拷贝肯定是数据文件不一致的,拷贝完后会恢复来让数据文件达到一致的状态。恢复是使用的redo log,也是称为事务日志。也是对redo的事务进行重做,然后对未提交的事务进行回滚。xtrabackup在开始的时候会记录lsn号,然后开始拷贝数据文件,xtrabackup会在后台开启线程观察事务日志,并且进行拷贝,因为redo是循环使用的,所以要...
lock_utime= (thd->utime_after_lock - thd->start_utime);void set_time_after_lock() { utime_after_lock= my_micro_time(); MYSQL_SET_STATEMENT_LOCK_TIME(m_statement_psi, (utime_after_l...
transaction_write_set_extraction:这个参数设置hash算法,用来做组复制的冲突检测处理Defines the algorithm used to generate a hash identifying the writes associated with a transaction. If you are using Group Replication, the hash value is used for distributed conflict detection a
group_replication_flow_control_mode这个参数控制着流控的类型,在有大量写延时的情况下需要调整流控的配置组复制确保事务只在组中的大多数成员收到后才提交,并同意所有同时发送的事务之间的相对顺序。如果写入组的总数量不超过组中任何成员的写入容量,则此方法运行良好。 如果是这样,一些成员的写入吞吐量比其他成员少,特别是小于作者成员,那么这些成员就可能开始落后。出现组复制的延时会引起很多的问题,1在别的server上读取的数据是旧的。2别的server需要预留出更多的空间来满足慢
1. Queue ourselves for flushing. 2. Grab the log lock, which might result is blocking if the mutex is already held by another thread. 3. If we were not
开启并行复制后,在日志中会输出下面的一些指标信息 Multi-threaded slave statistics for channel '': seconds elapsed = 192; events assigned = 86017; worker queues filled over overrun level = 0; waited due a Worker queue full = 0; waited due the total size = 0; waited at clock confli
mysql的体系结构,可以分为以下的几个模块:1 server初始化模块2 连接管理器3 线程管理器4 连接线程5 用户认证模块6访问控制7解析8命令分发9 查询缓存10 优化器11 表管理12 表定义模块13表维护模块14状态报告模块15抽象存储引擎接口16存储引擎实现17日志记录18 复制master19 复制slave20 客户端服务端api21 低级别的网络io api22 核心api在书中提到,select命令会被传递到优化器上,dml ddl会转发到
https://bugs.mysql.com/bug.php?id=79549Regression: “unknown column” for outer computed values used inside a subquery关联自查询中使用外部的别名,无法识别的问题,开发时候需要注意下
在捕获mysql变更上,有一些组件可以直接使用的,maxwell ,databus,canal,这三个工具上maxwel足够简单支持mysql到kafak,databus比较复杂,需要自
innobackupex --defaults-file=/data/mysql_3320/my3320.cnf --user=mybackup --password=‘qkyo9eGlf0DCGo3x7UHU’ --socket=/tmp/mysql_3320.sock --slave-info --safe-slave-backup --no-timestamp /data/mysql_backup/3320innobackupex --apply-log /data/mysql_b.
oracleSQL> select * from dba_test;ID50session a:SQL> update dba_test set id=id-10;1 row updated.SQL> commit;在commit前执行session bsession b:SQL> update dba_test set id=id-30;–被a阻塞,a提交后,1 row updated.SQL> select * from dba_test;I
修改了mysql的源码后,就能按照,源码编译部署的步骤进行部署,打成一个解压即用的包。mkdir debugcd debugcmake … -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/user/local/mysql57/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3309 -DMYSQL_USE
对一个innodb来说,限制并发线程的主要目的是减少上下文切换导致的性能问题。在有助于最大程度地减少线程之间的上下文切换的情况下,InnoDB可以使用多种技术来限制并发执行的操作系统线程的数量(从而限制在任何时间处理的请求的数量)。当InnoDB从用户会话接收到新请求时,如果同时执行的线程数处于预定义的限制内,则新请求将休眠一小段时间,然后再次尝试。睡眠后无法重新安排的请求被放入先进/先出队列,并最终得到处理。等待锁的线程不计入同时执行的线程数。您可以通过设置配置参数innodb_thread_conc
在debian的系统上进行mysqld 初始化的操作,但是没有看到有系统库生成,导致无法启动,指定了defaults-file依然不行。需要加–no-defaults添加参数–no-defaults,进行初始化。并且,切记要放在参数的首位!http://www.voidcn.com/article/p-zzxrezio-zp.html...
更新空行不会开启2阶段提交,没有prepare阶段开始执行begin命令#endif case SQLCOM_BEGIN: if (trans_begin(thd, lex->start_transaction_opt)) goto
从下面几点对比了MHA和Orchestrator
组提交参数:binlog_group_commit_sync_delayControls how many microseconds the binary log commit waits before synchronizing the binary log file to disk.
半同步中如果在主服务器端启用了半同步复制,并且至少有一个半同步从服务器,则在主服务器上执行事务提交的线程将阻塞并等待,直到至少一个半同步从服务器确认已接收到该事务的所有事件为止,或者直到 发生超时。从属仅在将事件写入其中继日志并刷新到磁盘后才确认收到事务的事件如果发生超时而没有任何从属服务器确认该事务,则主服务器将还原为异步复制。 当至少有一个半同步从属服务器赶上时,主服务器将返回到半同步复制必须在主服务器和从服务器上都启用半同步复制。 如果在主服务器上禁用了半同步复制,或者在主服务器上但没有从属服
xtrabckup工具的备份优化,添加了下面的参数Options summary–ftwrl-wait-timeout (seconds) - how long to wait for a good moment. Default is 0, not to wait.–
写了一个程序,解析了MySQL的系统表空间和dump数据字典头,只是用于尝试以及学习,在实际中看不到使用的场景,所以只实现这2部分。gtihub 地址: https://github.com/baixiaoyu/gibd系统表空间解析输出部分日志输出内容如下:...
这个脚本能获取指定时间内的大事务信息。分别通过大小,影响行数及执行时间进行排序输出。输出的结果中有获取指定事务的命令,在排查大事务方面比较方便。输出结果实例:------order by rows-------trx 61824725984 start at:2021--06--17 12:23:06 from line: 4104 to line: 4515 has 8
MySQL数据对比是常见的日常任务,使用pt-checksum 只能对比主从复制的数据,并且效率和使用上也不太方便。因此写了一个对比的工具,经过测试对比50
MySQL 常用的几种Binlog Server有mysqlbinlog black hole maxscale.mysqlbinlog只是用来做纯binlog file的接受保存,只是一个命令启动了一个进程不停的接收。black hole是一种存储引擎,因此它是一个数据库实例,可以用来中继复制,maxscale也能用来中继复制,maxscale只适用于gtid复制以及MariaDB servers的复制,black hole 没有这个限制。MaxScale的使用https://mariadb.com/
Aug 29 03:15:52 dba1 orchestrator[8092]: dial tcp 192.168.36.131:3306: connect: connection refusedAug 29 03:15:52 dba1 orchestrator: [mysql] 2021/08/29 03:15:52 packets.go:123: closing bad idle connection: EOFAug 29 03:15:52 dba1 orchestrator: 2021-08-29
在pt-osc的切换时候rename的过程会有短暂的表不存在的情况,应用程序可能会报错。gh-ost 通过先创建一个切换表,一个会话 lock住原表和切换表,然后在另外一个会话执行rename操作导致rename被故意阻塞,然后第一个会话删除掉切换表,在unlock 之前的锁,第二个会话执行成功2021-05-20 22:59:45 INFO Grabbing voluntary lock: gh-ost.99.lock2021-05-20 22:59:45 INFO Setting LOCK tim
gap lock没有sx冲突一说,在主键上的查询如何没有对应的记录,也是next-key lock,不是单纯的行锁
sql_parser.cc 中处理语句 case COM_BINLOG_DUMP_GTID: // TODO: access of protocol_classic should be removed error= com_binlog_dump_gtid(thd, (char *)thd->get_protocol_classic()->get_raw_packet(), thd->get_protocol_classic()
semi sync 相关hook 及处理函数都是在semisync_master_plugin.cc 文件中定义Trans_observer trans_observer = { sizeof(Trans_observer), // len repl_semi_report_before_dml, //before_dml repl_semi_report_before_commit, // before_commit repl_semi_report_before_ro
DBA最好不要用iterm2去操作数据库,可能是我没有配置好,在执行命令的时候,库名输入了特殊字符,结果iterm也没有办法显示特殊字符是什么。ascii只显示128位内的。另外在拷贝大量命令的时候有莫名其妙的截断。导致执行到一半报错。还是用secrecrt 吧。...
从下面几个方面对比了下pt-osc和ghost
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号