İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

vBullettin 'de İki Database Birleştirme Adım Adım Resimli Anlatım

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
(Önce konuyu baştan sona okuyup, sonra adım adım yapmaya başlarsanız daha sağlıklı olacaktır.)
Konudaki herşey dikkatlice okunup yapılırsa hiçbir sorun çıkmadan bu işi bitirebiliriz. Resimleri dikkatlice inceleyip, yazılarıda dikkatlica okumamız gerekiyor. Atlamadan ve sırasını karıştırmadan sırayla ve dikkatlice herşeyi yapın. Burda şu anda yapmakta olduğumuz şey iki farklı vbulletin databasesinin üyelerini birleştirmek. Sadece User tablosunu örnek olarak anlattım.
Önce forumumuzu kapatalım ve tablolarımızı optimize edip onaralım..! Bu işlemleri vBulletin Admin panelinden yapınız.
Şimdi resimlerdeki işaretlenmiş yerleri ve yazıları dikkatlice inceleyip okuyalım ve yapalım.
Untitled-1.jpg

Resimde de görüldüğü gibiphpmyadmine girelim databasemizi seçelim ve dönüştüre tıklayıp aşğıdaki resimden devam edelim.
Untitled-2.jpg

Önce bu şekilde ana sitemizin yedeğini alalım..! Herhangi bi aksilik durumunda ne olur ne olmaz..! Üstteki iki resimde bunu yapıyoruz..! Şimdi aşağıdaki resimlerden itibaren asıl yapmamız gerekenlere başlıyoruz..!
Untitled-3.jpg

Üstteki resimde dikkat etmeniz gereken yerler kırmızı kutuyla ve yazılarla özellikle belirtilmiş. Yapı (structure) kutucuğundaki işareti kaldırıyoruz. Eğer bu işareti kaldırmazsak ana sitemizdeki userlar gider yerine sadece yeni ekleyeceğimiz userlar kalır. Dolayısıyla çok büyük bir hata yapmış oluruz. Tekrar ilk aldığımız yedeği yüklemek gerekecek böyle bir hata durmunda.
Birleştirme İşlemi
Yukarıdaki resimdekini doğru olarak yaptıktan sonra esas iş şimdi daha yeni başlıyor. Aşağıdaki resimdeki gibi son kaydettiğimiz eklenecek-user.sql dosyasını WordPad ile açalım.
Untitled-4.jpg

Aşağıdaki resimdeki kırmızı çerçeve içine alınmış yerleri ve yazıları dikkatlice inceleyip okuyalım.
Untitled-5.jpg

vBulletin ve benzeri dorumlarda her üyenin bir ID si vardır ve vBulletin üyeleri önce bu ID ye göre database'ye kaydeder. Yeni ekleyeceğimiz üyelerden nickleri aynı olan olabilir mailleri aynı olan olabilir yada başka herhangi bişeyi aynı olan üyeler çıkabilir. Üyelerin ID leri dışında bize engel teşkil edebilecek hiçbir şey yoktur. Neyleri aynı olursa olsun yeterki üye ID numaraları aynı olmasın biz bu birleştirme işlemini yapabiliriz.
Üye ID lerinin birbirleriyle çakışmasını engellemek için ne yapmamız gerekiyor? Bütün vBulletin forumlarda ilk üye ID si 1 dir ve sırayla devam eder.
Örnek:
Diyelimki kendi forumumuzun üye sayısı şu anda 42.784. Yeni ekleyeceğimiz diğer forumda ise 24.769 üye olsun.
Önce kendi forumumuza bakıyoruz: En son üye olan User'ın ID si kaç..?
Atıyorum mesela son üyenin ID si 44.375 olsun.
(Ana forumumuzda 42.784 üye olmasına rağmen son üye olan kişinin ID si neden bu rakamdan farklı? Çünkü arada silmiş olduğunuz üyeler olabilir. Aktifliği bitmiş olan üyeler olabilir. Rakamların farklı olması sizi aldatmasın. Önemli olan rakam son üye olan kişinin ID numarasıdır. Forumumuzdaki üye sayısının gerçekte bi önemi yotur.)
Bu ID ye nasıl bakacasınız: Son üye olan üyenin profiline bakmak için tıklayın adres çubuğunda siteniz.com u=44375 yazan u= den sonraki rakam üyenin ID numrasıdır.
Artık yapmamız gereken şey son resimdeki gördüğümüz parantezden sonraki ilk rakamları teker teker değiştirmektir. yani o rakamları mesela il satırı gösteriyorum;
Orjinal satır başlangıcı
INSERT INTO `user` VALUES (1, 6, '', 0, 'Fatu',.......
Değiştirmemiz gereken satır başlangıcı (böyle olacak)
INSERT INTO `user` VALUES (44376, 2, '', 0, 'Fatu',........
Gördüğünüz gibi Üye ID'si bir olan Fatu nickli User'ın ID'sini 44376 yaptık ve üyenin Üye Gurubu ID sini de 6'dan 2 ye çevirdik. Yukarıda bahsetmeyi unuttum şimdi zamanı geldi anlatıyorum. Parantezden sonraki ilk rakam User ID'dir ikinci rakam ise Üye Gurubu ID'sidir (yani rütbesidir). Üyenin rütbesini değiştirmezseniz ne olur..? :) Tabiki eleyeceğiniz forumun adminleri süper moderatörleri moderatörleride sizin forumunuzda aynen admin smod ve mod olarak eklenir. Bunu istemiyorsanız değiştirin. Zaten rütbeli üyelerin sayısı fazla olmayacağı için bunu manuel olarak yapmanızı tavsiye ederim. Konuyu daha fazla karıştırmayalım. Yada aynen hiç ellemeden de üyeleri önce eklersiniz sonra normal bi şekilde admin panelden girip yetkileri alırsınız herhangi bi sorun çıkmaz.
Diğerlerinide aynı şekilde sırayla yapmamız gerek. Bunu bu şekilde manuel olarak tabiki yapmak çok zor saatlerce uğraştırıcı bir durum olur ve zaten mutlaka bi yerde hata yaparız aynı rakamı yazarız ve bu işlem hata verir.
Ben şimdi size bunu otomatik yada çok zahmete girmeden yapabilmek için ufak bi taktik anlatıcam. Bu taktiği geliştirip sizin işinize daha çok yarabilecek hale getirmek sizin elinizde olan bişi.
Örnek olarak aşağıdaki rakamları vermiştik:
Ve demiştik ki son üyenin id numarası 44375.
Bu örneğe göre size tavsiyem;
Aşağıdaki maddeleri yapmadan önce eklenecek-user.sql dosyamızın bir kopyası kenarda bi yerde saklayalım. Yanlış yaparsak yine bu dosyamıza geri dönebilelim diye.
1. Eklenecek olan database deki User ları 1-999 a kadar olanlarını kopyala yapıştır yaparak yeni bir dosyaya kaydedelim, dosya ismide 1-999.txt olsun. (Worpad de yapıyoruz bu işi)
2. 1.000-9999 arasındaki userlarıda yine kopyala yapıştır yaparak wordpadde yeni bir dosyaya kaydedelim, dosya ismide 1000-9999.txt olsun.
3. 10.000-19.999 arasındaki userlarıda yine kopyala yapıştır yaparak wordpadde yeni bir dosyaya kaydedelim, dosya ismide 10000-19999.txt olsun.
4. 20.000-24.769 arasındaki user ları da yine kopyala yağıştır yaparak wordpadde yeni bir dosyaya kaydedelim, dosya ismide 20000-24769.txt olsun.
5. INSERT INTO ile başlayan satırlardan önce bir takım bilgiler yazılı. Sadece bu bilgileri bırakıp diğer bütün INSERT INTO ile başlayan satırları silelim ve kaydedelim ana dosyamızı. Bu Dosyamızın adı da ana-user.sql olsun.
Şimdi elimizde 5 tane dosya var.
1. Dosya: ana-user.sql
2. Dosya: 1-999.txt
3. Dosya: 1000-9999.txt
4. Dosya: 10000-19999.txt
5. Dosya: 20000-24769.txt
Önce 2. dosya olan 1-999.txt dosyasını açalım wordpad'imiz ile. Size yine tavsiyem en azından ilk 99 üyeyi elle manuel olarak girmeniz. Zaten genelde forumlarda bütün yetkililer genelde ilk üyelerdir. Onları görüp direk editlemiş olursunuz. Yada onları hiç eklemeyin silin gitsin. (Çok önemli değilse tabiki..!) Şimdi ben sildiğimizi varsayıp o şekilde anlatmaya devam ediyorum. Siz nasıl istiyorsanız öyle yaparsınız.
Şimdi aşağıdaki resimleri dikkatlice inceleyip resimlerdeki yazılarıda dikkatlice okuyalım.
01.jpg

Birden 100'e kadar olan üyeleri sildik ve dosya yukarıdaki resimdeki gibi görünüyor. Şimdi yapmamız gereken şey aşağıdaki resimdeki kırmızı çerçeveye aldığım yerdeki gibi bazı üyelerin ID numaralarının sırası kaymış. Aşağıdaki resimde görünen 159 ve 160 ID no lu üyelerin arasına ID numarası 10 binlerde olan üç tane üye kaymış. Bunları ya siliyoruz yada olması gereken yere kendi sırasına kopyalayıp yağıştırıyoruz. Bunları kontrol edip temizlemezsek çakışan ID ler olabilir. Şöyle bi göz gezdirelim bütün ID lere. Zaten direk gözünüze çarpacaktır. Onları hemen düzeltiyoruz.
02.jpg

Bu ufak düzeltme işlemlerini iki dakkada hallettikten sonra aşağıdaki resimde görüldüğü gibi WordPad de düzen menüsünden Değiştir'i seçiyoruz yada kısayolu olan Ctrl+H tuşlarına basıyoruz. (Değiştirin Yanında kısayolu yazıyor zaten.)
03.jpg

Değiştire tıkladıktan sonra aşağıdaki resimde görünen ufak Değiştir penceresi açılıyor. Bizim elimizdeki databaselere göre yani ana forumumuzun üye sayısı son üyenin ID numarasına göre aşağıdaki gibi başlattım numaralandırmayı. Resimlerde de herşey açık görülüyor. Resimleri inceleyelim. Bu değiştirme rakamları bizim elimizdeki ana forumumuzun üye sayısına göre değişecektir. Benim verdiğim rakamlar yukarıdaki örnek forumların üye sayılarına göredir.
Verdiğimiz örnekte son üye olan kişinin üye ID si 44.375 ti. İlk yüz üyeyide silmiştik ve ben aşağıda bunu 45.100 den başlatıyorum. Aradaki olmayan ID lerin bi önemi yok. İsterseniz 150.000 den bile başlatabilirsiniz. Ama tabiki boş ID numarası ne kadar az olursa forumda bakım yaparken, güncelleştirme yaparken o kadar iyi olacaktır. Çok fazla boş ID numarası demek yapacağınız bakımların güncelleştirmelerin boşu boşuna daha fazla zaman harcaması demek olacaktır. Ona göre en uygun rakamdan başlatın.
04.jpg

Resimlerin üzerlerindeki yazıları okuyun.
05.jpg

Buraya kadar herşeyi düzgün olarak yaptıysak 100-999 üyenin id leri artık hazır durumda demektir. Aynı mantıkla diğer dosyalarıda tümünü değiştirip devam ediyoruz. Bu ID numarası değiştirme işlemi bittikten sonra; ana-user.sql dosyamızı açıyoruz ve altına bu değiştirdiğimiz diğer 4 dosyayı olduğu gibi kopyala yapıştır yapıyoruz. ana-user.sql dosyası parçalara bölmeden ki haline gelicek. Artık sql dosyamızda hazır hale geldi.
Şimdi yapmamız gereken şey phpmyadmin den bu dosyayı import etmek. (Yada siz nasıl DB yüklüyorsanız o şekilde de yükleyebilirsiniz. Mesela mysqldumper, bigdump.php kullanıyorsanız aynı şekilde yine kullanabilirsiniz.)
Dosyamızı import ettikten sonra hemen koşup üye sayısına bakmayın henüz bişi değişmedi forumunuzda. :) Üyeler eklendi fakat henüz forumda görünmüyor. Şimdi normal bi şekilde admin panelimizden girip Bakımdan Güncelleme sayacına girip bütün güncelleştirmeleri yapmamız gerekiyor. Bu güncelleştirme işlemini yaptıktan sonra birde Tabloları optimize edip onarırsak daha sağlıklı olucaktır. Bu işlemleride yaptıktan sonra forumunuz açabilirsiniz. Üye sayınızı da kontrol edebilirsiniz. :)
Kolay gelsin.
(Şimdi burda sadece user tablosunu anlattık çünkü sadece userları birleştirmek böyle kolay oluyor. Diğer tablolarıda birleştirebiliriz aslında konuları mesajları vs. diğer tabloları fakat çok detaylı planlı ve programlı bir şekilde herşeyi yapmamız gerekecekti. Açıksası ben yukarıdaki anlattığım şekilde üç forumun üyelerini birleştirdim fakat konuları mesajları birleştirmek yemedi. :) Mesela sadece konuları almaya kalksanız thread ID leri değiştirmek yetmeyecek. bununla ilgili post idleri ve yine konuyu açanlarla ilgili user id leri de birbirleriyle ilişkili olduğu için bunu yapmak çok zor ve planlı hareket etmek gerekir. Ben bunu yapabilmeyi göze almış olsaydım bile anlatmaya kalksam anlatamazdım..! :) )
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst