一、為什么現(xiàn)在MySQL無(wú)法重命名數(shù)據(jù)庫(kù)
MySQL 之前提供了一個(gè) rename database db_old to db_new 的命令來(lái)直接對(duì)數(shù)據(jù)庫(kù)改名,可能由于實(shí)現(xiàn)的功能不完備(比如,這條命令可能是一個(gè)超大的事務(wù),或者是由于之前的表很多還是 MyISAM 等),后來(lái)的版本直接取消了這條命令。
mysqldump 導(dǎo)入導(dǎo)出
要說(shuō)最簡(jiǎn)單的方法,就是直接用 mysqldump 工具,在舊庫(kù)導(dǎo)出再往新庫(kù)導(dǎo)入(最原始、最慢、最容易想到)的方法:舊庫(kù) yttdb_old 導(dǎo)出(包含的對(duì)象:表、視圖、觸發(fā)器、事件、存儲(chǔ)過(guò)程、存儲(chǔ)函數(shù))
改整庫(kù)的表名
利用 MySQL 更改表名的方法來(lái)批量把舊庫(kù)的所有表依次遍歷,改名為新庫(kù)的表。
歷史方案
其實(shí)在 MySQL 早期還有一種方法。
假設(shè) MySQL 部署好了后,所有的 binlog 都有備份,并且二進(jìn)制日志格式還是 statement 的話,那就可以簡(jiǎn)單搭建一臺(tái)從機(jī),讓它慢慢追主機(jī)到新的庫(kù)名,等確切要更改舊庫(kù)的時(shí)候,再直接晉升從機(jī)為主機(jī)即可。
總結(jié)
其實(shí)針對(duì) MySQL 本身改庫(kù)名,大致就這么幾種方法:
如果數(shù)據(jù)量小,推薦名列前茅種;數(shù)據(jù)量大,則推薦第二種;數(shù)據(jù)量巨大,那就非 MySQL 本身能解決的了。可通過(guò)部署第三方 ETL 工具,通過(guò)解析 MySQL 二進(jìn)制日志或其他的方式來(lái)把舊庫(kù)數(shù)據(jù)直接讀取到新庫(kù)達(dá)到改名的目的等等。
延伸閱讀:
二、什么是數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)就是英文的“database”翻譯來(lái)的,data + base,故名思義就是數(shù)據(jù)的根源,數(shù)據(jù)的基礎(chǔ)。那么為什么要有數(shù)據(jù)庫(kù)呢,數(shù)據(jù)庫(kù)首先是個(gè)計(jì)算機(jī)軟件,在所謂數(shù)據(jù)庫(kù)誕生之前,常用方法可能是程序員自己寫(xiě)一個(gè)小程序來(lái)完成數(shù)據(jù)處理分析這樣的工作。
伴隨著計(jì)算機(jī)的普及,越來(lái)越多的場(chǎng)景開(kāi)始使用計(jì)算機(jī),產(chǎn)生了越來(lái)越多的數(shù)據(jù),也催生了越來(lái)越多的數(shù)據(jù)分析需求。為了降低數(shù)據(jù)分析的門(mén)檻,讓更多人能夠更方便高效地管理分析數(shù)據(jù),工程師們就打造了一種專門(mén)的軟件來(lái)幫助人們對(duì)數(shù)據(jù)進(jìn)行合理的存儲(chǔ)以提高存取效率,提供易用的接口和豐富的分析算法以方便使用,集成有效的管理工具以提高數(shù)據(jù)安全性等等,這就是數(shù)據(jù)庫(kù),也被稱為數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS,Database management system)。
數(shù)據(jù)庫(kù)是一整套數(shù)據(jù)管理體系,包括數(shù)據(jù)存儲(chǔ)的模型、數(shù)據(jù)組織的架構(gòu)、數(shù)據(jù)分析的算法、數(shù)據(jù)管理的工具以及數(shù)據(jù)訪問(wèn)的接口等等。