Yandex’e MYSQL Yedek Yükleme (PHP)

<?php

//MySQL server and database
$dbhost = ‘localhost’;
$dbuser = ‘dbkullaniciadi’;
$dbpass = ‘dbsifre’;
$dbname = ‘dbadi’;
$tables = ‘*’;

//Call the core function
backup_tables($dbhost, $dbuser, $dbpass, $dbname, $tables);

function yandexeyukle($filename)
{
$user = “ahmet@yandex.com”;
$password = “yandexsifre”;
$credentials = array($user, $password);
$filepath = ‘/home/sitename/public_html/yedek/’ . $filename;
$filesize = filesize($filepath);
$fh = fopen($filepath, ‘r’);
$remoteUrl = ‘https://webdav.yandex.com.tr/’;
$ch = curl_init($remoteUrl . $filename);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, implode(‘:’, $credentials));
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, $filesize);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$response = curl_exec($ch);
fclose($fh);
}

//Core function
function backup_tables($host, $user, $pass, $dbname, $tables = ‘*’)
{
$link = mysqli_connect($host, $user, $pass, $dbname);

// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit;
}

mysqli_query($link, "SET NAMES 'utf8'");

//get all of the tables
if ($tables == '*') {
    $tables = array();
    $result = mysqli_query($link, 'SHOW TABLES');
    while ($row = mysqli_fetch_row($result)) {
        $tables[] = $row[0];
    }
} else {
    $tables = is_array($tables) ? $tables : explode(',', $tables);
}

$return = '';
//cycle through
foreach ($tables as $table) {
    $result = mysqli_query($link, 'SELECT * FROM ' . $table);
    $num_fields = mysqli_num_fields($result);
    $num_rows = mysqli_num_rows($result);

    $return .= 'DROP TABLE IF EXISTS ' . $table . ';';
    $row2 = mysqli_fetch_row(mysqli_query($link, 'SHOW CREATE TABLE ' . $table));
    $return .= "\n\n" . $row2[1] . ";\n\n";
    $counter = 1;

    //Over tables
    for ($i = 0; $i < $num_fields; $i++) {   //Over rows
        while ($row = mysqli_fetch_row($result)) {
            if ($counter == 1) {
                $return .= 'INSERT INTO ' . $table . ' VALUES(';
            } else {
                $return .= '(';
            }

            //Over fields
            for ($j = 0; $j < $num_fields; $j++) {
                $row[$j] = addslashes($row[$j]);
                $row[$j] = str_replace("\n", "\\n", $row[$j]);
                if (isset($row[$j])) {
                    $return .= '"' . $row[$j] . '"';
                } else {
                    $return .= '""';
                }
                if ($j < ($num_fields - 1)) {
                    $return .= ',';
                }
            }

            if ($num_rows == $counter) {
                $return .= ");\n";
            } else {
                $return .= "),\n";
            }
            ++$counter;
        }
    }
    $return .= "\n\n\n";
}

//save file
$fileName = 'db-yedek-' . time() . '-' . (md5(implode(',', $tables))) . '.sql';
$handle = fopen($fileName, 'w+');
fwrite($handle, $return);
if (fclose($handle)) {
    echo "Done, the file name is: " . $fileName;

}


yandexeyukle($fileName);

}

MySQL İşlem Listesi Görmek

MySQL veritabanı kullanıyorsanız ve çok fazla MYSQL Veritabanınız varsa zaman zaman RAM ve CPU’da yüklennme görürüz.

Sistem kaynaklarını en çok MYSQL servislerini harcadığını gördüğümüzde yapmaanız gereken işlem MYSQL kim daha çok meşgul ediyorsa onu bulmak olacaktır.

Bu İşlem İçin

mysql -uadmin -sifreniz

şeklinde mysql’e giriş yapıyoruz.

sonra aşağıdaki komutu kullanmamız yeterlidir.

show processlist;

Mysql Türkçe Karakter Sorunu

MYSQL veritabanınızı yüklerken versiyon farklılıklarından dolayı karakter seti hataları alabilirsiniz.

Bu problemi çözmek için .sql dosyanızı bir text programı ile açıp aşağıdaki değişiklikleri yapın.

Veritabanınızda

“MyISAM DEFAULT CHARSET=latin5” “MyISAM DEFAULT CHARSET=utf8” gibi satırlar görebilirsiniz.

Bu satırlarda “MyISAM DEFAULT CHARSET=latin5” yazan alanı “MyISAM” olarak değiştiriniz.

Daha sonra sorunsuz bir şekilde veritabanınızı yükleyebilirsiniz.

Not: Bu işlemi yapmadan önce yedek almanızı öneriyoruz.