mysql创建数据库时如何指定数据文件与日志文件的位置和大小

mysql创建数据库时如何指定数据文件与日志文件的位置和大小,第1张

Mysql创建数据库时会在如下目录创建以数据库名为名的目录

show variables like "%datadir%";

数据文件日志也就在相应目录下了。

日志大小、看看这些参数是否能达到你的目的:

命令行参数

–log-bin=filename:记录二进制日志文件的位置,尽量指定路径名,如果不指定的话则保存在数据目录;

–log-bin-index=file:记录二进制日志文件索引的位置,保存了日志文件名;

–max_binlog_size:单个文件最大多少;

–binlog-do-db=db_name:哪个数据库使用,只有这个数据库使用;

–binlog-ignore-db=db_name:哪个数据库不使用,只有这个数据库不使用;

系统变量

log_bin:日志的位置;

binlog_cache_size:二进制日志缓存大小,是每一个连接进来的线程分配的大小,不是整个服务器的大小;

max_binlog_cache_size:最大缓存大小;

max_binlog_size:单个文件最大大小,超过此大小则再分配一个文件,但是一个事务必须在一个文件中,所以可能会稍大点;

binlog_cache_use:当前连接使用的binlog缓存的事务的数量,使用show status like ‘binlog_cache_use’查看(show status命令显示了所有连接到mysql服务器的状态值);

binlog_cache_disk_use:如果binlog_cache_use不够用,则在磁盘上缓存,应该尽量避免;

binlog_do_db:设置master-slave时使用;

binlog-ignore-db:设置哪个数据库不记录日志;

sync_binlog:缓存与硬盘的同步频率(commit多少下同步一次,0表示服务器自动控制);

如:> sp_helpsegment system 查看系统的剩余空间

> sp_helpsegment logsegment 查看日志的剩余空间

也可sp_helpdb db_name来查询。。

通过sp_helpdb dbname得到的返回值有(部分信息):

device_fragments size usage free kbytes

---------------- ---- ----- -----------

ciimlog 4500 MB data only 240

ciimlog 10220 MB data only 912

ciimlog 2180 MB log only 223232

ciimlog 3100 MB log only 317440

datadev1 1920 MB data only 6208

datadev1 10000 MB data only 62992

datadev1 3080 MB log only 315392

datadev1 5000 MB log only 512000

定期分析sqlserver日志是DBA很重要的任务,那如何才能查看sqlserver日志呢

在SQL Server 70和SQL Server2000中,可以用下面的命令查看:

DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )

参数:

Dbid or dbname - 任一数据库的ID或名字

type - 输出结果的类型:

0 - 最少信息(operation, context, transaction id)

1 - 更多信息(plus flags, tags, row length)

2 - 非常详细的信息(plus object name, index name,page id, slot id)

3 - 每种 *** 作的全部信息

4 - 每种 *** 作的全部信息加上该事务的16进制信息

默认 type = 0

要查看MSATER数据库的事务日志可以用以下命令:

DBCC log (master)

释放日志空间

1清空日志

DUMP TRANSACTION 库名 WITH NO_LOG

2截断事务日志:

BACKUP LOG 数据库名 WITH NO_LOG

3收缩数据库文件(如果不压缩,数据库的文件不会减小

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件

--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成

--收缩数据库

DBCC SHRINKDATABASE(客户资料)

--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select from sysfiles

DBCC SHRINKFILE(1)

4为了最大化的缩小日志文件(如果是sql 70,这步只能在查询分析器中进行)

a分离数据库:

企业管理器--服务器--数据库--右键--分离数据库

b在我的电脑中删除LOG文件

c附加数据库:

企业管理器--服务器--数据库--右键--附加数据库

此法将生成新的LOG,大小只有500多K

或用代码:

下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a分离

E X E C sp_detach_db @dbname = 'pubs'

b删除日志文件

c再附加

E X E C sp_attach_single_file_db @dbname = 'pubs',

@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubsmdf'

5为了以后能自动收缩,做如下设置:

企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"

--SQL语句设置方式:

E X E C sp_dboption '数据库名', 'autoshrink', 'TRUE'

6如果想以后不让它日志增长得太大

企业管理器--服务器--右键数据库--属性--事务日志

--将文件增长限制为xM(x是你允许的最大数据文件大小)

--SQL语句的设置方式:

alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)

特别注意:

请按步骤进行,未进行前面的步骤,请不要做后面的步骤

否则可能损坏你的数据库

一般不建议做第4,6两步

第4步不安全,有可能损坏数据库或丢失数据

第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复

另外提供一种更简单的方法,建议大家使用。

更简单的方法:

1。右建数据库属性窗口--故障还原模型--设为简单

2。右建数据库所有任务--收缩数据库

3。右建数据库属性窗口--故障还原模型--设为大容量日志记录

首先看应用的运算量,如果一个运算还没有结束,重做日志就满了,就是重做

日志文件

太小了,至少保证一个

回滚

事务在一个回滚段里面,也就是在一个重做日志文件里面。

个数:

一般应用就是数据库缺省的三组重做日志,对于应用重要的数据库,需要设置6组重做日志文件,每组重做日志包含两个相同大小日志文件。

打字太费劲了。

第一个是db2的日志问题。db2数据库的日志有两种模式,一种是循环日志,一种是归档模式。你的说法有问题,如果是循环日志的话,根据你的数据库里配置的三个参数,主日志文件和辅助日志文件数及日志大小文件,总的日志大小不会超过(总日志文件数与日志大小的乘积),然后是循环使用的,也就是说,如果数据库进行一次事务 *** 作时,先生成第一个主日志文件(受日志文件大小参数)控制,不足时生成第二个主日志文件,当一次事务超过所有的主日志文件时,才会创建辅助日志文件),然后下次覆盖第一个,依次循环,所以循环日志模式,日志文件大小不是无限增大的。只有在归档模式下才会不断产生日志文件,这种模式的好处是数据库可以恢复到任意时点。查看数据库日志的模式时,可以在db2=>命令行下connect to db name 然后 db2=> get db cfg for dbname

会看到有如下几个参数与日志有关系:

启用的恢复的日志保留 (LOGRETAIN) = OFF

启用的日志记录的用户出口 (USEREXIT) = OFF

日志文件大小(4KB) (LOGFILSIZ) = 1024

主日志文件的数目 (LOGPRIMARY) = 13

辅助日志文件的数目 (LOGSECOND) = 4

已更改的至日志文件的路径 (NEWLOGPATH) =

日志文件路径 = D:\DB2\NODE0000\SQL00002\SQLOGDIR\

溢出日志路径 (OVERFLOWLOGPATH) =

镜像日志路径 (MIRRORLOGPATH) =

首个活动日志文件 =

可以看出这里的数据库是运行于循环日志模式,第一个参数是off,如果是on则处于归档模式。下边有日志文件的路径,如果是归档模式,还可以查看到首个活动日志文件,则可以备份归档日志后,删除活动日志以前的归档日志文件。因此你说的按天的日志不知道是什么意思。更改上述参数采用 update db cfg using

第二个问题:db2的数据库数据是存储在表里的,表是位于表空间的,表空间对应的表空间容器物理文件存储在文件系统上。随着数据量的增大,分区容量不够时,一种方法是备份数据库,然后使用[重定向]还原数据库,将数据库的表空间容器重定向到一个存储量大的目录或者磁盘上。另一种方法是,直接为该表空间增加新的表空间容器,就可以了。比较简单,在此不在详述。

查看表空间信息时db2=>connect to dbname

db2=>list tablespaces

看到用户定义的表空间的编号,一般是3以后的。

然后

db2=>list tablespace containers for 3

可以查看3号表空间对应的表空间容器信息,一个表空间可以有多个表空间容器,这些表空间容器可以位于不同的磁盘和文件目录上,这样可以解决某个硬盘或者目录容量不足的问题。

给表空间增加容器的方法就不用讲了,直接alter tablespace语句就行了。

--修改数据库文件增量

USE master

GO

Alter DATABASE Test

MODIFY FILE

(NAME = test,

-- SIZE = 1000MB,

--MAXSIZE = 10000MB,

FILEGROWTH = 100MB)

GO

--修改数据库日志文件增量

USE master

GO

Alter DATABASE Test

MODIFY FILE

(NAME = test_log,

-- SIZE = 1000MB,

--MAXSIZE = 10000MB,

FILEGROWTH = 100MB)

GO

参考以下内容:

[c-sharp]view plaincopyprint

/

一般的虚拟主机上,附送的sql server数据库都是限制了大小,比如100M。当你的数据库空间达到了指定的100M时,插入新数据就会报错:

未能为数据库 'a1116173958' 中的对象 'fc_Info' 分配空间,因为文件组 'PRIMARY' 已满

其实,有些主机商的数据库大小是可以自己修改的。当然,修改之前你需要知道数据库名(这里是逻辑名称),一般的这个名称是很容易知道的,就是数据库名称。

你可以尝试下在自己编写的程序中,或空间的管理后台中等可以执行sql语句的地方试一下下面的语句:

Alter DATABASE 数据库名

modify FILE

( NAME = 数据库名,

MAXSIZE = 200MB,

FILEGROWTH = 5MB)

如果执行成功,那么恭喜你了。

========我是分割线============================================

下面是Alter DATABASE的一些参考资料,详细可以查看sql server帮助。

在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。Alter DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。

Alter DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。

语法

Alter DATABASE database

{ ADD FILE < filespec > [ ,n ] [ TO FILEGROUP filegroup_name ]

| ADD LOG FILE < filespec > [ ,n ]

| REMOVE FILE logical_file_name

| ADD FILEGROUP filegroup_name

| REMOVE FILEGROUP filegroup_name

| MODIFY FILE < filespec >

| MODIFY NAME = new_dbname

| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }

| SET < optionspec > [ ,n ] [ WITH < termination > ]

| COLLATE < collation_name >

}

< filespec > ::=

( NAME = logical_file_name

[ , NEWNAME = new_logical_name ]

[ , FILENAME = 'os_file_name' ]

[ , SIZE = size ]

[ , MAXSIZE = { max_size | UNLIMITED } ]

[ , FILEGROWTH = growth_increment ] )

< optionspec > ::=

<state_option>

| < cursor_option >

| < auto_option >

| < sql_option >

| < recovery_option >

< state_option > ::=

{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }

| { OFFLINE | ONLINE }

| { READ_ONLY | READ_WRITE }

< termination > ::=

ROLLBACK AFTER integer [ SECONDS ]

| ROLLBACK IMMEDIATE

| NO_WAIT

< cursor_option > ::=

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

| CURSOR_DEFAULT { LOCAL | GLOBAL }

< auto_option > ::=

AUTO_CLOSE { ON | OFF }

| AUTO_Create_STATISTICS { ON | OFF }

| AUTO_SHRINK { ON | OFF }

| AUTO_Update_STATISTICS { ON | OFF }

< sql_option > ::=

ANSI_NULL_DEFAULT { ON | OFF }

| ANSI_NULLS { ON | OFF }

| ANSI_PADDING { ON | OFF }

| ANSI_WARNINGS { ON | OFF }

| ARITHABORT { ON | OFF }

| CONCAT_NULL_YIELDS_NULL { ON | OFF }

| NUMERIC_ROUNDABORT { ON | OFF }

| QUOTED_IDENTIFIER { ON | OFF }

| RECURSIVE_TRIGGERS { ON | OFF }

< recovery_option > ::=

RECOVERY { FULL | BULK_LOGGED | SIMPLE }

| TORN_PAGE_DETECTION { ON | OFF }

以上就是关于mysql创建数据库时如何指定数据文件与日志文件的位置和大小全部的内容,包括:mysql创建数据库时如何指定数据文件与日志文件的位置和大小、如何查看sybase数据库空间日志、如何查看sqlserver日志的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9439337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存