Online DDL 工具:pt-osc
公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出懷來(lái)免費(fèi)做網(wǎng)站回饋大家。
對(duì)于 MySQL Online DDL 目前主流的有三種工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要講解 pt-online-schema-change 的使用以及三種工具的簡(jiǎn)單對(duì)比。
一、原理及限制
1.1 原理
1.?創(chuàng)建一個(gè)與原表結(jié)構(gòu)相同的空表,表名是?_new?后綴;
2. 修改步驟 1 創(chuàng)建的空表的表結(jié)構(gòu);
3. 在原表上加三個(gè)觸發(fā)器:delete/update/insert,用于 copy 數(shù)據(jù)過(guò)程中,將原表中要執(zhí)行的語(yǔ)句在新表中執(zhí)行;
4. 將原表數(shù)據(jù)以數(shù)據(jù)塊(chunk)的形式 copy 到新表;
5. rename 原表為 old 表,并把新表 rename 為原表名,然后刪除舊表;
6. 刪除觸發(fā)器。
1.查看數(shù)據(jù)庫(kù),選中使用數(shù)據(jù)庫(kù),并查看數(shù)據(jù)庫(kù)表,具體操作命令如下:
show databases;
use student;
show tables;
2.選擇student數(shù)據(jù)庫(kù)中的一張表stu_score,查看數(shù)據(jù)庫(kù)表數(shù)據(jù),并利用explain分析數(shù)據(jù)庫(kù)表,如下圖所示:
select * from stu_score;
explain select * from stu_score;
3.查看數(shù)據(jù)庫(kù)使用索引的情況,使用命令:
show status like 'Handler_read%';
4.用于分析和存儲(chǔ)表的關(guān)鍵字,分析的結(jié)果可以得到精準(zhǔn)的信息,利用命令analyze,
analyze table stu_score;
5.檢查數(shù)據(jù)庫(kù)表stu_score,檢查表是否有錯(cuò)誤,利用命令:
check table stu_score;
6.優(yōu)化數(shù)據(jù)庫(kù)表,利用命令:
optimize table stu_score;
擴(kuò)展資料:
可以使用命令行工具管理 MySQL 數(shù)據(jù)庫(kù)(命令 mysql 和 mysqladmin),也可以從 MySQL 的網(wǎng)站下載圖形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。
phpMyAdmin是由 php 寫成的 MySQ L資料庫(kù)系統(tǒng)管理程程序,讓管理者可用 Web 界面管理 MySQL 資料庫(kù)。
phpMyBackupPro也是由 PHP 寫成的,可以透過(guò) Web 界面創(chuàng)建和管理數(shù)據(jù)庫(kù)。它可以創(chuàng)建偽 cronjobs,可以用來(lái)自動(dòng)在某個(gè)時(shí)間或周期備份 MySQL 數(shù)據(jù)庫(kù)。
另外,還有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager,?navicat等等。
./mysqlfrm --diagnostic user.frm
有個(gè)問(wèn)題
1、字符集CHARACTER 是UNKNOWN。如果想要得到字段字符集設(shè)置。還得加上參數(shù)連上mysql。
2、由于不知道字符集所以char 長(zhǎng)度乘以3
解決
mysqlfrm --help 查看下參數(shù)
需要加上--server參數(shù)連上mysql。
mysqlfrm --diagnostic user.frm --server=root:1111aaA_@localhost
如下輸出的表結(jié)構(gòu)語(yǔ)句是完整的。
但是既然能連上mysql服務(wù),我們?yōu)樯兑胢ysqlfrm 呢?。。。的確這是mysqlfrm 工具的一個(gè)問(wèn)題。
MySQL 查看表結(jié)構(gòu)簡(jiǎn)單命令。
一、簡(jiǎn)單描述表結(jié)構(gòu),字段類型desc tabl_name;
顯示表結(jié)構(gòu),字段類型,主鍵,是否為空等屬性,但不顯示外鍵。
二、查詢表中列的注釋信息
select * from information_schema.columns where table_schema = 'db' #表所在數(shù)據(jù)庫(kù)
and table_name = 'tablename' ; #你要查的表
三、只查詢列名和注釋
select column_name,
column_comment from information_schema.columns where table_schema ='db' and
table_name = 'tablename' ;
四、#查看表的注釋
select table_name,table_comment from information_schema.tables where table_schema = 'db' and table_name ='tablename'
ps:二~四是在元數(shù)據(jù)表中查看,我在實(shí)際操作中,常常不靈光,不知為什么,有了解的大俠請(qǐng)留印。
五、查看表生成的DDL show create table table_name;