Veri Tabanını Yedekleme/Geri Yükleme

Started by Arbalot, June 18, 2006, 02:41:11 PM

Previous topic - Next topic

Arbalot

SQL Nedir?

SQL (Structured Query Language), bir veritabanı dilidir. Program geliştiricileri ve Veritabanı kullanıcıları, bir veritabanına veri eklerken, silerken, güncellerken veya sorgularken bu dili kullanırlar. Hem ANSI hem de ISO standardı olmasına rağmen, çoğu veritabanı programı standart dillere ekleme yaparak bu dili kullanmaktadırlar.

SMF MySQL yedekleme ve geri yükleme araçları:
veritabani_yedekle.php : MySQL veritabanınızın yedeğini alır, scripti çalıştırdığınız klasöre kaydeder
veritabani_geri_yukle.php : Yedeklerinizi geri yükler


SQL'in kullandığımız bir kaç sorgulama temel komutu vardır. Bunların en basitleri:

SELECT (veri seçerken kullanılır)
DELETE(veri silerken kullanılır)
UPDATE (veri güncellerken kullanılır)
INSERT (veri girerken kullanılır)
CREATE (tablo oluşturuken kullanılır)
DROP (tablo siler)

gelelim bunlarıu nasıl kullanacagımıza ve veriyi nasıl import edeceğimize...

Not:tablo yapısı olarak kaydedilen veri tabanı acmayı anlatıcam

şimdi bizim aldıgımız yedekleri ufaktan inceleyelim...

smf-complete_2006-06-18.sql.gz aldıgımız yedek boyle bir şeydir bunu zip programı ile actıgımıza .sql uzantılı bir dosya ile karşılasırız ve bu dosya not defteri ile acılabilir...

DROP TABLE IF EXISTS `smf_messages`;

CREATE TABLE `smf_messages` (
  ID_MSG int(10) unsigned NOT NULL auto_increment,
  ID_TOPIC mediumint(8) unsigned NOT NULL default 0,
  ID_BOARD smallint(5) unsigned NOT NULL default 0,
  posterTime int(10) unsigned NOT NULL default 0,
  ID_MEMBER mediumint(8) unsigned NOT NULL default 0,
  ID_MSG_MODIFIED mediumint(8) unsigned NOT NULL default 0,
  subject tinytext NOT NULL default '',
  posterName tinytext NOT NULL default '',
  posterEmail tinytext NOT NULL default '',
  posterIP tinytext NOT NULL default '',
  smileysEnabled tinyint(4) NOT NULL default 1,
  modifiedTime int(10) unsigned NOT NULL default 0,
  modifiedName tinytext NOT NULL default '',
  body text NOT NULL default '',
  icon varchar(16) NOT NULL default 'xx',
  PRIMARY KEY (ID_MSG),
  UNIQUE topic (ID_TOPIC, ID_MSG),
  UNIQUE ID_BOARD (ID_BOARD, ID_MSG),
  KEY ipIndex (posterIP(15), ID_TOPIC),
  KEY participation (ID_MEMBER, ID_TOPIC),
  KEY ID_TOPIC (ID_TOPIC),
  FULLTEXT body (body(1))
) TYPE=MyISAM;


şimdi burda ilk komut olan droptur drop tablo siler eski yedeği acacagımız için ilk once eski tabloyu siliyoruz...
DROP TABLE IF EXISTS `smf_messages`;
burda smf_messages tablosunu düşürdük yani mesajlarınızın kayıtlı oldugu tablo gitti...

CREATE TABLE `smf_messages`
bununla başlayan satırlar  tablo oluşturmaya olanak tanır.
yukarda goreceğiniz gibi bu kodun sonunda bir sürü yazı var oda tablonun özelliklerini ve alanlarını belirtiyor...

tablo oluştu şimdi geldik en çetrefilli kısma

INSERT INTO `smf_messages`
(`ID_MSG`, `ID_TOPIC`, `ID_BOARD`, `posterTime`, `ID_MEMBER`, `ID_MSG_MODIFIED`, `subject`, `posterName`, `posterEmail`, `posterIP`, `smileysEnabled`, `modifiedTime`, `modifiedName`, `body`, `icon`)
VALUES (1, 1, 1, 1149542655, 0, 4, 'SMF\'ye Hoş Geldiniz!', 'Simple Machines', '[email protected]', '127.0.0.1', 1, 1149896409, 'Arbalot', 'fdsgfdsgfd', 'xx'),
(2, 2, 1, 1149895167, 2, 2, 'sadasdsa', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'fdsaf', 'xx'),
(3, 1, 1, 1149895178, 2, 3, 'Ynt: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'agfdsagds', 'xx'),
(4, 1, 1, 1149896344, 2, 4, 'Ynt: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'dfsfdsgds', 'xx'),
(5, 3, 1, 1150122130, 2, 5, 'fdsafdsa', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'fdsafdsa', 'xx'),
(6, 1, 1, 1150395431, 2, 6, 'Re: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', '[faq]lord[/faq]', 'xx'),
(7, 1, 1, 1150395556, 2, 7, 'Re: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', '[faq=lord]arbalot[/faq]<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />[faq]lord[/faq]', 'xx');


INSERT INTO `smf_messages`
bununla başlayan satırlar verilerinizi aktarmaya olanak tanır... ve hangi tabloya veri aktaracagımız soyler
mesaj tablosuna veri aktaracaz...

(`ID_MSG`, `ID_TOPIC`, `ID_BOARD`, `posterTime`, `ID_MEMBER`, `ID_MSG_MODIFIED`, `subject`, `posterName`, `posterEmail`, `posterIP`, `smileysEnabled`, `modifiedTime`, `modifiedName`, `body`, `icon`)

bu kısım tablo yapısıdır...tablonuzdaki kolon sırasına gore dizilmiştir.verilerde ona gore dizilecektir zaten...

VALUES (1, 1, 1, 1149542655, 0, 4, 'SMF\'ye Hoş Geldiniz!', 'Simple Machines', '[email protected]', '127.0.0.1', 1, 1149896409, 'Arbalot', 'fdsgfdsgfd', 'xx'),
(2, 2, 1, 1149895167, 2, 2, 'sadasdsa', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'fdsaf', 'xx'),
(3, 1, 1, 1149895178, 2, 3, 'Ynt: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'agfdsagds', 'xx'),
(4, 1, 1, 1149896344, 2, 4, 'Ynt: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'dfsfdsgds', 'xx'),
(5, 3, 1, 1150122130, 2, 5, 'fdsafdsa', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', 'fdsafdsa', 'xx'),
(6, 1, 1, 1150395431, 2, 6, 'Re: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', '[faq]lord[/faq]', 'xx'),
(7, 1, 1, 1150395556, 2, 7, 'Re: SMF\'ye Hoş Geldiniz!', 'Arbalot', '[email protected]', '127.0.0.1', 1, 0, '', '[faq=lord]arbalot[/faq]<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />[faq]lord[/faq]', 'xx');


values yani değerler...buda tablo yapısına gore dizilen verilelerinizdir...
parantezler arasında kalan kısımlar sutunları belli eder yukardaki ornekte 6 adet satır aktardık buda demek oluyor ki forumumuzda 6 tane mesaj vardı...ve bunları aktardık...

bazı arkadaşlar sıfır forum kurdum ama sadece uyeleri almak istiyorum diyorlar bu durumda ne yapıyoruz
smf forumu kurduktan sonra aldıgımıs oldugumuz yedeği not defteri aracılıgı ile acıyoruz ve
INSERT INTO `smf_members`
ile başlayan yerden
Quote;
işaretini gordugumuz yere kadar kopyalıyoruz...
Quote;
işareti dahil olmak üzere ve bunu PMA da çalıştırıyoruz...

osenmer

#1
tabloyu siliyorum, yeni tabloyu oluşturuyorum fakat tablo içeriğini yüklerken sürekli hata veriyor.

sql yedeğinde türkçe karakterlerin bazıları bozuk acaba nedeni bu olabilirmi?

hata durumlarından biri
MySQL çıktısı: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ID_BOARD`
INSERT INTO `smf_3boards` VALUES (185, 6, 1, 27, 37, 7219, 7219, '-1,' at line 1

Arbalot

yaptıgın aşamaları tam olarak yaz bakalım ona gore bir fikir yurutelim...

osenmer

kullanılan versiyon:MySQL - 4.1.19-standard    -    phpMyAdmin - 2.8.0.2

eski forum yedeği : tablo ön eki "smf_"
yeni forum kuruldu ve çalışıyor: tablo ön eki "smf_3"

dönüştürmek istediğim "Tablo:: smf_3boards" . bu amaçla sql yedeğindeki "smf_" olan tablo ön ekini "smf_3" olarak değiştirdim.

smf_3boards tablosunda şu sorguyu çalıştırdım DROP TABLE IF EXISTS `smf_3boards` ve tabloyu sildim.
daha sonra mevcut yedeğimden aldığım şu komutla

CREATE TABLE `smf_3boards` (`ID_BOARD` smallint(5) unsigned NOT NULL auto_increment,`ID_CAT` tinyint(4) unsigned NOT NULL default '0',`childLevel` tinyint(4) unsigned NOT NULL default '0',`ID_PARENT` smallint(5) unsigned NOT NULL default '0',`boardOrder` smallint(5) NOT NULL default '0',`ID_LAST_MSG` mediumint(8) unsigned NOT NULL default '0',`ID_MSG_UPDATED` mediumint(8) unsigned NOT NULL default '0',`memberGroups` varchar(255) NOT NULL default '-1,0',`name` tinytext NOT NULL,`description` text NOT NULL,`numTopics` mediumint(8) unsigned NOT NULL default '0',`numPosts` mediumint(8) unsigned NOT NULL default '0',`countPosts` tinyint(4) NOT NULL default '0',`ID_THEME` tinyint(4) unsigned NOT NULL default '0',`permission_mode` tinyint(4) unsigned NOT NULL default '0',`override_theme` tinyint(4) unsigned NOT NULL default '0',PRIMARY KEY  (`ID_BOARD`),UNIQUE KEY `categories` (`ID_CAT`,`ID_BOARD`),KEY `ID_PARENT` (`ID_PARENT`),KEY `ID_MSG_UPDATED` (`ID_MSG_UPDATED`),KEY `memberGroups` (`memberGroups`(48))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=269 ;

yeni tabloyu oluşturdum.

tabloyu açıp şu kodu sorguladığımda
INSERT INTO `smf_3boards`
(`ID_MSG`, `ID_TOPIC`, `ID_BOARD`, `posterTime`, `ID_MEMBER`, `ID_MSG_MODIFIED`, `subject`, `posterName`, `posterEmail`, `posterIP`, `smileysEnabled`, `modifiedTime`, `modifiedName`, `body`, `icon`)INSERT INTO `smf_3boards` VALUES (1, 1, 0, 0, 1, 11115, 11115, '-1,0,2,11,9,10,12,4,5,6,7,8', 'Tanýþma-(Yeni Üyelerimiz Forumumuza Hoþgeldiniz)', 'Bir Merhaba Yokmu!', 32, 160, 0, 0, 0, 0);


direk sayfa görüntülenemiyor hatası alıyorum bazende sorgulama hatası veriyor.

acaba nerede yanlış yapıyorum ???

Arbalot

QuoteINSERT INTO `smf_3boards`
   (`ID_MSG`, `ID_TOPIC`, `ID_BOARD`, `posterTime`, `ID_MEMBER`, `ID_MSG_MODIFIED`, `subject`, `posterName`, `posterEmail`, `posterIP`, `smileysEnabled`, `modifiedTime`, `modifiedName`, `body`, `icon`) VALUES (1, 1, 0, 0, 1, 11115, 11115, '-1,0,2,11,9,10,12,4,5,6,7,8', 'Tanýþma-(Yeni Üyelerimiz Forumumuza Hoþgeldiniz)', 'Bir Merhaba Yokmu!', 32, 160, 0, 0, 0, 0);

bu şekilde dene birde...

osenmer

Quote from: Arbalot on June 19, 2006, 03:04:54 PM
QuoteINSERT INTO `smf_3boards`
   (`ID_MSG`, `ID_TOPIC`, `ID_BOARD`, `posterTime`, `ID_MEMBER`, `ID_MSG_MODIFIED`, `subject`, `posterName`, `posterEmail`, `posterIP`, `smileysEnabled`, `modifiedTime`, `modifiedName`, `body`, `icon`) VALUES (1, 1, 0, 0, 1, 11115, 11115, '-1,0,2,11,9,10,12,4,5,6,7,8', 'Tanýþma-(Yeni Üyelerimiz Forumumuza Hoþgeldiniz)', 'Bir Merhaba Yokmu!', 32, 160, 0, 0, 0, 0);

bu şekilde dene birde...

o şekildede işe yaramadı arbalot :-[

çıktı hatası
#1136 - Column count doesn't match value count at row 1

Arbalot

yeni kurdugun forum ile eski forumun arasında versiyon farkı var mıydı?
veya mod falan kurulumuydu eski dbnde...
birde sunu dene bakalım?

QuoteINSERT INTO `smf_3boards` VALUES (1, 1, 0, 0, 1, 11115, 11115, '-1,0,2,11,9,10,12,4,5,6,7,8', 'Tanýþma-(Yeni Üyelerimiz Forumumuza Hoþgeldiniz)', 'Bir Merhaba Yokmu!', 32, 160, 0, 0, 0, 0);

keal

abi ben dün pma dan yedek aldım 5 küsür mb lık bi .sql dosyası indirdi onu geri yüklemek için bunları yapmak zorunda mıyım?
www.solararea.net

SMF 1.1 RC2
Çöl Ateşi teması

Arbalot

hayır zorunde değilsin sıkca sorulan sorulara bakabilirsin...

osenmer

arbalot dün akşam o kadar denedim olmadı, yüklenmiyordu. bu sabah tekrar denedim hepsi yüklendi, sayfa görüntülenemiyor dedi ama forumun katagorileri yüklendi. fakat hepsi bütün bir forum gibi gözüküyor. neyse o sorun değil düzeltirim, şimdi mesajları ve üyeleri yüklemeye çalışıyorum bakalım olacakmı. zahmetli bir iş.

bide şunu sorabilirmiyim, elimizdeki yedekteki türkçe karakter problemini nasıl engelleriz. yani yedeği alırken mi yoksa yedeği açarkenmi bunu ayarlayacaz. ı-ş-İ-Ş-ğ hepsi problemli.

diğer tablolarıda yükleyince neticeyi yazarım buraya, teşekkürler arbalot. ;D

Arbalot

turkce dil konusu forumda cok kez tartısıldı...
yanlız cevabını ben bilmiyorum... :D

osenmer

tabloların tamamını yeniledim sayılır, bölümleri yeniden oluşturdumç üyeleri foruma taşıdım ve mesajların bir kısmınıda tabloya sorgulatıp ekledim fakat forumda herhangi bir bölüme girdiğimde şöyle bir hata veriyor.
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1, 54)' at line 3
File: /home/forumgez/public_html/forum/Sources/MessageIndex.php
Line: 102"

MessageIndex.php da o satır işe şu şekilde.

VALUES ($modSettings[maxMsgID], $ID_MEMBER, $board)", __FILE__, __LINE__);

bu hata neyi ifade ediyor nasıl giderebilirim arakadaşlar. ::)

Arbalot

o hatayı spirit arkadasın imzasına bakarak ogrenebilirsin...

osenmer

konu burda, teşekkürler Arbalot  ;D
http://www.simplemachines.org/community/index.php?topic=67935.msg485033#msg485033


şu kodu REPLACE INTO smf_settings (variable, value) VALUES ('maxMsgID', 1);

yeni kurduğumuz forumun tablo ön ekli smf_settings tablosunda çalıştırıyoruz.(örnek: benim tablo ön ekim smf_3 idi burada çalıştırdım)

ve problem çözüldü. :D


osenmer

#14
Sql sorgulaması sırasında bazı satırlar hata veriyor ve bir sonraki satırı sorgulamıyor. ben tek seferde birden çok satırı sorgulatmak istediğimde hatalı satırları atlayıp, hatasız satırları sorgulamasını nasıl sağlayabilirim.

aksi taktirde 11118 satırı tek tek sorgulatmaya kalktığımda çok fazla zaman kaybedeceğim. bi kolay yolu vardır herhalde  :P

merk112

Quotebazı arkadaşlar sıfır forum kurdum ama sadece uyeleri almak istiyorum diyorlar bu durumda ne yapıyoruz
smf forumu kurduktan sonra aldıgımıs oldugumuz yedeği not defteri aracılıgı ile acıyoruz ve
Code:

INSERT INTO `smf_messages`

ile başlayan yerden
Quote
;
işaretini gordugumuz yere kadar kopyalıyoruz...
Quote
;
işareti dahil olmak üzere ve bunu PMA da çalıştırıyoruz...

Burda bi yanlışlık yok mu?

Üyeler için

INSERT INTO `smf_members`

olması gerekmio mu?
www.kimmuh.com
www.kimyaturk.net
www.tiplit.com
www.kimyaportal.com

osenmer

evet merk112 senin yazdığın doğru

merk112

ya şu üyeleri taşıma işini bi ayrıntılı anlatsanız..
Üyelin bulunduğu ve yeni veritabanını indirdim
İkisini de dreamweaverda açtım ikisinde de
INSERT INTO `ys_members`
kısmını buldum.
yeni weritabanında en alta mı

DROP INTO `ys_members`
SONRA
CREATE INTO `ys_members`
yazıp eski veritabanındaki üyeleri altına mı eklicem.
www.kimmuh.com
www.kimyaturk.net
www.tiplit.com
www.kimyaportal.com

osenmer

#18
Quote from: merk112 on June 26, 2006, 10:15:23 AM
ya şu üyeleri taşıma işini bi ayrıntılı anlatsanız..
Üyelin bulunduğu ve yeni veritabanını indirdim
İkisini de dreamweaverda açtım ikisinde de
INSERT INTO `ys_members`
kısmını buldum.
yeni weritabanında en alta mı

DROP INTO `ys_members`
SONRA
CREATE INTO `ys_members`
yazıp eski veritabanındaki üyeleri altına mı eklicem.



merk112 bu konuyu çok iyi bilmemekle birlikte burdan öğrendiklerimle yaptım ve oldu.

yeni forumu kurdun ona eski forumdaki üyeleri aktarmak istiyorsun.

phpmyadmine gir orada yeni forumun tablo ön ekine sahip örneğin; `smf_1members` tablosunu aç ve sorgula kutusunu gir.

elindeki yedeği wordpad veya text editör ile aç orada şu satırı bul  CREATE TABLE `smf_1members`(yedek aldığın forumun tablo ön eki ile yeni forumun tablo ön eki aynı olmalı örneğin: eskisi CREATE TABLE `smf_members` ise bunu CREATE TABLE `smf_1members` yapmalısın.) bu satırın devamında bulunan  ve INSERT INTO `smf_1members` VALUES (1,......... şeklinde giden satırları phpmyadminde açtığımız sql sorgulama ekranına yapıştır ve git tuşuna bas. bu işlemden sonra büyük ihtimalle üyeler yeni foruma eklenecektir.

forumda buna benzer pek çok konu var onları iyi incelemeni öneririm. bu sayede önüne çıkan engelleri kolayca aşabilirsin. ;)

demirhanca

#19
merhaba dün bir mod kurdum arbolat hatırlarsan forumu kitlemiştin düzeltemedim hatayı kızdım bende sildim veri_tabanlarını elimdeki yedeği yüklemeye çalıştım smf_log_online satırında hata veriyor sürekli okutamıyorum yedeği MySQL a başka bir yolu yokmu bunu okutmamın sitemin ana sayfası şu an bu şekilde


Connection Problems
Sorry, SMF was unable to connect to the database. This may be caused by the server being busy. Please try again later.


Yükleme verdiği hatada şu


Bazı sorgular çalıstırılamadı. Sorgular hakkında detaylı bilgi:
Line #2653: Invalid default value for 'last_update'
Line #2665: Table 'demir_demirvericomplete20060801sql.smf_sessions' doesn't exist
Line #2943: Invalid default value for 'ID_TOPIC'


Advertisement: