linux mysql5.1
遇到2个问题1 小问题(数据库太多 每次总是要手工创建一个库很麻烦)
mysqldump -uroot -p a(数据库名字) 导出某个库(库名a)的时候不能带 数据库的建立语句比如 CREATE DATABASE /*!32312 IF NOT EXISTS*/ `a` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `a`;这样每次创建的时候都要重新建立一个库 ,之后才能 mysqldump.. a < a.sql才能倒入 数据多机器多的时候好麻烦 .
我测试 mysqldump -uroot --add-drop-database --all-databases > alldb.sql 可以带所有的建立库的语句现在的想法一次在mysqldump -uroot -p a 加上某些组合参数把数据库的建立语句dll也给导出来
? ( 这样我在客户机器上不用创建库名字 直接执行 mysql -uroot -p < a.sql 可以把所有事情解决 )
2 重新设计在线my.cnf 的innodb_buffer_pool_size大小
这个公式 大家又用到没有 ?
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections网上找到一个帖子 (他说当地内存12g 据说用起来可以)
key_buffer = 128M
max_allowed_packet = 1M
table_cache = 128
sort_buffer_size = 128M
net_buffer_length = 8K
read_buffer_size = 128M
read_rnd_buffer_size = 256M
myisam_sort_buffer_size = 32Mmax_connections=600
innodb_buffer_pool_size = 2048M如果用公式计算128M+(128M+128M)*600=153728m = 154g
是否说明公式的问题还是 配置的问题 ?
遇到2个问题1 小问题(数据库太多 每次总是要手工创建一个库很麻烦)
mysqldump -uroot -p a(数据库名字) 导出某个库(库名a)的时候不能带 数据库的建立语句比如 CREATE DATABASE /*!32312 IF NOT EXISTS*/ `a` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `a`;这样每次创建的时候都要重新建立一个库 ,之后才能 mysqldump.. a < a.sql才能倒入 数据多机器多的时候好麻烦 .
我测试 mysqldump -uroot --add-drop-database --all-databases > alldb.sql 可以带所有的建立库的语句现在的想法一次在mysqldump -uroot -p a 加上某些组合参数把数据库的建立语句dll也给导出来
? ( 这样我在客户机器上不用创建库名字 直接执行 mysql -uroot -p < a.sql 可以把所有事情解决 )
2 重新设计在线my.cnf 的innodb_buffer_pool_size大小
这个公式 大家又用到没有 ?
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections网上找到一个帖子 (他说当地内存12g 据说用起来可以)
key_buffer = 128M
max_allowed_packet = 1M
table_cache = 128
sort_buffer_size = 128M
net_buffer_length = 8K
read_buffer_size = 128M
read_rnd_buffer_size = 256M
myisam_sort_buffer_size = 32Mmax_connections=600
innodb_buffer_pool_size = 2048M如果用公式计算128M+(128M+128M)*600=153728m = 154g
是否说明公式的问题还是 配置的问题 ?
read_rnd_buffer_size 有个1M就够,
key_buffer_size 是你所有库表的,myi的,120%就够。
mysqldump -uroot -p -B --add-drop-database DBNAME>R:\TEMP\123.TXT
mysqldump -uroot -p -B --add-drop-database DBNAME>R:\TEMP\123.TXT
感谢 否则我要写太多的脚本 (drop ... create mysqldump)
第2个问题很困惑 当地内存12g cpu双核 下面的my.cnf觉得有问题 ?
key_buffer = 128M
max_allowed_packet = 1M
table_cache = 128
sort_buffer_size = 128M
net_buffer_length = 8K
read_buffer_size = 128M
read_rnd_buffer_size = 256M
myisam_sort_buffer_size = 32Mmax_connections=600
innodb_buffer_pool_size = 2048M设计在线my.cnf 的innodb_buffer_pool_size大小
这个公式
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections+innodb_buffer_pool_size 应该等于物理内存
如果用这个公式计算128M+(128M+128M)*600=153728m = 154g 但是实际物理内存
为12g . linux 系统.
是否说明公式的问题还是 配置的问题 ?
光有--add-drop-database不行,
-B --add-drop-database 最好
2Wi iO)ec z6_;W252676581) 系统使用,假设预留800M;ITPUB个人空间/C.}d'@e [$kEh
2) 线程独享,约4.5GB = 151 * (10M + 10M + 5M + 5M + 512K),组成大概如下:ITPUB个人空间1N FY{ a
sort_buffer_size:10M
F} d(j4[y+@,rt25267658join_buffer_size:10MITPUB个人空间-N_p-`J*G.jHh
read_buffer_size:5MITPUB个人空间3O7nn`b4D }O
read_rnd_buffer_size:5M
(ok U/Y7N ux25267658thread_stack:512KBITPUB个人空间H jj.\ W jc`X
3)MyISAM Key CacheITPUB个人空间n-g8Pa`GeV&m
key_buffer_size 2.4G
(V~E8j` j"La`252676584)Innodb Buffer Pool:忽略,目前系统没有innodb存储引擎的表。总计算:内存使用量 系统占用+峰值所有线程占用+MyiSAM Key Cache占用:800M+4.5G+2.4G=7.7G,还余有0.3G。经过近段时间以来观察(使用show processlist;),峰值线程数量最大为68,这个峰值持续时间仅仅几秒钟,所以目前峰值占用内存值为4.5G,
(MZv C8A5[5iwP6j6d25267658平常通过show peocesslist;查看一般线程数量在30左右。现在192.168.250.20上面数据库的配置,计算下来,在151个线程峰值的时候,占据的内层总共为4.0G,所以为了提高内存利用率以及将来的业务ITPUB个人空间/q!k6x9]2}L n,|
扩展需要有必要对mysql参数进行调整。保守的调整参数值如下:key_buffer_size = 2457MITPUB个人空间o"b+hE+]B0A@
max_allowed_packet = 20MITPUB个人空间-k!ITQ#OIoe
table_open_cache = 1024
mk@#j%Nl.A _25267658sort_buffer_size = 10M
#}I0S ~0Y"t3Gz(K25267658read_buffer_size = 10M
(D5{L3{y#J#ac(U25267658read_rnd_buffer_size = 5MITPUB个人空间+spD+sB`{
read_rnd_buffer_size = 5MITPUB个人空间D8| u3lMOFF_)`
myisam_sort_buffer_size = 64MITPUB个人空间m!Kf#jt`{
thread_cache_size = 8
gwNq*^#i25267658query_cache_size = 132MITPUB个人空间?&tJs:I
thread_concurrency = 8ITPUB个人空间7[:n4gNw5v i p b7m0`
tmp_table_size = 32M这些参数的设置,192.156.250.20数据库可以支持并发用户线程151个。这个只是预期结果,还没有经过上线验证。