[TYPO3-UG Dutch] Serverbeheer MySQL vraag

Jordan van Bergen jordanvanbergen at gmail.com
Sat Apr 30 20:26:39 CEST 2011


Nou ik heb het aangedurfd op de live omgeving:

MySQL gestopt:
/etc/init.d/mysql stop
nu de /var/lib/mysql/ibdata en ib_logfile0 en ib_logfile1 gemoved naar
een tijdelijke /backup directory mocht het mis gaan.

Toen in /etc/mysql/my.cnf
deze regel toegevoegd zodat iedere tabel zijn eigen .ibd bestand
krijgt:

innodb_file_per_table = 1

MySQL weer starten
/etc/init.d/mysql start

Leek goed te gaan maar ik kon van mijn database geen dump meer maken.
Vette foutmelding. Toen met database compare van de install tool
uitgevogeld welke tabellen het niet meer deden en deze eerst met DROP
TABLE en dan CREATE TABEL weer aangemaakt:

DROP TABLE cache_hash;
CREATE TABLE cache_hash ( id int(11) unsigned NOT NULL auto_increment,
hash varchar(32) NOT NULL default '', content mediumblob, tstamp
int(11) unsigned NOT NULL default '0', ident varchar(32) NOT NULL
default '', PRIMARY KEY (id), KEY hash (hash) ) ENGINE=InnoDB;  

DROP TABLE cachingframework_cache_hash;
CREATE TABLE cachingframework_cache_hash ( id int(11) unsigned NOT
NULL auto_increment, identifier varchar(128) NOT NULL default '',
crdate int(11) unsigned NOT NULL default '0', content mediumblob,
lifetime int(11) unsigned NOT NULL default '0', PRIMARY KEY (id), KEY
cache_id (identifier) ) ENGINE=InnoDB;  

DROP TABLE cachingframework_cache_hash_tags;
CREATE TABLE cachingframework_cache_hash_tags ( id int(11) unsigned
NOT NULL auto_increment, identifier varchar(128) NOT NULL default '',
tag varchar(128) NOT NULL default '', PRIMARY KEY (id), KEY cache_id
(identifier), KEY cache_tag (tag) ) ENGINE=InnoDB;  

DROP TABLE cache_imagesizes;
CREATE TABLE cache_imagesizes ( md5hash varchar(32) NOT NULL default
'', md5filename varchar(32) NOT NULL default '', tstamp int(11) NOT
NULL default '0', filename varchar(255) NOT NULL default '',
imagewidth mediumint(11) unsigned NOT NULL default '0', imageheight
mediumint(11) unsigned NOT NULL default '0', PRIMARY KEY (md5filename)
) ENGINE=InnoDB;  

DROP TABLE sys_history;
CREATE TABLE sys_history ( uid int(11) unsigned NOT NULL
auto_increment, sys_log_uid int(11) NOT NULL default '0', history_data
mediumtext, fieldlist text, recuid int(11) NOT NULL default '0',
tablename varchar(255) NOT NULL default '', tstamp int(11) NOT NULL
default '0', history_files mediumtext, snapshot tinyint(4) NOT NULL
default '0', PRIMARY KEY (uid), KEY recordident_1 (tablename,recuid),
KEY recordident_2 (tablename,tstamp), KEY sys_log_uid (sys_log_uid) )
ENGINE=InnoDB;  

DROP TABLE sys_log;
CREATE TABLE sys_log ( uid int(11) unsigned NOT NULL auto_increment,
userid int(11) unsigned NOT NULL default '0', action tinyint(4)
unsigned NOT NULL default '0', recuid int(11) unsigned NOT NULL
default '0', tablename varchar(255) NOT NULL default '', recpid
int(11) NOT NULL default '0', error tinyint(4) unsigned NOT NULL
default '0', details text NOT NULL, tstamp int(11) unsigned NOT NULL
default '0', type tinyint(3) unsigned NOT NULL default '0', details_nr
tinyint(3) unsigned NOT NULL default '0', IP varchar(39) NOT NULL
default '', log_data varchar(255) NOT NULL default '', event_pid
int(11) NOT NULL default '-1', workspace int(11) NOT NULL default '0',
NEWid varchar(20) NOT NULL default '', PRIMARY KEY (uid), KEY event
(userid,event_pid), KEY recuidIdx (recuid,uid) ) ENGINE=InnoDB;  

DROP TABLE cache_pages;
CREATE TABLE cache_pages ( id int(11) unsigned NOT NULL
auto_increment, hash varchar(32) NOT NULL default '', page_id int(11)
unsigned NOT NULL default '0', reg1 int(11) unsigned NOT NULL default
'0', HTML mediumblob, temp_content int(1) NOT NULL default '0', tstamp
int(11) unsigned NOT NULL default '0', expires int(10) unsigned NOT
NULL default '0', cache_data mediumblob, KEY page_id (page_id), KEY
sel (hash,page_id), PRIMARY KEY (id) ) ENGINE=InnoDB;  

DROP TABLE cache_pagesection;
CREATE TABLE cache_pagesection ( page_id int(11) unsigned NOT NULL
default '0', mpvar_hash int(11) unsigned NOT NULL default '0', content
blob, tstamp int(11) unsigned NOT NULL default '0', PRIMARY KEY
(page_id,mpvar_hash) ) ENGINE=InnoDB;  

DROP TABLE cachingframework_cache_pages;
CREATE TABLE cachingframework_cache_pages ( id int(11) unsigned NOT
NULL auto_increment, identifier varchar(128) NOT NULL default '',
crdate int(11) unsigned NOT NULL default '0', content mediumblob,
lifetime int(11) unsigned NOT NULL default '0', PRIMARY KEY (id), KEY
cache_id (identifier) ) ENGINE=InnoDB;  

DROP TABLE cachingframework_cache_pages_tags;
CREATE TABLE cachingframework_cache_pages_tags ( id int(11) unsigned
NOT NULL auto_increment, identifier varchar(128) NOT NULL default '',
tag varchar(128) NOT NULL default '', PRIMARY KEY (id), KEY cache_id
(identifier), KEY cache_tag (tag) ) ENGINE=InnoDB;  

DROP TABLE cachingframework_cache_pagesection;
CREATE TABLE cachingframework_cache_pagesection ( id int(11) unsigned
NOT NULL auto_increment, identifier varchar(128) NOT NULL default '',
crdate int(11) unsigned NOT NULL default '0', content mediumblob,
lifetime int(11) unsigned NOT NULL default '0', PRIMARY KEY (id), KEY
cache_id (identifier) ) ENGINE=InnoDB;  

DROP TABLE cachingframework_cache_pagesection_tags;
CREATE TABLE cachingframework_cache_pagesection_tags ( id int(11)
unsigned NOT NULL auto_increment, identifier varchar(128) NOT NULL
default '', tag varchar(128) NOT NULL default '', PRIMARY KEY (id),
KEY cache_id (identifier), KEY cache_tag (tag) ) ENGINE=InnoDB;  

DROP TABLE cache_typo3temp_log;
CREATE TABLE cache_typo3temp_log ( md5hash varchar(32) NOT NULL
default '', tstamp int(11) NOT NULL default '0', filename varchar(255)
NOT NULL default '', orig_filename varchar(255) NOT NULL default '',
PRIMARY KEY (md5hash) ) ENGINE=InnoDB;  

DROP TABLE cache_md5params;
CREATE TABLE cache_md5params ( md5hash varchar(20) NOT NULL default
'', tstamp int(11) NOT NULL default '0', type tinyint(3) NOT NULL
default '0', params text, PRIMARY KEY (md5hash) ) ENGINE=InnoDB;  

DROP TABLE cache_treelist;
CREATE TABLE cache_treelist ( md5hash char(32) NOT NULL default '',
pid int(11) NOT NULL default '0', treelist text, tstamp int(11) NOT
NULL default '0', expires int(11) unsigned NOT NULL default '0',
PRIMARY KEY (md5hash) ) ENGINE=InnoDB;  

DROP TABLE fe_session_data;
CREATE TABLE fe_session_data ( hash varchar(32) NOT NULL default '',
content mediumblob, tstamp int(11) unsigned NOT NULL default '0',
PRIMARY KEY (hash), KEY tstamp (tstamp) ) ENGINE=InnoDB;  

DROP TABLE fe_sessions;
CREATE TABLE fe_sessions ( ses_id varchar(32) NOT NULL default '',
ses_name varchar(32) NOT NULL default '', ses_iplock varchar(39) NOT
NULL default '', ses_hashlock int(11) NOT NULL default '0', ses_userid
int(11) unsigned NOT NULL default '0', ses_tstamp int(11) unsigned NOT
NULL default '0', ses_data blob, ses_permanent tinyint(1) unsigned NOT
NULL default '0', PRIMARY KEY (ses_id,ses_name) ) ENGINE=InnoDB;  

DROP TABLE tt_news_cache;
CREATE TABLE tt_news_cache ( id int(11) unsigned NOT NULL
auto_increment, identifier varchar(32) NOT NULL default '', content
text NOT NULL, crdate int(11) NOT NULL default '0', lifetime int(11)
NOT NULL default '0', PRIMARY KEY (id), KEY cache_id (identifier) )
ENGINE=InnoDB;  

DROP TABLE tt_news_cache_tags;
CREATE TABLE tt_news_cache_tags ( id int(11) unsigned NOT NULL
auto_increment, identifier varchar(128) NOT NULL default '', tag
varchar(128) NOT NULL default '', PRIMARY KEY (id), KEY cache_id
(identifier), KEY cache_tag (tag) ) ENGINE=InnoDB;  

DROP TABLE tx_realurl_pathcache;
CREATE TABLE tx_realurl_pathcache ( cache_id int(11) NOT NULL
auto_increment, page_id int(11) NOT NULL default '0', language_id
int(11) NOT NULL default '0', rootpage_id int(11) NOT NULL default
'0', mpvar tinytext NOT NULL, pagepath text NOT NULL, expire int(11)
NOT NULL default '0', PRIMARY KEY (cache_id), KEY pathq1
(rootpage_id,pagepath(32),expire), KEY pathq2
(page_id,language_id,rootpage_id,expire), KEY expire (expire) )
ENGINE=InnoDB;  

DROP TABLE tx_realurl_chashcache;
CREATE TABLE tx_realurl_chashcache ( spurl_hash char(32) NOT NULL
default '', chash_string varchar(32) NOT NULL default '', spurl_string
text, PRIMARY KEY (spurl_hash), KEY chash_string (chash_string) )
ENGINE=InnoDB;  

DROP TABLE tx_realurl_urldecodecache;
CREATE TABLE tx_realurl_urldecodecache ( url_hash char(32) NOT NULL
default '', spurl tinytext NOT NULL, content blob NOT NULL, page_id
int(11) NOT NULL default '0', rootpage_id int(11) NOT NULL default
'0', tstamp int(11) NOT NULL default '0', PRIMARY KEY (url_hash), KEY
page_id (page_id) ) ENGINE=InnoDB;  

DROP TABLE tx_realurl_urlencodecache;
CREATE TABLE tx_realurl_urlencodecache ( url_hash char(32) NOT NULL
default '', origparams tinytext NOT NULL, internalExtras tinytext NOT
NULL, content text NOT NULL, page_id int(11) NOT NULL default '0',
tstamp int(11) NOT NULL default '0', PRIMARY KEY (url_hash), KEY
page_id (page_id) ) ENGINE=InnoDB; 

BAM ! backup maken werkt weer en de dump is nu maar 36 MB in plaats
van 5 GIGABYTE. MOOI ZO ! dat wilde ik hebben. 

Nu kan ik ook omdat er nu per tabel een .ibd file wordt gemaakt in de
gaten houden welke file nu zo groot groeit. Wil ik in het vervolg een
backup maken dan kan ik dus nu altijd bovenstaande DROP en CREATE
uitvoeren omdat het toch allemaal cache/index tabellen zijn. Alleen de
sessions tabellen baren me wat zorgen maar voor een snelle DUMP die je
lokaal wil overhalen scheelt 36 MB of 5 GIGABYTE toch wel heel veel!

MvG,

Jordan


On Mon, 25 Apr 2011 17:01:38 +0200, Jordan van Bergen
<jordanvanbergen at gmail.com> wrote:

>Dank allen voor de tips.
>
>Als ik dit lees zou ik bijna dit willen gaan toepassen omdat ik dan
>weet dat het nooit meer dan 500 MB wordt:
>
>InnoDB is not aware of the file system maximum file size, so be
>cautious on file systems where the maximum file size is a small value
>such as 2GB. To specify a maximum size for an auto-extending data
>file, use the max attribute following the autoextend attribute. Use
>the max attribute only in cases where constraining disk usage is of
>critical importance, because exceeding the maximum size causes a fatal
>error, possibly including a crash. The following configuration permits
>ibdata1 to grow up to a limit of 500MB: 
>[mysqld]
>innodb_data_file_path=ibdata1:10M:autoextend:max:500M
>
>Echter staat er "exceeding the maximum size causes a fatal error,
>possibly including a crash"
>
>gaat dat ook echt gebeuren is mijn vraag? Omdat innodb alleen op de
>index/cache tabellen van TYPO3 wordt gebruikt lijkt mij dat 500M ook
>voldoende moet zijn maar ik heb dus geen idee wat er gebeurt NA 500 MB
>;-) Als de boel crasht heb je niets aan deze configuratie instelling
>natuurlijk.
>
>Benieuwd of iemand weet of inderdaad TYPO3 (dus MySQL) gaat crashen
>als de 500M bereikt is?
>
>MvG,
>
>Jordan
>
>On Mon, 25 Apr 2011 13:15:16 +0200, Jigal van Hemert <jigal at xs4all.nl>
>wrote:
>
>>Hoi,
>>
>>On 25-4-2011 10:23, Jordan van Bergen wrote:
>>> Vraag 1: er is een manier om per tabel dit soort innodb bestanden te
>>> genereren. Als je dan een tabel of databse weggooit wordt dit
>>> tenminste wel opgeschoond. Kent iemand die manier en hoe stel je dit
>>> in en hoe kom je dan af van die al bestande 6 GB ibdata1 file?
>>
>>Voor configuratie van InnoDB zie [1] en [2].
>>
>>Om een bestaande database om te zetten naar per-table-files is een 
>>compleet recept te vinden op [3].
>>
>>> Vraag 2: Een database geeft aan dat deze 360 MB is. Echter met het
>>> backup command mysqldump --opt etc. wordt het bestand 5 GB !. Dat moet
>>> dus uit die ibdata1 tabel (innodb) data komen.
>>
>>Ten eerste is het tekstformaat van een dump nogal inefficiënt voor 
>>binaire data die nogal eens in blob-velden voorkomt.
>>Ten tweede is een backup vaak bedoeld om *belangrijke* data op te slaan. 
>>In dat geval kun je ervoor kiezen om bepaalde tabellen juist niet mee te 
>>nemen. Ik zou cache* tabellen uitsluiten, de index_* tabellen (behalve 
>>index_config) kunnen opnieuw opgebouwd worden (je verliest statistieken, 
>>maar echt noodzakelijk is dat niet) en de sys_log en sys_history zijn 
>>niet absoluut onmisbaar, maar vaak wel enorm groot.
>>
>>Als je echt het uiterste uit je MySQL installatie moet halen dan kun je 
>>gaan graven in boeken zoals [4].
>>
>>[1] http://dev.mysql.com/doc/refman/5.1/en/innodb-configuration.html
>>[2] http://dev.mysql.com/doc/refman/5.1/en/innodb-multiple-tablespaces.html
>>[3] 
>>http://stackoverflow.com/questions/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#4056261
>>[4] http://www.highperfmysql.com/


More information about the TYPO3-UG-Dutch mailing list