• ADADADADAD

    MySQL使用pt-archiver归档历史数据[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:14:30

    作者:文/会员上传

    简介:

    pt-archiver可以将表按照指定条件归档到历史数据库中,也支持文件导出,对于归档清理线上历史数据非常方便。
    如果要归档表的数据到历史数据库的表中,需要预先在历史数据库中创建

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    pt-archiver可以将表按照指定条件归档到历史数据库中,也支持文件导出,对于归档清理线上历史数据非常方便。
    如果要归档表的数据到历史数据库的表中,需要预先在历史数据库中创建表结构。

    (1) 按照条件归档表中的历史数据到历史数据中,同时在本地生成归档文件

      # 在历史数据库(192.168.56.102)中创建归档表
      mysql> CREATE TABLE `emp` (
      -> `id` int(11) NOT NULL,
      -> `name` varchar(15) DEFAULT NULL,
      -> PRIMARY KEY (`id`)
      -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      Query OK, 0 rows affected (0.60 sec)

      # 查看源表
      mysql> select * from emp;
      +--------+---------+
      | id | name |
      +--------+---------+
      | 10 | Neo |
      | 10036 | test |
      | 10037 | test |
      | 10038 | test |
      | 10039 | test |
      | 10040 | MySQL01 |
      | 10041 | MySQL01 |
      | 10042 | MySQL01 |
      | 100100 | test |
      | 100101 | test |
      | 100103 | test |
      | 100104 | test |
      | 100105 | test |
      | 100106 | test |
      | 100107 | test |
      | 100108 | test |
      +--------+---------+

      # 归档id小于200000的数据到历史库和本地文件
      # pt-archiver --source h=192.168.56.101,P=3307,u=neo,p=neo,D=sale,t=emp --dest h=192.168.56.102,P=3306,u=sale,p=sale,D=test,t=emp --where "id<=200000" --charset=utf8 --limit 1000 --commit-each --file '/opt/%Y-%m-%d-%D.%t'

      # 查看源表
      mysql> select * from emp where id < 200000;
      Empty set (0.05 sec)

      # 查看历史表
      mysql> select * from emp limit 2;
      +--------+------+
      | id | name |
      +--------+------+
      | 100100 | test |
      | 100101 | test |
      +--------+------+
      2 rows in set (0.00 sec)

      # 查看本地归档文件(相当于select ... into导出)
      # cat /opt/2018-03-19-sale.emp
      10Neo
      10036test
      10037test
      10038test
      10039test
      10040MySQL01
      10041MySQL01
      10042MySQL01

    (2) 清理过期历史数据

      # pt-archiver --source h=192.168.56.101,P=3306,u=neo,p=neo,D=test,t=item_order --where "order_date < '2018-03-01'" --charset=utf8 --purge --limit 1000 --commit-each

      # 查看清理后的表中数据
      mysql> select * from item_order where order_date < '2018-03-01';
      Empty set (0.00 sec)


    MySQL使用pt-archiver归档历史数据.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlptarchiver使用