zoukankan      html  css  js  c++  java
  • mydumper 安装使用

    参考官方文档:

    https://github.com/maxbube/mydumper

    https://github.com/maxbube/mydumper/blob/master/docs/mydumper_usage.rst

    1、先安装依赖

    yum install -y cmake gcc gcc-c++ git make
     yum install -y glib2-devel mysql-devel openssl-devel pcre-devel zlib-devel

    2、

    安装mydumper

    yum install https://github.com/maxbube/mydumper/releases/download/v0.10.3/mydumper-0.10.3-1.el7.x86_64.rpm

    说明:

    How does consistent snapshot work?

    This is all done following best MySQL practices and traditions:

    • As a precaution, slow running queries on the server either abort the dump, or get killed
    • Global read lock is acquired ("FLUSH TABLES WITH READ LOCK")
    • Various metadata is read ("SHOW SLAVE STATUS","SHOW MASTER STATUS")
    • Other threads connect and establish snapshots ("START TRANSACTION WITH CONSISTENT SNAPSHOT") ** On pre-4.1.8 it creates dummy InnoDB table, and reads from it.
    • Once all worker threads announce the snapshot establishment, master executes "UNLOCK TABLES" and starts queueing jobs.

    This for now does not provide consistent snapshots for non-transactional engines - support for that is expected in 0.2 :)

    大概意思是为了快照一致性,会执行ftwrl全局只读锁命令,通过show slave status获取位点。

    3、

    备份mysql数据库

     mydumper -u root -p 123456 -t 1 -o /root/ceshi

    mydumper默认是4线程工作,我手动设置为1线程,并开了通用日志,观察下备份执行过程。

    2021-04-25T10:36:57.351034Z        45 Connect   root@localhost on  using Socket
    2021-04-25T10:36:57.356560Z        45 Query     SET SESSION wait_timeout = 2147483
    2021-04-25T10:36:57.360055Z        45 Query     SET SESSION net_write_timeout = 2147483
    2021-04-25T10:36:57.361080Z        45 Query     SHOW PROCESSLIST
    2021-04-25T10:36:57.361194Z        45 Query     SELECT @@version_comment, @@version
    2021-04-25T10:36:57.363223Z        45 Query     FLUSH TABLES WITH READ LOCK
    2021-04-25T10:36:57.377094Z        45 Query     START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
    2021-04-25T10:36:57.377259Z        45 Query     /*!40101 SET NAMES binary*/
    2021-04-25T10:36:57.377350Z        45 Query     SHOW MASTER STATUS
    2021-04-25T10:36:57.377476Z        45 Query     SHOW SLAVE STATUS
    2021-04-25T10:36:57.377957Z        46 Connect   root@localhost on  using Socket
    2021-04-25T10:36:57.378007Z        46 Query     SET SESSION wait_timeout = 2147483
    2021-04-25T10:36:57.378043Z        46 Query     SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
    2021-04-25T10:36:57.378065Z        46 Query     START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
    2021-04-25T10:36:57.378141Z        46 Query     /*!40103 SET TIME_ZONE='+00:00' */
    2021-04-25T10:36:57.378177Z        46 Query     /*!40101 SET NAMES binary*/
    2021-04-25T10:36:57.378228Z        45 Query     SHOW DATABASES
    2021-04-25T10:36:57.385455Z        46 Init DB   ceshi
    2021-04-25T10:36:57.385515Z        46 Query     SHOW TABLE STATUS
    2021-04-25T10:36:57.387248Z        46 Query     SHOW CREATE DATABASE `ceshi`
    2021-04-25T10:36:57.387430Z        46 Init DB   mysql
    2021-04-25T10:36:57.387463Z        46 Query     SHOW TABLE STATUS
    2021-04-25T10:36:57.399529Z        46 Query     SHOW CREATE DATABASE `mysql`
    2021-04-25T10:36:57.399667Z        46 Init DB   sbtest
    2021-04-25T10:36:57.399701Z        46 Query     SHOW TABLE STATUS
    2021-04-25T10:36:57.401533Z        46 Query     SHOW CREATE DATABASE `sbtest`
    2021-04-25T10:36:57.401667Z        46 Init DB   sys
    2021-04-25T10:36:57.401698Z        46 Query     SHOW TABLE STATUS
    2021-04-25T10:36:57.483388Z        46 Query     SHOW CREATE DATABASE `sys`
    2021-04-25T10:36:57.483825Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='columns_priv' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.484425Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`columns_priv`
    2021-04-25T10:36:57.485117Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='db' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.485469Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`db`
    2021-04-25T10:36:57.486032Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='event' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.486370Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`event`
    2021-04-25T10:36:57.486547Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='func' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.486753Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`func`
    2021-04-25T10:36:57.486895Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='ndb_binlog_index' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.487103Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`ndb_binlog_index`
    2021-04-25T10:36:57.487403Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='proc' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.487696Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`proc`
    2021-04-25T10:36:57.490486Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='procs_priv' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.491011Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`procs_priv`
    2021-04-25T10:36:57.491249Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='proxies_priv' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.491497Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`proxies_priv`
    2021-04-25T10:36:57.491988Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='tables_priv' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.492249Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`tables_priv`
    2021-04-25T10:36:57.492553Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='user' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.492934Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `mysql`.`user`
    2021-04-25T10:36:57.493287Z        45 Query     UNLOCK TABLES /* FTWRL */
    2021-04-25T10:36:57.493361Z        45 Quit
    2021-04-25T10:36:57.493529Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='ceshi' and TABLE_NAME='t1' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'
    2021-04-25T10:36:57.493829Z        46 Query     SELECT /*!40001 SQL_NO_CACHE */ * FROM `ceshi`.`t1`
    2021-04-25T10:36:57.494795Z        46 Query     select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='mysql' and TABLE_NAME='engine_cost' and extra like '%GENERATED%' and extra not like '%DEFAULT_GENERATED%'

    备份过程:

    1、45号线程,开启事务,

    2、45号线程,执行ftwrl命令,加全局读锁

    3、45号线程,show master status,show slave status  查看当前binlog位点和同步位点

    4、46号线程,设置隔离级别为可重复读模式

    5、46号线程开启事务

    6、46号线程开始些show create 操作,并查询一些information_schema  mysql库下边的表

    7、45号线程 UNLOCK TABLES

    8、46号线程备份其它库下的表。

    从整个备份逻辑看,如果information_schema.tables   information_schema.columns等表中对象过多,备份会多消耗一些时间,而这个过程数据库一直处于全局读锁状态。

    常用参数:

    https://github.com/maxbube/mydumper/blob/master/docs/mydumper_usage.rst

    参考这个文档,

    -u -p -h -P 是用参数,不说了

    --threads,-t
    
       用于转储数据的线程数,默认为4

    --outputdir,-o
    
       输出目录名称,-o /root/ceshi   结果会保存到/root/ceshi这个目录中,每个表一个文件。
    metadata文件保存着开始结束时间,及位点信息。
    [root@localhost ceshi]# cat metadata 
    Started dump at: 2021-04-25 03:36:57
    SHOW MASTER STATUS:
            Log: mysql-bin.000002
            Pos: 373173947
            GTID:
    
    Finished dump at: 2021-04-25 03:37:08
     --compress,-c
    
       压缩输出文件

    --regex,-x
    
       用于与数据库和表匹配的正则表达式


    --insert-ignore,-N
    
       使用INSERT IGNORE INTO而不是INSERT INTO转储行

    --triggers,-G
    
       转储触发器

    --events,-E
    
       转储事件

    --routines,-R
    
       转储存储过程和函数

    --kill-long-queries,-K
    
       杀死长时间运行的查询,而不是中止转储


    mydumper -h xxx -P 3306 -t 8 --kill-long-queries -u root -p '123' -s 2000000 --regex '^(?!(information_schema|performance_schema|sys))' -c -o /data/dbbackup/

    myloader 导入工具

    参数说明:

    -d, --directory                   备份文件的文件夹
    -q, --queries-per-transaction     每次事物执行的查询数量,默认是1000
    -o, --overwrite-tables            如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
    -B, --database                    需要还原的数据库
    -e, --enable-binlog               启用还原数据的二进制日志
    -h, --host                        主机
    -u, --user                        还原的用户
    -p, --password                    密码
    -P, --port                        端口
    -S, --socket                      socket文件
    -t, --threads                     还原所使用的线程数,默认是4
    -C, --compress-protocol           压缩协议
    -V, --version                     显示版本
    -v, --verbose                     输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

    myloader -u root -p 123456 -h 127.0.0.1 -P 3306 -t 1 -B ceshi -d /root/ceshi

    
    
     

     

  • 相关阅读:
    Eclipse下进行SVN提交时报“svn: Transaction is out of date
    【Spring学习】Spring事物管理之aop技术
    【框架学习】ibatis DAO框架分析
    【maven详解-插件】maven 插件机制
    【maven详解-插件】maven插件学习之maven-source-plugin
    关于使用 no-js (Modernizr)
    白话讲MyIsam和InnoDB的区别
    向鼠标右键菜单增加菜单项
    表单提交按钮input和button、a的差异
    MySQL数据库索引的设计原则
  • 原文地址:https://www.cnblogs.com/nanxiang/p/14701699.html
Copyright © 2011-2022 走看看