Oracle Dataguard Role Transition Switchover/Failover

Oracle Dataguard Role Transition Switchover/Failover

Switchover: Primary ve standby database’in yerlerinin degismesi demektir. Swicth over 0 (sıfır) data kaybi vardir. Bakim, upgrade, hardware operasyonlari , test vs gibi islemler icin yapilir.

Failover: Standby database’in primary database’e donusmesidir. Eger primary database’de flashback database disable ise, geri donusu yoktur yani tekrar failover yapamazsınız. Eğer fast start failover kullaniyorsanız (10g R2) failover islemi otomatik olarak yapilabilir.

Okumaya devam et “Oracle Dataguard Role Transition Switchover/Failover”

MYSQL CUMULATIVE SUM

Mysql cumulative sum örnek queryi aşağıda bulabilirsiniz.

 

SET @csum := 0;
SELECT id, COUNT, (@csum := @csum + COUNT) AS cumulative_sum
FROM YourTable
ORDER BY id;

 

 

Tayfur BÖLER

Database Administrator

www.mysqlsupport.net

Linux Ramdisk

Linux operating system üzerinde Ramdisk create etmek için aşağıdaki adımları takip  etmeniz gerekiyor.

 

# mkdir /tmp/ramdisk

  • İlk önce yukarıdaki komut ile ramdisk ‘i mount edeceğiniz path i belirleyip, folder create işlemini yapıyoruz.

# chmod 1777 /tmp/ramdisk

  • Ramdisk mount alanı için create edilen folera gerekli yetkiyi veriyoruz.

# mount -t tmpfs -o size=8G tmpfs /tmp/ramdisk/

  • Örnek olarak 8 gb size ından bir alanı tmp altına ramdisk olarak mount ediyoruz.

# df -h

Filesystem Size Used Avail USE% Mounted ON
/dev/sda5 9.2G 533M 8.2G 6% /
udev 7.9G 4.0K 7.9G 1% /dev
tmpfs 3.2G 308K 3.2G 1% /run
NONE 5.0M 0 5.0M 0% /run/LOCK
NONE 7.9G 0 7.9G 0% /run/shm
/dev/sda1 268M 50M 204M 20% /boot
/dev/sda6 9.2G 552M 8.2G 7% /usr
/dev/sda7 19G 172M 18G 1% /tmp
/dev/sda9 490G 560M 464G 1% /var
/dev/sda8 6.5G 143M 6.0G 3% /usr/LOCAL
tmpfs 8.0G 0 8.0G 0% /tmp/ramdisk

  • Ramdiskimizin mount olduğunu ve kullanıma hazır olduğunu görebilirsiniz.

 

Tayfur BÖLER

Database Administrator

www.mysqlsupport.net

 

Mysql Replication Skip Error

Mysql replicationda aldığınız herhangi bir hatayı skip etmek için sırasıyla asağıdaki komutları çalıştırmanız yeterli olacaktır.

 

SLAVE STOP;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

START SLAVE;

 

 

Tayfur BÖLER

Database Administrator

www.mysqlsupport.net

 

PHP CURL

Önemli verilerinizi PHP ile güvenli bir bağlantı üzerinden göndermek ve almak istediğinizde CURL ile talepte bulunurken HTTP yerine HTTPS ile istek yaparız. Ancak HTTPS sayfaya istek yaptığımızda SSL sertifikasının o domain adresine(CN) ait olması için doğrulamasını CURL‘a bildirmemiz gerekir, bunun için CURLOPT_* constantlarını belirtirken;
CURLOPT_SSL_VERIFYHOST = 2
…olacak şekilde curl’u oluşturursak, verileri çekmek istediğimiz HTTPS li adresin SSL Sertifikasını doğrulamak isteyecektir. Eğer o domain adresine ait geçerli bir SSL sertifikasına sahip değil ise, bağlanma işlemi başarısız olacaktır.
Eğer bu şekilde SSL doğrulamasını istemeden bağlantı kurarsanız, HTTPS yerine HTTP den yanıt alacaksınız. Paketler SSL güvenliğinden çıkacak ve şifresiz olarak iletişim kuracaktır.
Mustafa ÖZGÜR
www.panilux.com

PHP SOCKET

php de socket işleriyle uğraşıyor ve daemon/servis hazırlıyorsanız dikkat etmeniz gereken bir çok şeyden ilki, socket_select özelliğini kullanırken süresiz işlem yaptırmamanızdır. 500ms bile olsa süre vermelisiniz. çok aşırı hızlı çalışır ve cpu load 100% e yakın olur.

while (($events = @socket_select($read_set, $write_set, $exception_set, 0, 500000)) !== false)

 

Mustafa ÖZGÜR

www.panilux.com

PHP pcntl_signal()

php de bazen CLI modda çalışırsınız ve php yazılımınız CTRL + C veya kill gibi sonlandırma komutlarına maruz kalır, bu tarz proccess SIGNAL lerini yakalamak için şöyle bir function a ve pcntl_signal() tanımlamalarını kullanabilirsiniz

….
function signal_handler($signal)
{
echo $signal . PHP_EOL;
write_log(‘panilux agent terminated!’);
unlink(‘/var/run/panilux_agent.pid’);
exit($signal);
}

pcntl_signal(SIGTERM, ‘signal_handler’);
pcntl_signal(SIGINT, ‘signal_handler’);
pcntl_signal(SIGUSR1, ‘signal_handler’);
pcntl_signal(SIGUSR2, ‘signal_handler’);
pcntl_signal(SIGSTKFLT, ‘signal_handler’);
pcntl_signal(SIGILL, ‘signal_handler’);
pcntl_signal(SIGHUP, ‘signal_handler’);
pcntl_signal(SIGQUIT, ‘signal_handler’);
pcntl_signal(SIGPWR, ‘signal_handler’);
pcntl_signal(SIGABRT, ‘signal_handler’);
….

 

Mustafa ÖZGÜR

www.panilux.com

 

PHP ile servis yazıyorsanız…

PHP ile servis yazıyorsanız, linux üzerinde servisinize “service SERVIS_ISMI reload” ya da “kill -1 PID” ile SIGHUP gönderip servisinizde bunu yakalamak için;

pcntl_signal(SIGHUP, ‘service_handler_reload’);

… şeklinde yazdığınız sinyal yakalma komutunun çalışması için;

declare(tick = 1);

… kodunu pcntl_signal() fonksiyonlarınızdan önce kullanmalısınız, aksi halde PHP bu durumu görmezden gelecek ve servisiniz kendini sonlandıracaktır.

 

Mustafa ÖZGÜR

www.panilux.com