当前位置:首页 » 数据仓库 » 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