當前位置:首頁 » 數據倉庫 » mysql收縮資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql收縮資料庫

發布時間: 2022-09-28 21:25:40

① MYsql的概念

MySQL是一個關系型資料庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關系型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體之一。
MySQL 是一種關聯資料庫管理系統,關聯資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL 所使用的 SQL 語言是用於訪問資料庫的最常用標准化語言。MySQL 軟體採用了雙授權政策,它分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。

② mysql資料庫怎麼還原資料庫備份

以下的文章主要介紹的是MySQL Administrator備份與還原資料庫,隨著PHP技術的逐步發展,MySQL資料庫的使用率也成上升趨勢。可MySQL資料庫的實際操作一般都是基於命令行的,而沒有像微軟MSSQL資料庫的企業管理器這樣的GUI可視圖形化工具操作來的容易方便。
一般的情況下,我們可以使用 PHPMYADMIN 這樣的PHP腳本工具來操作 MySQL 資料庫,可 PHPMYADMIN 也不是GUI工具。
為了更方便地操作 MySQL 資料庫,飄易今天就給大家介紹一款管理 MySQL 的可視化圖形工具 :MySQL Administrator 。這是一款和管理MSSQL的企業管理器一樣方便的本地操作 MySQL 的有效工具。
很重要的是,MySQL Administrator不會出現像使用 SQLyog (同樣是管理MySQL的GUI工具)時經常會遇到的 中文亂碼 問題,要知道中文網站資料庫使用不當的話都會出現中文亂碼的問題。
所以,我們使用 MySQL Administrator工具,就有效地避免出現中文亂碼的問題了。飄易手裡頭使用的是 MySQL Administrator 5.0 r16 這個版本。原始的官方網址選擇Windows (x86) 下載,目前最新版本是 5.0-r17 ,大約17MB。
利用這個軟體備份MySQL資料庫,還原MySQL資料庫,管理MySQL將變得十分簡單易行,就像使用 MSSQL的企業管理器一樣方便。
一,登陸,填寫資料庫IP,用戶名和密碼

二,登陸成功後,顯示以下信息:

三,查看已經存在的資料庫
選擇「Catalogs」將列出資料庫。點左下腳資料庫列表中你開通的「資料庫名」,右邊將顯示出資料庫中已經存在的資料庫表,如果是新資料庫,右邊是空的。

四,備份資料庫到本地計算機硬碟
備份資料庫到本地計算機硬碟,選擇「Backup」備份資料庫功能,然後點擊「New Project」 建立新的備份項目。選擇要備份的資料庫,然後點 > 號,右邊將顯示出資料庫表結構。

備份選項:
點「Advanced Options」 高級選項 ,選擇「Normal backup」 備份的時候選擇正常備份 ,選擇「Complete backup」 選擇完整備份 ,也可以選擇 「InnoDB Online Backup」,這是一種在線簡單的備份方式;Backup Type 備份方式選擇 SQL Files ,點「Execute Backup Now」立刻開始備份資料庫。

五,選擇「Restore」還原資料庫功能
點「Open Backup File」,找到以前備份的資料庫腳本文件,選擇並打開文件,點「Start Restore」 後開始還原,還原成功。

這里在還原的時候需要注意的有兩點:1,「Target Schema」默認資料庫項這里,如果你沒有MySQL伺服器root許可權,比如你是虛擬主機分配的一個子賬戶,此時你必須選擇「another schema」里的資料庫名,而不能選擇「original schema」選項,否則還原失敗出錯; 2,「FILE CHARSET」選項默認 utf8,請不要更改,否則也會出現中文亂碼問題。
MySQL Administrator 不僅可以備份、還原MySQL資料庫,同樣也可以對MySQL進行方便地維護和管理,比如修改增加欄位等。另外,這里還有一篇 如何使用 MySQL Administrator 管理/備份/還原 My SQL 資料庫 的文章,大家也可以看看

③ 為什麼在linux下使用mysql資料庫

一、啟動mysql服務
(1) rpm方式安裝的mysql
-設置自動啟動
#ntsysv --level 3
-手工啟動
#service mysqld start
(2) 編譯安裝的mysql
-設置自動啟動
#vi /etc/rc.d/rc.local
.......
/usr/local/mysql/bin/mysqld_safe&
........
-手工啟動
#/usr/local/mysql/bin/mysqld_safe&
查看文章
mysql伺服器(一)2009-06-15 11:18mysql伺服器
一. 認識和安裝mysql
1. 認識mysql
(1) mysql是一種網路資料庫伺服器產品
(2) mysql是開源的免費的
(3) mysql是關系型資料庫管理系統,支持SQL.
(4) mysql無溢出漏洞
(5) mysql提供豐富的API
(6) mysql提供豐富的數據類型
(7) mysql具較強的移值性
2. 安裝mysql軟體
(1) rpm安裝方式
#rpm -ivh perl-CGI....
perl-DBI....
perl-DBD-MySQL.....
mysq-....
mysql-server....
mysql-devel.....
(2) 編譯安裝方式
#groupadd mysql
#useradd -g mysql mysql
#tar -xzvf mysql-4.1.19.tar.gz
#cd mysql-4.1.19
#./configure --prefix=/usr/local/mysql
#make
#make install
#cp support-files/my-medium.cnf /etc/my.cnf
#cd /usr/local/mysql
#bin/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql var
#chgrp -R mysql .
3. 啟動mysql服務
(1) rpm方式安裝的mysql
-設置自動啟動
#ntsysv --level 3
-手工啟動
#service mysqld start
(2) 編譯安裝的mysql
-設置自動啟動
#vi /etc/rc.d/rc.local
.......
/usr/local/mysql/bin/mysqld_safe&
........
-手工啟動
#/usr/local/mysql/bin/mysqld_safe&
二、mysql的管理
1. 如何連接mysql伺服器
(1) Linux客戶機
#mysql [-h伺服器地址] [-u用戶名] [-p口令] [資料庫名]
實例:
#mysql
mysql>
#mysql -h192.168.3.1 -uadmin -plinux
mysql>
(2) Windows客戶機
-利用第三方mysql客戶端軟體
-利用瀏覽器連接(伺服器必須安裝web管理平台,如:phpmyadmin/webmin)
注:webmin的安裝方法
#tar -xzvf webmin-1.25.tar.gz
#cd webmin-1.25
#./setup.sh
2. 資料庫管理
(1) 認識mysql的資料庫
-mysql伺服器默認建立兩個資料庫,分別是mysql和test;其中mysql是系統資料庫;test是學習資料庫
-mysql伺服器上的每個資料庫都會在相應路徑中建立與庫同名的目錄
-每個資料庫可包含若干張表,每張表由*.frm、*.MYD和*.MYI文件構成
(2) 創建資料庫
#mysql
mysql>create database 資料庫名;
實例:
mysql>create database dbinfo;
(3) 查看伺服器上已創建的資料庫
#mysql
mysql>show databases;
(4) 打開資料庫
#mysql
mysql>use 資料庫名;
實例:
mysql>use db1;
(5) 刪除資料庫
#mysql
mysql>drop database 資料庫名;
實例:
mysql>drop database dbinfo;
3. 數據表的管理
(1) mysql提供的數據類型
-數字型
TINYINT 1位元組
SMALLINT 2位元組
MEDIUMINT 3B
INT 4B
BIGINT 8B
FLOAT[(M,D)] 4B
DOUBEL[(M,D)] 8B
DECIMAL(M,D)
-字元串型
char(M)
varchar(M)
tinytext
text
mediumtext
longtext
enum('..',...)
set(....)
-日期時間型
date
datetime
time
(2) 創建表
#mysql
mysql>use 資料庫;
mysql>create table 表名 (
列名 數據類型 屬性/約束;
.......
.....
) 表選項;
列屬性/約束:
null/not null 是否允許為null
default 值 定義列的默認值
primary key 定義主鍵
check 表達式 定義列的取值范圍
REFERENCES 表名(列名) 定義外部鍵
表選項:
TYPE=HEAP/ISAM/MYISAM/INNOBDB/BDB/MERGE //定義數據表引擎類型
實例:
mysql>use db1
mysql>create table users (
->id varchar(10) primary key,
->name varchar(20) not null,
->password varchar(30) not null) TYPE=MYISAM;
(3) 查看資料庫中已建立的表
#mysql
mysql>use 資料庫;
mysql>show tables;
(4) 查看錶的結構
#mysql
mysql>use 資料庫;
mysql>describe 表名;
(5) 修改表的結構
#mysql
mysql>use 資料庫;
mysql>alter table 表名
add 列定義 //添加列
|drop 列名 //刪除列
|add index 索引名 (列名) //添加索引
|drop index 索引名 //刪除索引
|modify 列定義 //修改列的定義
|add primary key (列名) //添加主鍵
|drop primary key //刪除主鍵
|rename 新表名 //修改表名稱
實例:mysql>alter table users add memo text;
(6) 向表中插入數據
#mysql
mysql>insert into 表名[(列名,...n)] values (值,...)
實例:
mysql>insert into users values ('0001','user1','linux','system admin');
(7) 查看錶中數據
#mysql
mysql>select 列名 [as 別名] [,...n]|*|表達式
->from 表名[,...n]
->[where 條件表達式]
->[order by 列名]
->[group by 列名]
->[having 條件表達式]
實例:
mysql>select * from users;
mysql>select user,password from users;
mysql>select user,password from users where name='user1';
mysql>select * from users order by id desc;
mysql>select 性別, count(*) as 人數 from 學生 group by 性別;
(8) 刪除表中數據
#mysql
mysql>delete from 表名 [where 條件表達式];
實例:
mysql>delete from users;
mysql>delete from users where name='user1';
(9) 修改表中數據
#mysql
mysql>update 表名 set 列名=值 [where 條件表達式];
實例:
mysql>update users set password='132' where name='user1';
(10) 刪除表
#mysql
mysql>drop table 表名;
實例:

④ 我的Dz論壇提示mysql資料庫超過50兆。 1.一般推薦多少兆 2.如何縮小它佔用空間。

對於discuz論壇來說50M的資料庫很小了,等你帖子有幾十萬了,資料庫幾個G都很正常,只要資料庫夠用就可以
別縮小佔用空間,過度優化會有很多的錯誤的
如果資料庫超過10G,可以考慮站庫分離或者雲資料庫

⑤ 如何導入MySQL資料庫

1、打開電腦,在電腦桌面的開始界面中找到mysql,如圖所示。

⑥ mysqlmp直接將MySQL資料庫壓縮備份遇到報錯

一、mysqlmp 備份的時候使用 --extended-insert=false 參數。

原理如下:
使用MySqlmp命令導出數據時的注意
在使用Mysql做基礎資料庫時,由於需要將庫B的數據導入庫A,而A,B庫又包含大量相同的數據,需要使用mysqlmp導出腳本.
通常的命令會是
?

1
2

mysqlmp -t 'dbName' > 'scriptName.sql'
mysql -f 'dbName' < 'scriptName.sql'

而使用如下命令導入到A庫時不會成功,現象是報出幾個Duplicate key error後就完畢了,並未將其餘正確的數據插入到A庫中.
搗鼓了好一會,發現在使用mysqlmp導出的腳本命令中,insert語句採用是multiline insert synax.而不是採用single insert synax.原來是這個問題. 多行的插入語法在第一個主健重復錯誤後就不執行後續的對應表的插入語句了.
於是再加參數 --extended-insert=false,完整的命令是
?

1

mysqlmp --extended-insert=false dbname > scriptname.sql

二、手工把表中username里存在重復的值刪除
使用資料庫工具 Navicat 之類的,執行查詢:
?

1

Select username,Count(*) From cdb_members Group By username Having Count(*) > 1

結果中就能顯示出表中存在重復的欄位, 你會看到2個或者多個完全一模一樣重復的用戶名。刪除其中一行的記錄,保存後再導出資料庫。
這里需要特別注意:備份的時候,把表結構跟數據分開!
以下是 mysqlmp 的一些使用參數
備份資料庫:

?

1
2
3

#mysqlmp 資料庫名 >資料庫備份名
#mysqlmp -A -u用戶名 -p密碼 資料庫名>資料庫備份名
#mysqlmp -d -A --add-drop-table -uroot -p >xxx.sql

1.導出結構不導出數據

?

1

mysqlmp -d 資料庫名 -uroot -p > xxx.sql

2.導出數據不導出結構

?

1

mysqlmp -t 資料庫名 -uroot -p > xxx.sql

3.導出數據和表結構

?

1

mysqlmp 資料庫名 -uroot -p > xxx.sql

4.導出特定表的結構

?

1
2

mysqlmp -uroot -p -B資料庫名 --table 表名 > xxx.sql
#mysqlmp [OPTIONS] database [tables]

mysqlmp支持下列選項:
--add-locks
在每個表導出之前增加LOCK TABLES並且之後UNLOCK TABLE。(為了使得更快地插入到MySQL)。
--add-drop-table
在每個create語句之前增加一個drop table。
--allow-keywords
允許創建是關鍵詞的列名字。這由表名前綴於每個列名做到。
-c, --complete-insert
使用完整的insert語句(用列名字)。
-C, --compress
如果客戶和伺服器均支持壓縮,壓縮兩者間所有的信息。
--delayed
用INSERT DELAYED命令插入行。
-e, --extended-insert
使用全新多行INSERT語法。(給出更緊縮並且更快的插入語句)
-#, --debug[=option_string]
跟蹤程序的使用(為了調試)。
--help
顯示一條幫助消息並且退出。
--fields-terminated-by=...

--fields-enclosed-by=...

--fields-optionally-enclosed-by=...

--fields-escaped-by=...

--fields-terminated-by=...
這些選擇與-T選擇一起使用,並且有相應的LOAD DATA INFILE子句相同的含義。
LOAD DATA INFILE語法。
-F, --flush-logs
在開始導出前,洗掉在MySQL伺服器中的日誌文件。
-f, --force,
即使我們在一個表導出期間得到一個SQL錯誤,繼續。
-h, --host=..
從命名的主機上的MySQL伺服器導出數據。預設主機是localhost。
-l, --lock-tables.
為開始導出鎖定所有表。
-t, --no-create-info
不寫入表創建信息(CREATE TABLE語句)
-d, --no-data
不寫入表的任何行信息。如果你只想得到一個表的結構的導出,這是很有用的!
--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。
應該給你為讀入一個MySQL伺服器的盡可能最快的導出。
-pyour_pass, --password[=your_pass]
與伺服器連接時使用的口令。如果你不指定「=your_pass」部分,mysqlmp需要來自終端的口令。
-P port_num, --port=port_num
與一台主機連接時使用的TCP/IP埠號。(這用於連接到localhost以外的主機,因為它使用 Unix套接字。)
-q, --quick
不緩沖查詢,直接導出至stdout;使用mysql_use_result()做它。
-S /path/to/socket, --socket=/path/to/socket
與localhost連接時(它是預設主機)使用的套接字文件。
-T, --tab=path-to-some-directory
對於每個給定的表,創建一個table_name.sql文件,它包含SQL CREATE 命令,和一個table_name.txt文件,它包含數據。 注意:這只有在mysqlmp運行在mysqld守護進程運行的同一台機器上的時候才工作。.txt文件的格式根據--fields-xxx和--lines--xxx選項來定。
-u user_name, --user=user_name
與伺服器連接時,MySQL使用的用戶名。預設值是你的Unix登錄名。
-O var=option, --set-variable var=option設置一個變數的值。可能的變數被列在下面。
-v, --verbose
冗長模式。列印出程序所做的更多的信息。
-V, --version
列印版本信息並且退出。
-w, --where='where-condition'
只導出被選擇了的記錄;注意引號是強制的!
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
導入數據:

由於mysqlmp導出的是完整的SQL語句,所以用mysql客戶程序很容易就能把數據導入了:

?

#mysql 資料庫名 < 文件名
#source /tmp/xxx.sql