游戏攻略网
当前位置: 首页 游戏攻略

mysql数据库归档方法(MySQL数据库数据归档回收工具使用场景分享-爱可生)

时间:2023-06-17 作者: 小编 阅读量: 1 栏目名: 游戏攻略

MySQL数据库数据归档回收工具使用场景分享-爱可生更方便的数据归档pt-archiver某些存在时效性的数据,在达到一定条件后,需要进行归档和回收处理pt-archiver工具可以帮助我们快速的进行数据行的归档和回收#归档到其他数据库,并删除原表中对。

更方便的数据归档 pt-archiver

某些存在时效性的数据,在达到一定条件后,需要进行归档和回收处理。

pt-archiver 工具可以帮助我们快速的进行数据行的归档和回收。

# 归档到其他数据库,并删除原表中对应的行pt-archiver --source h=172.20.134.1,P=5722,u=repl,p=repl,D=sbtest,t=sbtest1,A=utf8--where "id<=1000" --dest h=172.20.134.3,P=5722,u=dba,p=dba,D=sbtest,t=sbtest1,A=utf8# 归档到其他数据库, 不删除原表中对应的行pt-archiver --source h=172.20.134.1,P=5722,u=repl,p=repl,D=sbtest,t=sbtest1,A=utf8 --no-delete --where "id<=1000" --dest h=172.20.134.3,P=5722,u=dba,p=dba,D=sbtest,t=sbtest1,A=utf8# 归档到文件,并删除原表中对应的行pt-archiver --source h=172.20.134.1,P=5722,u=repl,p=repl,D=sbtest,t=sbtest1,A=utf8 --file=/tmp/archive.save --where "id<=1000"# 归档到文件, 不删除原表中对应的行pt-archiver --source h=172.20.134.1,P=5722,u=repl,p=repl,D=sbtest,t=sbtest1,A=utf8 --no-delete --file=/tmp/archive.save --where "id<=1000"# 导入归档文件mysql> load data infile "/tmp/archive.save" into table sbtest.sbtest1;Query OK, 1000 rows affected (0.49 sec)Records: 1000Deleted: 0Skipped: 0Warnings: 0

更快速的配置对比 pt-config-diff

在我们日常工作中,大家一定遇到过以下场景:

  • 若干套 MySQL 环境,只有一套:

∘ 行为异常,怀疑触发 bug

∘ 性能异常,比其他环境都要低

在这种场景下,我们一般的做法是首先控制变量,查看软硬件配置,以及 MySQL 的参数配置。

关于 MySQL 的参数配置对比,如果我们人工对比的话只会关注某些重点参数,而缺少了整体细节上的的对比。

在这里我们推荐给大家 Percona Toolkit 中的一个工具 pt-config-diff

# 指定DSN, 对比所有运行时参数# 指定 --report-width 200,防止某些参数过长被截断[root@172-20-134-1 /]#pt-config-diff h=172.20.134.1,P=5722,u=repl,p=replh=172.20.134.3,P=5722,u=dba,p=dba --report-width 2004 config differencesVariable172-20-134-1172-20-134-3========================== ======================================== ========================================general_log_file /data/mysql/data/5.7.22/172-20-134-1.log /data/mysql/data/5.7.22/172-20-134-3.loggtid_executed234303e2-20cb-11ea-a5a3-0242ac148601:12348904f-20cb-11ea-a565-0242ac148603:1hostname172-20-134-1172-20-134-3server_uuid234303e2-20cb-11ea-a5a3-0242ac1486012348904f-20cb-11ea-a565-0242ac148603# 指定配置文件, 对比配置文件的差异[root@172-20-134-1 /]# pt-config-diff /data/mysql/etc/5.7.22.cnf /tmp/5.7.22.cnf --report-width 2002 config differencesVariable/data/mysql/etc/5.7.22.cnf /tmp/5.7.22.cnf========================= ========================== ===============max_allowed_packet1677721667108864relay_log_recovery10

更准确的复制延时 pt-heartbeat

在 MySQL 中,复制延迟可以理解为由两部分组成:

1. 主库已经生成了 BINLOG,但是还没有发送给从库 -- 我们在这里称之为:日志延迟

2. 从库已经接收到了 BINLOG,但是还没有应用完成 -- 我们在这里称之为:应用延迟

MySQL 原生的查看复制延迟的手段为:show slave status\G 中的 Seconds_Behind_Master 。

这种观测手法只能观测出应用延迟。在异步复制或降级的半同步复制下,误差较大,无法准确的反映出整体复制延时。

pt-heartbeat 提供了一种更为准确的观测手法,简要逻辑如下:

  • 1. 在 Master 上循环插入:insert into database.heartbeat (master_now) values(NOW())
  • 2. database.heartbeat 的变更会跟随主从复制流向从库
  • 3. 系统当前时间 - 从库表中的时间 = 从库实际的复制延时

使用方式如下

# 向Master开启循环插入时间戳, interval为每次插入的间隔时间pt-heartbeat -D delay_checker --create-table --interval=5 --update -h 172.20.134.1,P=5722,u=repl,p=repl# 检查指定从库的复制延迟pt-heartbeat -D delay_checker--check 172.20.134.2,P=5722,u=repl,p=repl# PS: 上面这条命令会使用当前系统的时间减去 delay_checker.heartbeat表中的时间.# 如果在从库上执行,需要保证从库的系统时间与主库一致.否则会导致延迟计算错误

更简单的参数配置建议 pt-variable-advisor

toolkit 中包含了一个简单的 MySQL 参数优化器,可以对参数配置做简单的优化建议。

[root@172-20-134-1 /]# pt-variable-advisor h=172.20.134.1,P=5722,u=repl,p=repl# WARN delay_key_write: MyISAM index blocks are never flushed until necessary.# WARN innodb_log_buffer_size: The InnoDB log buffer size generally should not be set larger than 16MB.# NOTE innodb_max_dirty_pages_pct: The innodb_max_dirty_pages_pct is lower than the default.# NOTE max_binlog_size: The max_binlog_size is smaller than the default of 1GB.# NOTE port: The server is listening on a non-default port.# NOTE sort_buffer_size-1: The sort_buffer_size variable should generally be left at its default unless an expert determines it is necessary to change it.# WARN expire_logs_days: Binary logs are enabled, but automatic purging is not enabled.# NOTE innodb_data_file_path: Auto-extending InnoDB files can consume a lot of disk space that is very difficult to reclaim later.# WARN log_output: Directing log output to tables has a high performance impact.# WARN myisam_recover_options: myisam_recover_options should be set to some value such as BACKUP,FORCE to ensure that table corruption is noticed.

更易用的调试工具 pt-pmp

在某些情况下,我们肯定会遇到某些故障无法从日志,以及状态命令中找到原因,需要深入到程序逻辑级别。

又或者我们需要立即通过非常规手段恢复故障数据库,但是又想保留足够多的故障信息。来避免我们事后复现问题的头疼。

pt-pmp 便是在这种场景下帮助我们的工具。它会使用 gdb 来打印 mysqld 的堆栈信息,并把调用链相同的线程堆栈合并。

堆栈合并的功能对于 MySQL 这种多线程的应用非常有帮助,会节省我们大量的时间。

# pt-pmp --binary /path/to/bin/mysqld --pid 11788Sat Dec 21 23:14:06 CST 2019#第一列为线程数量第二列为线程调用栈信息180 poll(libc.so.6),vio_io_wait(viosocket.c:797),vio_socket_io_wait(viosocket.c:88),vio_read(viosocket.c:143),net_read_raw_loop(net_serv.cc:694),net_read_packet_header(net_serv.cc:778),net_read_packet(net_serv.cc:778),my_net_read(net_serv.cc:921),Protocol_classic::read_packet(protocol_classic.cc:815),Protocol_classic::get_command(protocol_classic.cc:972),do_command(sql_parse.cc:971),handle_connection(connection_handler_per_thread.cc:313),pfs_spawn_thread(pfs.cc:2197),start_thread(libpthread.so.0),clone(libc.so.6)57 pthread_cond_wait,native_cond_wait(thr_cond.h:147),my_cond_wait(thr_cond.h:147),inline_mysql_cond_wait(thr_cond.h:147),Per_thread_connection_handler::block_until_new_connection(thr_cond.h:147),handle_connection(connection_handler_per_thread.cc:344),pfs_spawn_thread(pfs.cc:2197),start_thread(libpthread.so.0),clone(libc.so.6)30 __io_getevents_0_4(libaio.so.1),LinuxAIOHandler::collect(os0file.cc:2513),LinuxAIOHandler::poll(os0file.cc:2673),os_aio_linux_handler(os0file.cc:2729),os_aio_handler(os0file.cc:2729),fil_aio_wait(fil0fil.cc:5862),io_handler_thread(srv0start.cc:319),start_thread(libpthread.so.0),clone(libc.so.6)9 pthread_cond_wait,wait(os0event.cc:179),os_event::wait_low(os0event.cc:179),srv_worker_thread(srv0srv.cc:2527),start_thread(libpthread.so.0),clone(libc.so.6)9 pthread_cond_wait,wait(os0event.cc:179),os_event::wait_low(os0event.cc:179),buf_flush_page_cleaner_worker(buf0flu.cc:3507),start_thread(libpthread.so.0),clone(libc.so.6)3 sigwait(libpthread.so.0),signal_hand(mysqld.cc:2132),pfs_spawn_thread(pfs.cc:2197),start_thread(libpthread.so.0),clone(libc.so.6)3 sigwaitinfo(libc.so.6),timer_notify_thread_func(posix_timers.c:89),pfs_spawn_thread(pfs.cc:2197),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_wait,wait(os0event.cc:179),os_event::wait_low(os0event.cc:179),srv_purge_coordinator_suspend(srv0srv.cc:2683),srv_purge_coordinator_thread(srv0srv.cc:2683),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_wait,wait(os0event.cc:179),os_event::wait_low(os0event.cc:179),buf_resize_thread(buf0buf.cc:3027),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_wait,wait(os0event.cc:179),os_event::wait_low(os0event.cc:179),buf_dump_thread(buf0dump.cc:792),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_wait,native_cond_wait(thr_cond.h:147),my_cond_wait(thr_cond.h:147),inline_mysql_cond_wait(thr_cond.h:147),compress_gtid_table(thr_cond.h:147),pfs_spawn_thread(pfs.cc:2197),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:316),os_event::wait_time_low(os0event.cc:488),srv_monitor_thread(srv0srv.cc:1592),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:316),os_event::wait_time_low(os0event.cc:488),srv_error_monitor_thread(srv0srv.cc:1758),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:316),os_event::wait_time_low(os0event.cc:488),pc_sleep_if_needed(buf0flu.cc:2700),buf_flush_page_cleaner_coordinator(buf0flu.cc:2700),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:316),os_event::wait_time_low(os0event.cc:488),lock_wait_timeout_thread(lock0wait.cc:497),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:316),os_event::wait_time_low(os0event.cc:488),ib_wqueue_timedwait(ut0wqueue.cc:168),fts_optimize_thread(fts0opt.cc:2910),start_thread(libpthread.so.0),clone(libc.so.6)3 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:316),os_event::wait_time_low(os0event.cc:488),dict_stats_thread(dict0stats_bg.cc:435),start_thread(libpthread.so.0),clone(libc.so.6)3 poll(libc.so.6),Mysqld_socket_listener::listen_for_connection_event(socket_connection.cc:859),connection_event_loop(connection_acceptor.h:73),mysqld_main(connection_acceptor.h:73),__libc_start_main(libc.so.6),_start3 nanosleep(libpthread.so.0),os_thread_sleep(os0thread.cc:287),srv_master_sleep(srv0srv.cc:2337),srv_master_thread(srv0srv.cc:2337),start_thread(libpthread.so.0),clone(libc.so.6)

总结

Percona Toolkit 中集成了很多对于 DBA 来说非常有用的工具,合理利用它们在某种场景下会减轻一部分工作量。

愿这次的分享能帮助到大家节省时间,提高生活质量。

附录:Percona Toolkit 快速安装

wget https://www.percona.com/downloads/percona-toolkit/3.1.0/binary/tarball/percona-toolkit-3.1.0_x86_64.tar.gztar -xvf percona-toolkit-3.1.0_x86_64.tar.gz -C /usr/local

    推荐阅读
  • steam棋牌游戏推荐(幸运之夜新版本亮相TGC)

    steam棋牌游戏推荐12月1日,2017腾讯游戏嘉年华正式在成都开幕,腾讯的VR社交游戏《幸运之夜》在现场发布了最新版本。VR《幸运之夜》在TGC2017上惊艳亮相《幸运之夜》新版本发布邀请好友一起游戏今年7月底,《幸运之夜》正式在Steam发布,并推出了首款游戏作品“德州扑克”。今年的TGC2017现场,《幸运之夜》全新版本便带来了对互动性方面的提升。

  • 儿童睡前故事卖火柴的小女孩大全(卖火柴的小女孩)

    在长发公主的故事里,兔子小姐变成了手持宝剑的骑士,穿过了山川和河流,战胜了地狱恶犬,最终救出了长着一头金黄色长发的熊猫先生。随着一阵空间的波动,熊猫先生和兔子小姐来到了冰天雪地的圣诞节。小女孩被这突如其来的变化惊呆了。熊猫先生没有回答,轻轻摸了摸小女孩的头。小女孩点燃了第二根火柴。熊猫先生和兔子小姐则来到壁炉前,商量起小女孩最后一个愿望。熊猫先生蹲下来,握起小女孩的手。

  • 怎样做ppr管快一点(PPR管安装方法及技巧)

    怎样做ppr管快一点PPR管安装方法及技巧首先准备好需要的材料:热熔机,小剪刀,ppr管,管件,手巾。一定要根据自己热熔ppr管的口径,准备相应的热熔头。清洁:清洁管材与管件的焊接段部位,建议用95%浓度酒精擦净。在熔接时间内迅速的将管材无旋转的垂直插入管件中,并维持5秒以上,然后按相应冷却时间冷却。热熔后做到横平竖直,美观大方。

  • 大托特包搭配技巧(大托特包搭配技巧简述)

    西装外套+托特包复古时尚的格子,由黑白交错的条纹形成,文艺而又端庄搭配撞色托特包,优雅而不失俏皮,让气场变得灵动起来内搭白色连帽卫衣,减龄又可爱,接下来我们就来聊聊关于大托特包搭配技巧?大托特包搭配技巧西装外套+托特包复古时尚的格子,由黑白交错的条纹形成,文艺而又端庄。衬衫+托特包白色的衬衫休闲慵懒,给人一种空灵的感觉以及干净纯粹的气质。

  • 刘涛电视剧口碑(电视剧景气指数第一)

    还记得3月份刘涛在和周渝民主演的《大宋宫词》中扮嫩出演少妇被很多观众吐槽。万万没想到时隔数月,刘涛带着她的新剧《星辰大海》杀回来了。目前主要的剧情线在刘涛饰演的女主简爱身上。因为小时候意外发现母亲出轨的事,得知真相的父亲激愤之下杀死母亲并自杀,简爱因此成为了一个孤女。逃出傻子家的简爱在与姑姑的争执中误伤姑姑,从此开启逃命生涯。简爱从面馆辞职走投无路,误打误撞进入大公司之后面临着同事的故意刁难。

  • 外墙装修材料有哪些 外墙装修材料有哪些类型

    外墙涂料具有装饰性良好、耐污染耐老化以及施工维修容易和价格合理的特点。一般来说釉面外墙砖有亚光面与无光面两大类。它的装饰的效果也不错,有柚木色、深灰色等等可供选择。由于它的表面的肌理很清晰,所以色泽漂亮且装饰性极强。本站,中国知名大型装修平台,装修领导品牌。

  • 世界上有哪些花(世界上有哪些花 名字)

    瓜叶菊、香豌豆、夏兰、石竹、石蒜、荷花、翠菊、睡莲、福禄考、晚香玉、万寿菊、千日红、建兰、铃兰、报岁兰、香堇、大岩桐、水仙、小草兰、瓜叶菊、蒲包花、免子花、入腊红、三色堇、百日草、鸡冠花、一串红。孔雀草、大波斯菊、金盏菊、非洲凤仙花、菊花、非洲菊、观赏凤梨类、射干、非洲紫罗兰、天堂鸟、炮竹红、菊花、康乃馨、红掌、满天星、星辰花、三角梅、虞美人。

  • 长歌行李长歌母亲是谁杀的(长歌行李长歌的简介)

    下面更多详细答案一起来看看吧!长歌行李长歌母亲是谁杀的《长歌行》李长歌母亲是自杀的。李长歌,太子李建成之女,生母则是回纥王族。父母手足均死于玄武门之变,满怀愤恨的长歌凭高超武艺逃出皇宫,并在追捕过程中制造“坠崖假死”而逃生,其后女扮男装隐瞒身份流落民间,一心只想为父母复仇,在家和国的利害冲突中,最后放弃复仇,和阿诗勒隼一起成为了民族和解的使者。

  • 什么时候喝蛋白粉增肌效果最好(什么时候喝蛋白粉增肌效果最好)

    从长远来看,这种方法被证明可以促使肌肉明显增长。如果摄入量超过一定的阈值,蛋白质的合成就会受限。如果是以乳清饮料的形式摄入乳清蛋白,运动者可以在运动结束后立即饮用。按每公斤体重1克的标准,在健身前后立即摄入以及在运动后1小时内摄入可快速吸收的碳水化合物,可以明显抑制肌肉分解,并大大促进肌肉快速和明显的增长。在这种情况下,大量分泌的胰岛素促进了氨基酸向工作中的肌肉运输,为蛋白质合成奠定基础。

  • 窦骁周冬雨山楂树之恋结局(周冬雨18岁第一次出演)

    周冬雨18岁第一次出演要说最近最火的电影,非《少年的你》莫属,上映14天,已经收获了12.45亿的票房成绩,成为现阶段最强的票房黑马而作为该片主演的周冬雨和易烊千玺,也凭借在该片中的精彩演出,演技得到大众的进一步认可作为“。