mysql: my-huge.cnf学习整理及常用myisam,innodb引擎下的目录结构解释

一、配置文件
节点1-【client】

user = user_name ‘配置server端执行mysql登录数据库时使用的账号’
password = your_password ‘配置server端执行mysql登录数据库使用的密码’
port = 3306 ‘设置mysql客户端连接服务端时默认使用的端口’
socket = /var/lib/mysql/mysql.sock ‘mysql socket文件位置’

user = user_name ‘配置server端执行mysql登录数据库时使用的账号’
password = your_password ‘配置server端执行mysql登录数据库使用的密码’
port = 3306 ‘设置mysql客户端连接服务端时默认使用的端口’
socket = /var/lib/mysql/mysql.sock ‘mysql socket文件位置’

节点2-【mysqld】

port = 3306 ‘服务端监听的端口’
socket = /var/lib/mysql/mysql.sock ‘socket文件存放位置’
skip-external-locking ‘myisam引擎生效,跳过外部锁定(类似多进程/线程),多个服务器使用同一数据库目录时建议注释’
key_buffer_size = 384M ‘用来设置索引块(index blocks)缓存的大小,它被所有连接共享,决定了数据库索引处理的速度,尤其是索引读的速度(myisam)’
max_allowed_packet = 1M ‘配置mysql允许接受的数据包大小,比如mysql 2006错误则可以调大该值进行测试’
table_open_cache = 512 ‘用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。’
‘当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。’
‘在执行缓存操作之前,如果当前已经缓存的表未达到table_open_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存’
sort_buffer_size = 2M ‘每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存,比如:2个连接=2*2M’
read_buffer_size = 2M ‘MySql读入缓冲区大小,比如,对myisam的表按顺序对全表进行扫描读取,这样的请求将被分配一个读入缓冲区,如果对表的顺序扫描请求非常频繁,且表比较大,可以适当调大该值(该值也是针对每个连接分配)’
read_rnd_buffer_size = 8M ‘随机读缓冲区,当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区(暂时没分清楚与上面配置的区别)’
myisam_sort_buffer_size = 64M ‘当执行REPAIR TABLE, CREATE INDEX or ALTER TABLE时会分配该缓冲区’
thread_cache_size = 8 ‘用来缓存客户端connect连接线程,比如:当有一个connect断开时,连接线程将被放到缓存中,如果线程重新被请求,那么将从缓存中读取线程,’
‘如果缓存区是空的或者连接是新的,那么将会创建一个新的线程。新的连接请求较多的情况下,可以适当增加该值(1GB内存=8,2GB=16,类推。)’
query_cache_size = 32M ‘缓存查询语句返回的完整结果,当有新的查询命中缓存,则直接返回结果,跳过了解析,执行等阶段(有小伙伴对该参数做了详细的分析实验:http://imysql.com/2015/03/27/mysql-faq-why-should-we-disable-query-cache.shtml)
‘原理:系统为query_cache预留32M空闲内存,当有查询操作返回结果时,先从空闲内存中申请一个数据块,值为query_cache_min_res_unit的配置,如果不够,继续申请,如果存储完时有空余则释放多余的,整个申请分配内存过程都会锁住空闲块’
thread_concurrency = 8 ‘众说纷纭,大多人数认为该参数没有实际意义,但有伙伴在linux下面测试是有一定效果的,官方文档建议设置为CPU核数的两倍’
tmpdir = /tmp/ ‘临时文件存放目录’
skip-networking ‘关闭通过TCP/IP协议连接mysql,配合enable-named-pipe该配置可以在服务端使用–protocol=pipe登录mysql(mysql --protocol=pipe -u root -p)’

port = 3306 ‘服务端监听的端口’
socket = /var/lib/mysql/mysql.sock ‘socket文件存放位置’
skip-external-locking ‘myisam引擎生效,跳过外部锁定(类似多进程/线程),多个服务器使用同一数据库目录时建议注释’
key_buffer_size = 384M ‘用来设置索引块(index blocks)缓存的大小,它被所有连接共享,决定了数据库索引处理的速度,尤其是索引读的速度(myisam)’
max_allowed_packet = 1M ‘配置mysql允许接受的数据包大小,比如mysql 2006错误则可以调大该值进行测试’
table_open_cache = 512 ‘用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。’
‘当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。’
‘在执行缓存操作之前,如果当前已经缓存的表未达到table_open_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存’
sort_buffer_size = 2M ‘每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存,比如:2个连接=2*2M’
read_buffer_size = 2M ‘MySql读入缓冲区大小,比如,对myisam的表按顺序对全表进行扫描读取,这样的请求将被分配一个读入缓冲区,如果对表的顺序扫描请求非常频繁,且表比较大,可以适当调大该值(该值也是针对每个连接分配)’
read_rnd_buffer_size = 8M ‘随机读缓冲区,当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区(暂时没分清楚与上面配置的区别)’
myisam_sort_buffer_size = 64M ‘当执行REPAIR TABLE, CREATE INDEX or ALTER TABLE时会分配该缓冲区’
thread_cache_size = 8 ‘用来缓存客户端connect连接线程,比如:当有一个connect断开时,连接线程将被放到缓存中,如果线程重新被请求,那么将从缓存中读取线程,’
‘如果缓存区是空的或者连接是新的,那么将会创建一个新的线程。新的连接请求较多的情况下,可以适当增加该值(1GB内存=8,2GB=16,类推。)’
query_cache_size = 32M ‘缓存查询语句返回的完整结果,当有新的查询命中缓存,则直接返回结果,跳过了解析,执行等阶段(有小伙伴对该参数做了详细的分析实验:http://imysql.com/2015/03/27/mysql-faq-why-should-we-disable-query-cache.shtml)
‘原理:系统为query_cache预留32M空闲内存,当有查询操作返回结果时,先从空闲内存中申请一个数据块,值为query_cache_min_res_unit的配置,如果不够,继续申请,如果存储完时有空余则释放多余的,整个申请分配内存过程都会锁住空闲块’
thread_concurrency = 8 ‘众说纷纭,大多人数认为该参数没有实际意义,但有伙伴在linux下面测试是有一定效果的,官方文档建议设置为CPU核数的两倍’
tmpdir = /tmp/ ‘临时文件存放目录’
skip-networking ‘关闭通过TCP/IP协议连接mysql,配合enable-named-pipe该配置可以在服务端使用–protocol=pipe登录mysql(mysql --protocol=pipe -u root -p)’
【mysqld】节点中关于主从的配置

log-bin=mysql-bin ‘mysql二进制文件的名称’
server-id = 1 ‘master-server端的唯一ID标识,可设置1-(2^32-1)之间任意数’
master-host = ‘从mysql配置master-server的地址’
master-user = ‘从mysql配置登录master-server进行数据复制的用户(该用户需在主mysql中创建并授权replication权限)’
master-password = ‘上面配置用户对应的密码’
master-port = ‘连接端口,默认为3306,如果master-server更换了监听端口则填写对应的即可’
log-bin=mysql-bin ‘slave端的二进制日志文件名称,不是必须配置,但建议设置’
binlog_format=mixed ‘二进制日志的格式,解释:http://www.111cn.net/database/mysql/71702.htm

log-bin=mysql-bin ‘mysql二进制文件的名称’
server-id = 1 ‘master-server端的唯一ID标识,可设置1-(2^32-1)之间任意数’
master-host = ‘从mysql配置master-server的地址’
master-user = ‘从mysql配置登录master-server进行数据复制的用户(该用户需在主mysql中创建并授权replication权限)’
master-password = ‘上面配置用户对应的密码’
master-port = ‘连接端口,默认为3306,如果master-server更换了监听端口则填写对应的即可’
log-bin=mysql-bin ‘slave端的二进制日志文件名称,不是必须配置,但建议设置’
binlog_format=mixed ‘二进制日志的格式,解释:http://www.111cn.net/database/mysql/71702.htm
Innodb引擎

innodb_data_home_dir = /var/lib/mysql ‘配置innodb引擎引擎下mysql数据存放的位置’
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend ‘指定1个名为ibdata1大小固定2000M,与1个ibdata2大小10M的自扩展表空间’
innodb_log_group_home_dir = /var/lib/mysql ‘指定innodb日志文件组中日志的存放位置,如(ib_logfile0,ib_logfile1)’
innodb_buffer_pool_size = 384M ‘感觉有点类似key_buffer_size,如果数据库全使用innodb,该值可以设置到内存的70%-80%左右,’
‘当对相同数据表进行不止一次查询操作时,该值设置的越大对性能提升越高,能有效降低磁盘I/O(对CPU消耗也越大,建议设置合适的值)’
innodb_additional_mem_pool_size = 20M ‘用于存放 Innodb 的数据目录信息和其他一些内部结构所需要的内存空间’
innodb_log_file_size = 100M ‘确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间’
‘(设置多大?http://blog.csdn.net/langkeziju/article/details/51094289)’
innodb_log_buffer_size = 8M ‘确定日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间’
innodb_flush_log_at_trx_commit = 1 ‘默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。’
‘设成2它的意思是不写入硬盘而是写入系统缓存。日志通过缓存flush到硬盘,所以你一般不会丢失超过1-2秒的更新。’
‘设成0会更快一点(每秒写入mysql日志文件中,再从mysql日志中写入硬盘log文件)’
‘但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据’
innodb_lock_wait_timeout = 50 ‘用于innodb在出现表锁导致死锁情况的时候等待多久后回滚(如果有特殊语句执行本身就比较耗时,则该值不能设置的太小)’
innodb_file_per_table = 1 ‘开启独享表空间’

innodb_data_home_dir = /var/lib/mysql ‘配置innodb引擎引擎下mysql数据存放的位置’
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend ‘指定1个名为ibdata1大小固定2000M,与1个ibdata2大小10M的自扩展表空间’
innodb_log_group_home_dir = /var/lib/mysql ‘指定innodb日志文件组中日志的存放位置,如(ib_logfile0,ib_logfile1)’
innodb_buffer_pool_size = 384M ‘感觉有点类似key_buffer_size,如果数据库全使用innodb,该值可以设置到内存的70%-80%左右,’
‘当对相同数据表进行不止一次查询操作时,该值设置的越大对性能提升越高,能有效降低磁盘I/O(对CPU消耗也越大,建议设置合适的值)’
innodb_additional_mem_pool_size = 20M ‘用于存放 Innodb 的数据目录信息和其他一些内部结构所需要的内存空间’
innodb_log_file_size = 100M ‘确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间’
‘(设置多大?http://blog.csdn.net/langkeziju/article/details/51094289)’
innodb_log_buffer_size = 8M ‘确定日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间’
innodb_flush_log_at_trx_commit = 1 ‘默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。’
‘设成2它的意思是不写入硬盘而是写入系统缓存。日志通过缓存flush到硬盘,所以你一般不会丢失超过1-2秒的更新。’
‘设成0会更快一点(每秒写入mysql日志文件中,再从mysql日志中写入硬盘log文件)’
‘但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据’
innodb_lock_wait_timeout = 50 ‘用于innodb在出现表锁导致死锁情况的时候等待多久后回滚(如果有特殊语句执行本身就比较耗时,则该值不能设置的太小)’
innodb_file_per_table = 1 ‘开启独享表空间’
节点3-【mysqldump】

[mysqldump]
quick ‘强制mysqldump每次从服务器检索表的行,而不是检索所有行,并在导入/出之前将其缓冲在内存中。(能加快大数据库的导出速度)’
max_allowed_packet = 16M ‘服务器发送和接受的最大包长度’

[mysqldump]
quick ‘强制mysqldump每次从服务器检索表的行,而不是检索所有行,并在导入/出之前将其缓冲在内存中。(能加快大数据库的导出速度)’
max_allowed_packet = 16M ‘服务器发送和接受的最大包长度’
节点4-【mysql】

[mysql]
no-auto-rehash ‘类似linux的Tab补全(mysql命令行),no表示不能补全’
safe-updates ‘mysql安全更新模式(能够限制insert,update语句)比如开启后执行update语句需要指定条件where和limit,否则会执行失败,该配置能防止误操作’

[mysql]
no-auto-rehash ‘类似linux的Tab补全(mysql命令行),no表示不能补全’
safe-updates ‘mysql安全更新模式(能够限制insert,update语句)比如开启后执行update语句需要指定条件where和limit,否则会执行失败,该配置能防止误操作’
节点5-【myisamchk】

[myisamchk] ‘以下配置类似于前面的配置项,不过只有执行myisamchk有效’
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[myisamchk] ‘以下配置类似于前面的配置项,不过只有执行myisamchk有效’
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
节点6-【mysqlhotcopy】

[mysqlhotcopy]
interactive-timeout ‘服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端,’
‘详解:http://www.cnblogs.com/ivictor/p/5979731.html

[mysqlhotcopy]
interactive-timeout ‘服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端,’
‘详解:http://www.cnblogs.com/ivictor/p/5979731.html
二、数据目录结构记录

[root@ebs-26532 mysql]# ls
aria_log.00000001 aria_log_control ebs-26532.err ebs-26532.pid ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock performance_schema test

[root@ebs-26532 mysql]# ls
aria_log.00000001 aria_log_control ebs-26532.err ebs-26532.pid ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock performance_schema test

aria_log.00000001
aria_log_control ‘这两个文件暂时没弄清楚具体意义,查资料应该与备份与恢复有关’

aria_log.00000001
aria_log_control ‘这两个文件暂时没弄清楚具体意义,查资料应该与备份与恢复有关’

ebs-26532.err ‘mysql的启动错误日志’

ebs-26532.err ‘mysql的启动错误日志’

ebs-26532.pid ‘PID文件’

ebs-26532.pid ‘PID文件’

ibdata1 ‘innodb共享表空间文件,受innodb_data_file_path配置影响’

ibdata1 ‘innodb共享表空间文件,受innodb_data_file_path配置影响’

ib_logfile0
ib_logfile1 ‘innodb引擎的事务日志,在服务器崩溃重启或者数据异常时,可以用来恢复数据’

ib_logfile0
ib_logfile1 ‘innodb引擎的事务日志,在服务器崩溃重启或者数据异常时,可以用来恢复数据’

mysql ‘主要有一些安全用的表,和存储过程存放的表’
performance_schema ‘用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。’
‘MySQL5.5默认是关闭的,需要手动开启,在配置文件里添加:performance_schema=ON’
test ‘测试数据库,可以删除’

mysql ‘主要有一些安全用的表,和存储过程存放的表’
performance_schema ‘用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。’
‘MySQL5.5默认是关闭的,需要手动开启,在配置文件里添加:performance_schema=ON’
test ‘测试数据库,可以删除’

mysql.sock ‘mysql socket文件,程序与mysqlserver处于同一台机器,发起本地连接时可用’
‘例如你无须定义连接host的具体IP地址,只要为空或localhost就可以,此种情况下,即使你改变mysql的外部port也是一样可能正常连接’
1
2
mysql.sock ‘mysql socket文件,程序与mysqlserver处于同一台机器,发起本地连接时可用’
‘例如你无须定义连接host的具体IP地址,只要为空或localhost就可以,此种情况下,即使你改变mysql的外部port也是一样可能正常连接’
Myisam,Innodb的数据存储结构

Myisam:
.frm ‘结构文件,描述表的结构(它的列、列类型、索引等)’
.ISD(ISAM)/.MYD(MyISAM) ‘数据文件,包含表里所有的数据’
.ISM(ISAM)/.MYI(MyISAM) ‘索引文件,包含数据文件上的所有索引的索引树’

Myisam:
.frm ‘结构文件,描述表的结构(它的列、列类型、索引等)’
.ISD(ISAM)/.MYD(MyISAM) ‘数据文件,包含表里所有的数据’
.ISM(ISAM)/.MYI(MyISAM) ‘索引文件,包含数据文件上的所有索引的索引树’

Innodb:
.frm ‘表结构文件’
.ibd ‘数据文件,默认使用ibdata1共享表空间,innodb_file_per_table=1时每个表会生成单独的表空间’

Innodb:
.frm ‘表结构文件’
.ibd ‘数据文件,默认使用ibdata1共享表空间,innodb_file_per_table=1时每个表会生成单独的表空间’
另外所有数据库中还存在一个同样的文件,db.opt

.opt ‘存储默认字符集和排序规则’

.opt ‘存储默认字符集和排序规则’
转载:时光 » mysql: my-huge.cnf学习整理及常用myisam,innodb引擎下的目录结构解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值