my.cnf에 innodb설정에서 autoextend를 사용해 본 경험이 있는가. 이 옵션을 사용할 경우, 관리에 편리함을 제공받지만, disk가 full이 될 경우, 서버가 죽거나 error를 발생시키는 일이 발생하곤 한다. 이로인해 새로운 디스크를 추가하는 작업/이전하는 작업등 최악의 불편함을 야기하게 된다.
autoextend 옵션이 셋팅된 서버에, 수동으로 extend할 수 있도록 셋팅하는 방법을 알아본다.
more..
초기에 InnoDB의 데이터 파일을 하나로 설정하고 자동증가로 두고 쓰다가 데이터 파일을 추가할 때 사이즈 계산하는 방법이다.
http://www.techiegroups.com/showthread.php?t=8348
since you did not have any my.cnf, ibdata1 is an auto-extending data file
(initially 10 MB) in the datadir of MySQL. And there are two 5 MB
ib_logfiles in the datadir.
"
If you specify the last data file with the autoextend option, InnoDB will
extend the last data file if it runs out of free space in the tablespace.
The increment is 8 MB at a time. An example:
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:100M:autoextend
instructs InnoDB to create just a single data file whose initial size is 100
MB and which is extended in 8 MB blocks when space runs out. If the disk
becomes full you may want to add another data file to another disk, for
example. Then you have to look the size of ibdata1, round the size downward
to the closest multiple of 1024 * 1024 bytes (= 1 MB), and specify the
rounded size of ibdata1 explicitly in innodb_data_file_path. After that you
can add another data file:
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
"
81024 pages = 1266 MB
16384 pages = 256 MB
In your case the line
innodb_data_file_path = ibdata1:1266M;ibdata2:10M:autoextend
might work. But best to make a backup of the MySQL datadir first, just in
case something goes wrong.
Regards,
Heikki
처음 my.cnf를 셋팅할 때 100M:autoextend를 설정해두고 얼마나 늘어난지 정확히 알 수 없다면,
위와 같은 방법으로 계산하여, 수동으로 설정할 수가 있다. 따라서, diskfull에 의한 피해를 입지 않도록 할 수 있다.
100M:autoextend 로 설정했다고 해도, 총 데이터 사이즈가 100M를 넘지 않았을 경우에는 그냥 autoextend구문을 빼고, 새로운 데이터파일을 추가할 수 있다.
예) ibdata1:100M:autoextend --> ibdata1:100M; ibdata2:100M
데이터 파일 추가전에 반드시 백업을 통해 데이터유실에 대한 피해를 예방하여야 하며, 사이즈를 잘못 계산하여 에러가 발생했을때에는 err로그를 보자. 그곳에 정확한 page 사이즈가 찍힌다.
more..
위 와 같은 경험을 해본 사람이라면, mysql 사용시 autoextend를 잘 사용하지는 않을 것이다. 하지만, 아직 일부의 개발자들은 autoextend를 편리함으로 인해 사용하고 있다. 이를 지원해주기 위해 위 내용을 알아두고 활용하면 좋으리라. ^0^
출처 - http://niflheim.tistory.com/23
초기에 InnoDB의 데이터 파일을 하나로 설정하고 자동증가로 두고 쓰다가 데이터 파일을 추가할 때 사이즈 계산하는 방법이다.
http://www.techiegroups.com/showthread.php?t=8348
since you did not have any my.cnf, ibdata1 is an auto-extending data file
(initially 10 MB) in the datadir of MySQL. And there are two 5 MB
ib_logfiles in the datadir.
"
If you specify the last data file with the autoextend option, InnoDB will
extend the last data file if it runs out of free space in the tablespace.
The increment is 8 MB at a time. An example:
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:100M:autoextend
instructs InnoDB to create just a single data file whose initial size is 100
MB and which is extended in 8 MB blocks when space runs out. If the disk
becomes full you may want to add another data file to another disk, for
example. Then you have to look the size of ibdata1, round the size downward
to the closest multiple of 1024 * 1024 bytes (= 1 MB), and specify the
rounded size of ibdata1 explicitly in innodb_data_file_path. After that you
can add another data file:
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
"
81024 pages = 1266 MB
16384 pages = 256 MB
In your case the line
innodb_data_file_path = ibdata1:1266M;ibdata2:10M:autoextend
might work. But best to make a backup of the MySQL datadir first, just in
case something goes wrong.
Regards,
Heikki
최초 100MB로 설정된 데이터 파일이 130메가로 자동증가된 경우에는 위와 같이 자동증가 파일의 사이즈를 정해주고 새로운 데이터 파일을 추가하면 된다.
주의할 점은 autoextend 옵션은 마지막에만 쓸 수 있다. 그래서 첫번째 파일의 사이즈를 정해주는 과정이 필요한 것이다.
데이터 파일의 추가 전 반드시 백업을 하여 만일의 사태에 대비하여야 하며, 데이터 파일 추가시에 사이즈 문제로 오류가 발생한다면 에러로그를 보라. 로그안에 페이지 사이즈가 나온다. 그 페이지 사이즈로 위와 같이 용량을 계산하면 된다.
위 경우는 autoextend 된 데이터 파일이 있는 경우에 해당한다. 그러나 원래 설정한 용량이 초과하지 않은 데이터 파일만 있는 경우는 간단히 새로운 데이터 파일과 용량만 설정하고 서버를 다시 시작하면 데이터 파일 추가가 적용된다.
출처 - http://mixellaneous.tistory.com/75
출처 - http://www.mysqlkorea.co.kr/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=1424
'DB > MySQL' 카테고리의 다른 글
mysql - innodb redo log(ib_logfile) (0) | 2013.11.06 |
---|---|
mysql - InnoDB, Innobase (0) | 2013.11.06 |
mysql - innodb 설정 (0) | 2013.11.06 |
mysql - innodb ibdata1 archetecter (0) | 2013.11.06 |
mysql - 권한 정보 테이블(user, db) (0) | 2013.11.01 |