基於MYSQL資料庫實現自動創建分區

2020-08-29 波波說運維

概述

Mysql不能自動創建分區,需要使用mysql event事件的方式自動創建分區,今天主要分享一下在MYSQL資料庫應如何實現自動創建分區。


1、準備測試表及數據

CREATE TABLE `t1` ( `id` bigint(20) NOT NULL COMMENT &39;, `insert_user` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT &39;, `insert_date` datetime NOT NULL COMMENT &39;, PRIMARY KEY (`id`,insert_date) USING BTREE, KEY `fsl_idx_order_release_insert_date` (`insert_date`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT=&39;/*!50500 PARTITION BY RANGE COLUMNS(insert_date)( PARTITION p202007 VALUES LESS THAN (&39;) ENGINE = InnoDB, PARTITION p202008 VALUES LESS THAN (&39;) ENGINE = InnoDB) */insert into t1 values (1,&39;,now()),(1,&39;,now()+1),(1,&39;,now()+2);



2、相關存儲過程

每次執行先校驗當前分區是否存在,如果存在則不處理;不存在則創建

DELIMITER //39;p%Y%m&39;ALTER TABLE `&39;`.`&39;`&39; ADD PARTITION (PARTITION &34; VALUES LESS THAN (&34;, ENDTIME_DATETIME, &39;) ENGINE = InnoDB);&34;partition `&34;` for table `&34;.&34;` already exists&34;ycdb&34;t1&該表所在的資料庫名稱USE `ycdb`$$CREATE EVENT IF NOT EXISTS `Month_partition_t1`ON SCHEDULE EVERY 1 hour 39;2020-08-10 17:00:00&39;Creating partitions By month&調用剛才創建的存儲過程,第一個參數是資料庫名稱,第二個參數是表名稱 CALL ycdb.create_partition_by_month(&34;, &34;);END$$DELIMITER ;



如果沒有執行,請檢查Mysql是否開啟了event(默認是關閉的)

 [mysqld] event_scheduler=ON


後面會分享更多devops和DBA方面內容,感興趣的朋友可以關注下~


相關焦點

  • 基於MySQL資料庫應用開發實現嵌入式數控系統的設計
    基於MySQL資料庫應用開發實現嵌入式數控系統的設計 鄔依林 , 黃瑛 發表於 2020-12-02 10:07:37 1 引言 本文所論述是數控系統大課題中人機互動的外圍部分子課題中的資料庫開發應用
  • 資料庫分區操作命令及注意事項
    今天和同事討論資料庫大表怎麼拆分,他提出了分區的概念,幹了這麼久的我竟然對分區不了解,於是趕緊查資料才弄懂分區是怎麼一回事。之前的我一直以為分區和分表說的是一回事,真是很傻很天真。為什麼要分表和分區?我們的資料庫數據越來越大,隨之而來的是單個表中數據太多。
  • 良心文章|MySQL性能優化分區之實戰(最全面最完整的分區)
    分區類型range分區:基於一個給定的連續區間範圍(區間要求連續並且不能重疊),把數據分配到不同的分區list分區:類似於range分區,區別在於list分區是居於枚舉出的值列表分區,range是基於給定的連續區間範圍分區hash分區:基於給定的分區個數,把數據分配到不同的分區key分區:類似於hash分區注意:無論哪種分區,要麼你分區表上沒有主鍵/唯一鍵,要麼分區表的主鍵
  • CentOS7.X 掛載磁碟 與Mysql 自動備份
    本文中的磁碟/dev/sdb為筆者測試伺服器上的命名,在您的伺服器中可能是/dev/xdb、/dev/vdb、/dev/xvdb等等,請根據實際情況進行修改 2、創建掛載目錄 www mkdir -p /www 3、確認是否沒有分區的磁碟 fdisk -l
  • MYSQL資料庫基於MHA的高可用
    在 MySQL 故障切換過程中,MHA 能做到在 0~30 秒之內自動完成資料庫的主從故障切換操作,並且在進行故障切換的過程中,MHA 能在最大程度上保證數據的一致性,以達到真正意義上的高可用。MHA 由兩部分組成:MHA Manager(管理節點)和 MHA Node(數據節點)。
  • linux伺服器上創建mysql5.7定時任務,實現自動發布文章
    圖/文:迷神無聊想給博客搞一個自動發布文章功能,自動發布方式有很多種,一般採用計劃任務的比較多,一次看到mysql的事件調度,於是想就在mysql資料庫中進行定時任務自動修改要發布的文章就可以了。僅供研究測試,實際需要根據情況考慮用於生產環境中。什麼是mysql的事件調度器,來說說。
  • 實例,PDO實現連接MySQL資料庫
    實例說明在學習通過 PDO 連接 MySQL 資料庫前,大家先在phpMyAdmin下創建一個MySQL 資料庫 test,並且在 test 資料庫中創建數據tb_pdo, 然後定義資料庫連接的參數,最後,通過 PDO 構造函數創建連接。運行效果如下圖所示。
  • Mysql數據分片技術(一)——初識表分區
    mysql小型資料庫瓶頸網際網路行業企業都傾向於mysql資料庫,雖說mysql單表能支持億級別的數據量,加上索引優化下查詢速度,勉強能使用,但是對於追求性能和效率的網際網路企業,這是遠遠不夠的。四種數據分區方式簡述 (筆者這裡只探討水平分區)對表進行分區,是為了能最大限度的提高資料庫的IO能力,分區能讓資料庫將同一張表中的數據放在不同的磁碟下,提高資料庫IO能力,類似多核多線程的思想。因此分區能提高單標的高並發能力。
  • MySQL的基本語法之查看、創建、刪除資料庫
    昨天已分享了具體的安裝方法及步驟(5.7版本以上),若是有要了解需要安裝的步驟如何操作,可以留言,我單獨再整理一份關於mysql5.5版本的安裝。今天和大家一起學習MySQL的一些基本語法:查看、創建、刪除資料庫。
  • 「Mysql」資料庫主從搭建-基於docker
    後臺可回復【1024】即可獲取相關寶藏內容分享:)為什麼基於Docker搭建?>PART 1 Docker搭建主從資料庫學長五分鐘帶你走進docker主從搭建的世界 :)通過Docker搭建主從伺服器首先我們需要拉取docker鏡像,我們使用5.7版本的MySQL:docker pull mysql:5.7然後使用此鏡像啟動容器,這裡需要分別啟動主從兩個容器創建Master(主資料庫)
  • MySQL教程之MySQL定時備份資料庫
    一、MySQL數據備份1.1、 mysqldump命令備份數據在MySQL中提供了命令行導出資料庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現資料庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:#MySQLdump常用mysqldump -u root -p --databases
  • 測試實戰篇丨快速搭建搜尋引擎,實現實時同步MySQL資料庫
    與elasticsearch數據同步優點· 能實現mysql數據全量和增量的數據同步,且能實現定時同步。2、go-mysql-elasticsearchgo-mysql-elasticsearch 是國內作者開發的一款插件優點能實現mysql數據增加,刪除,修改操作的實時數據同步缺點· 無法實現數據全量同步Elasticsearch
  • canal 基於Mysql資料庫增量日誌解析
    canal 基於Mysql資料庫增量日誌解析 1.前言 最近太多事情 工作的事情,以及終身大事等等 耽誤更新,由於最近做項目需要同步監聽 未來電視 mysql的變更了解到公司會用canal做增量監聽,就嘗試使用了一下 這裡做個demo
  • 「資料庫分享」MySQL資料庫優化
    索引的設計原則創建索引的列並不一定是select操作中要查詢的列,最適合做索引的列是出現在where子句中經常用作篩選條件或連表子句中作為表連接條件的列。具有唯一性的列,索引效果好;重複值較多的列,索引效果差。如果為字符串類型創建索引,最好指定一個前綴長度,創建短索引。
  • MySQL基於binlog實現數據增量恢復實踐
    公司的所有業務和項目都是部署到雲端,虛擬機,資料庫和存儲都是基於公有雲的基礎設施。公有雲的資料庫服務一般都具有數據備份和數據恢復等基本功能,當對數據表進行誤操作或者發生黑客攻擊刪表,刪庫操作後,都可以基於備份數據在幾分十分鐘內恢復所有數據。因為時效性的原因恢復的數據可能會存在少許差異,但是不至於造成整個業務中斷和系統崩潰。
  • MySQL資料庫操作語法詳解
    1 資料庫創建建庫語句如下:CREATE DATABASE|SCHEMA會創建一個給定名稱的資料庫,只有擁有CREATE權限才能使用該語法。不加IF NOT EXISTS時,如果需要創建資料庫已經同名存在則會報錯。create_specification中指定了創建資料庫特性。
  • 基於ShardingJDBC實現資料庫讀寫分離
    想要解決這一瓶頸問題,可能最簡單的有三種解決方案:增加單個資料庫節點的CUP和內存數量;採用分布式資料庫,對數據進行分庫分表;採用簡單的讀寫分離技術,降低單個資料庫節點的負荷;在上一篇文章 中,我將大致講解了一下如何實現對資料庫進行分庫分表操作,本篇文章我們將大致講解下如何通過ShardingJDBC
  • sybase資料庫分區介紹
    Sybase資料庫分區介紹及測試報告第1章 目的... 2第2章 參考... 2第3章 分區介紹... 23.1. 分區解釋... 33.2. 分區作用... 33.3. 分區方式... 33.4. 資料庫支持... 33.5.
  • mysql優化之分區
    mysql分區類型日常開發中我們經常會遇到大表的情況,所謂的大表是指存儲了百萬級乃至千萬級條記錄的表。這樣的表過於龐大,導致資料庫在查詢和插入的時候耗時太長,性能低下,如果涉及聯合查詢的情況,性能會更加糟糕。分表和表分區的目的就是減少資料庫的負擔,提高資料庫的效率,通常點來講就是提高表的增刪改查效率。
  • MySQL資料庫讀寫分離技術實踐
    ,從而提高我們整個系統的數據吞吐量,如果我們後端採用的是關係型數據,我們可能會想到兩種解決方案,一種是更換非關係型資料庫,這種方案代價比較昂貴,它會涉及到數據的遷移,以及程序代碼的修改;另一種是通過資料庫集群的方式,來橫向和縱向擴展我們的資料庫,這種方案容易實現並且程序代碼修改量比較小;根據MySQL的官方文檔介紹,MySQL支持讀寫分離的集群配置,並且MySQL提供兩種類型的讀寫分離數據複製類型