Category Archives: Programmierung

Moving a MySQL Database to a new Host via Master/Slave Replication


title: “Moving a MySQL Database to a new Host via Master/Slave Replication”
date: 2014-08-05T12:30:53
slug: moving-a-mysql-database-to-a-new-host-via-masterslave-replication


Diese Methode eignet sich sehr gut um sehr große Datenbanken umzuziehen.
Während des Dumps können auch noch neue Daten geschrieben werden die mit Transferiert werden.

  1. Auf der alten Datenbank die Transaction Logs einschalten und einen Replication User anlegen:

vi my.cnf

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2
log-bin= /var/log/mysql/mysql-bin.log

mysql -uroot -p

GRANT REPLICATION SLAVE ON \*.\* TO 'replication'@'%' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;
  1. Auf der neuen Datenbank den Master Server konfigurieren:
    mysql -uroot -p
CHANGE MASTER TO MASTER\_HOST='server1', MASTER\_USER='replication', MASTER\_PASSWORD='PASSWORD';
  1. Einen Datendump erzeugen der auch die Position des Log Files enthält:
mysqldump -uroot dbname --master-data > dbname.db

Der Dump enthält eine nachfolgende Zeile die dem Slave mitteilt ab welcher Stelle es bei den Transaction Logs weiter geht: CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.001359′, MASTER_LOG_POS=76101;

  1. Auf dem Slave (neuer Server) den Datendump einlesen
    mysql -uroot -p
source dbname.db
  1. Den Slave starten, jetzt beginnt der Transfer der Daten aus den Transaction Logs vom alten Server
start slave;
  1. Der Transfer kann mit folgerndem Befehl überwacht werden:
show slave status\G

install Imagick extension for PHP 5.4


title: “install Imagick extension for PHP 5.4”
date: 2014-07-04T09:20:30
slug: install-imagick-extension-for-php-5-4


mkdir temp
wget http://mirror.checkdomain.de/imagemagick/ImageMagick-6.8.9-0.tar.gz
tar -xzvf ImageMagick-6.8.9-0.tar.gz
cd ImageMagick-6.8.9-0
./configure
make
make install

wget http://pecl.php.net/get/imagick-3.1.2.tgz
tar xzvf imagick-3.1.2.tgz
cd imagick-3.1.2
phpize54
./configure --with-php-config=/usr/local/bin/php54-config
make
cp modules/imagick.so /var/lib/php54
extension\_dir = /var/lib/php54
extension = imagick.so

dhtml Grid serverseitig erstellen mit MySQL Datenquelle


title: “dhtml Grid serverseitig erstellen mit MySQL Datenquelle”
date: 2014-05-25T08:26:38
slug: dhtml-grid-serverseitig-erstellen-mit-mysql-datenquelle


HTML Code für das Grid:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <script src="codebase/dhtmlxcommon.js"></script>
 <script src="codebase/dhtmlxgrid.js"></script>
 <script src="codebase/connector.js"></script>
 <link rel="STYLESHEET" type="text/css" href="codebase/dhtmlxgrid.css">
 <link rel="stylesheet" type="text/css" href="codebase/skins/dhtmlxgrid\_dhx\_black.css">

 <script type="text/javascript">

 function doOnLoad(){
 var mygrid = new dhtmlXGridObject('gridbox');
 mygrid.setImagePath("codebase/imgs/");
 mygrid.setSkin("dhx\_skyblue");
 mygrid.load("ajax.php?action=loadData");
 }
 </script>
</head>
<body onload="doOnLoad()">
 <div id="gridbox" style="width:350px;height:250px;border:1px solid #A4BED4;"></div>
</body>
</html>

griddata.php

<?php
require\_once("../codebase/connector/grid\_config.php");
require\_once("../codebase/connector/grid\_connector.php");

$res=mysql\_connect("localhost","root","");
mysql\_select\_db("tasks");
$conn = new GridConnector($res);
 $config = new GridConfiguration();

 $config->setHeader("Item Name,Item CD");
 $config->attachHeader("Item Name Test,#rspan");
 $config->attachFooter("Item Name,Item CD", Array("background: #ff0000;", "background: #00ff00;"));
 $config->attachFooter("Item Name Test,#rspan", "background: #0000ff;color:white;");
 $config->setColIds("col1,col2");
 $config->setInitWidths('120,\*');
 $config->setColSorting("connector,connector");
 $config->setColColor("null,#dddddd");
 $config->setColHidden("false,false");
 $config->setColTypes("ro,ed");
 $config->setColAlign('center,center');

$conn->set\_config($config);
$conn->render\_table("grid50000","id","item\_nm,item\_cd");

?>

Cookies von Iceweasel auslesen / in .txt Datei schreiben


title: “Cookies von Iceweasel auslesen / in .txt Datei schreiben”
date: 2014-03-12T09:41:03
slug: cookies-von-iceweasel-auslesen-in-txt-datei-schreiben


Da Iceweasel die Cookies in einer SQLlite Datenbank speichert, wird sqlite3 benötigt.
Das ist ein Command Line Tool um die Datei auszulesen.

Unter Debian wird diese mit folgendem Befehl installiert:

apt-get install sqlite3

Das nachfolgende Script liest die cookies aus und schreibt diese in die Datei cookies.txt

#!/bin/bash

PROFILE=`ls ~/.mozilla/firefox | grep default`
sqlite3 -separator ' ' $HOME/.mozilla/firefox/$PROFILE/cookies.sqlite 'select host, "TRUE", path, "FALSE", expiry, name, value from moz\_cookies' > cookies.txt

Fehler: mod_fcgid: HTTP request length 15730264 (so far) exceeds MaxRequestLen (15728640)


title: “Fehler: mod_fcgid: HTTP request length 15730264 (so far) exceeds MaxRequestLen (15728640)”
date: 2014-03-04T12:59:22
slug: fehler-mod_fcgid-http-request-length-15730264-so-far-exceeds-maxrequestlen-15728640


In der FCGI Config Datei muss die maximale Post Size erhöht werden.
Hier ein Beispiel in der fcgid.conf:

AddHandler fcgid-script .fcgi
FcgidConnectTimeout 180
FcgidIOTimeout 600
FcgidMaxRequestLen 134217728 // (=128MB)
MaxRequestLen 134217728 // (=128MB)
MaxRequestsPerProcess 1500

Json encode / decode


title: “Json encode / decode”
date: 2014-03-04T11:04:57
slug: json-encode-decode


Ein Object zu einem JsonString encoden:
var string= JSON.stringify(obj );

Ein JsonString zu einem Object decoden
var obj = jQuery.parseJSON( jsonString );

Foreach Schleife


title: “Foreach Schleife”
date: 2014-03-04T11:02:38
slug: foreach-schleife


$.each(array, function( index, value ) {
 alert( index + ": " + value );
});

Ajax Post mit Parameter


title: “Ajax Post mit Parameter”
date: 2014-03-04T10:59:44
slug: ajax-post-mit-parameter


$.post( "test.php", { name: "Thomas", internet: "http://www.it-asanger.de" })
 .done(function( data ) {
 alert( "Data Loaded: " + data );
 });