• Bir MySQL veritabanını başka bir sunucuya aktarma. Eklentili ve eklentisiz bir veritabanını WordPress'e aktarma

    Site dosyalarımız başarılı bir şekilde hostinge yüklenmiştir. Zaman kaybetmeyelim ve yeniden planlayalım mevcut taban LAN'dan sunucuya veri (DB).

    Bunu yapmak için PhpMyAdmin'e gidin. Nerede olduğunu kim unuttu, bak.

    Veritabanımızı (mebelip) görüyoruz ve adına tıklıyoruz.

    Yeni başlayanlar için kesinlikle hiçbir şey söylemeyen birçok veriyle önümüzde bir pencere açıldı. Ama şimdi buna ihtiyacımız yok.

    Sadece "Dışa Aktar" sekmesine tıklıyoruz.


    OpenServer'ın varsayılan olarak Chrome tarayıcısında açıldığını hatırlatmama izin verin. Bu nedenle sol alt köşede indirilen dosyayı görüyoruz. Nereye sakladığınızı unutmayın, yakında ona ihtiyacımız olacak.

    Üzerine tıklıyoruz.


    Eğlenmek için, içinde hangi "gizli" bilgilerin olduğunu görebilirsiniz. Basit bir not defteri ile açılır.


    ile her şey Yerel sunucu bitti. Barındırma hesabınızın yönetici paneline gidin.

    Burada "MySQL" sekmesiyle ilgileniyoruz.


    "Ekle" düğmesine basın MySQL kullanıcısı". Varsayılan olarak zaten oluşturulmuştur. Ancak özellikle bu site için yeni bir tane oluşturmanızı öneririm.

    Gelecekte, burada birden fazla siteniz olduğunda, bu karışıklığın önlenmesine yardımcı olacaktır.


    Bir açılır pencere belirir, içinde kullanıcı adını yazıyoruz. İki kısımdan oluşuyor birincisi host1234567 (sayılar size özel olacak), değişmeyen kısım ama ikinci kısımda bilgilerimizi yazıyoruz.

    Benim için daha fazla rahatlık için "meb" olacak. Bu yüzden kafam karışmasın ve bunun bir mobilya sitesine atıfta bulunduğundan emin olacağım.

    Kendi şifrenizi belirleyebilirsiniz.


    ortaya çıktığını görüyoruz Yeni kullanıcı, ancak ona hiçbir veritabanı eklenmemiş.

    Şimdi veritabanının kendisini oluşturalım.

    "MySQL Veritabanı" sekmesine tıklayın.


    "MySQL veritabanı ekle" düğmesi.

    Açılır pencerede bir ad girin. Kolaylık sağlamak için, kullanıcı adıyla aynı verileri yazmak daha iyidir.


    Daha önce oluşturduğumuz kullanıcıya bağlı bir veritabanı var.

    Bu bilgiyi bir yere yazın, yani. kullanıcı adı ve veritabanı ve değiştirdiyseniz şifre. Bütün bunlara bir sonraki derste ihtiyaç duyulacak.

    "phpMyAdmin" üzerine tıklayın.


    Solda, varsayılan veritabanına tıklayın.


    Yeni oluşturduğumuzu bulup aynı şekilde açıyoruz.


    Üstteki "İçe Aktar" sekmesini bulun - tıklayın.

    16 Mayıs

    Son zamanlarda bir siteyi bir barındırmadan diğerine aktarma sorunu vardı. Veritabanları olmadan yalnızca html ve css kullanan sitelerde hiçbir zorluk olmamalıdır. Bir tef ile dans etmek siz olduğunuzda başlar mutlu sahibi veritabanı sitesi. Artık internetteki bu tür siteler büyük çoğunlukta.

    Barındırmadan barındırmaya düzenli kopyalamayı kullanarak site dosyalarını kendileri aktarabiliriz

    Bir veritabanını bir sunucudan diğerine aktarmak için şunlara ihtiyacımız var:
    1. Veritabanı dökümünü bilgisayarınıza indirin (Dışa aktarma işlemi).

    2. Veritabanı dökümünü barındırma sunucusuna yükleyin (İçe aktarma işlemi).

    Bunu birkaç ile yapabilirsiniz Farklı yollar. Hatta bazı CMS'ler bu işlemleri dahili olarak gerçekleştirmenize izin verir. Ayrıca MySQL veri tabanı boşaltma aracını da kullanabilirsiniz. Ancak veritabanlarını aktarmanın en bilinen ve yaygın yolu, bu makalede ele almak istediğim veritabanı kontrol panelini kullanarak aktarımdır.

    1. Veritabanını sunucudan bilgisayarınıza aktarın.

    Aktarmamız gereken veritabanının şu anda bulunduğu sunucuya gitmeniz ve veritabanları listesindeki menünün sol tarafında aktarılması gerekeni seçmeniz gerekiyor.

    " adresine gitmeniz gerekiyor. İhracat» ve « olarak seçin İhracat Yöntemi» — Normal — mümkün olan tüm ayarları gösterir.

    Bundan sonra, alanlara dikkat etmeniz gerekir:
    1. Tablolar sekmesinde, içe aktarılacak tüm tablolar seçilmelidir. Aktarım veritabanlarına aktarım sırasında bazı tablolara gerek kalmayabileceği gibi bir durum söz konusu olabilir. Bu durumda, gerekli tablo adlarını sabitlenmiş bir simgeyle vurgulayarak gerekli olmayan tablolardan seçimi kaldırabilirsiniz. Ctrl tuşu klavyede. (ÖNEMLİ! eğer değilsen deneyimli kullanıcı veritabanları - tüm tabloları seçmek daha iyidir. )
    2. "Çıktıyı dosyaya kaydet" seçeneğini seçin.
    3. Alanda ayarlanan kodlamayı hatırlayın - Dosya kodlaması.
    4. Neden gerekli olduklarını bilmiyorsanız, kalan öğelere dokunulmasına gerek yoktur.
    5. Tamam'a tıklayın ve ardından dosyayı bilgisayarınıza kaydedin.

    2. Veritabanını bilgisayardan sunucuya aktarın.

    1. Kaydedilen kavun veritabanının uzantısını bilgisayarımızda kontrol ediyoruz. '.sql' olmalıdır. Öğe veritabanı kaydedilirken belirtilmişse - arşivleyin (zip, gzip, bzip ) - önce veritabanını arşivden çıkarmanız gerekir.
    2. Veritabanı dökümümüz aşağıdaki gibi sorgular içermemelidir: « VERİTABANI OLUŞTUR, /*!40101 SET @ESKİ» . Veritabanı dökümünü bir not defteri veya başka bir araçla açarak böyle bir isteğin yokluğunu veya varlığını doğrulayabilirsiniz. Metin düzeltici. Böyle bir istek varsa bu satırı silmeli ve dosyayı yeniden kaydetmelisiniz. Kural olarak, bir veritabanı dökümünün ilk 15 satırında yer alır.
    3. Gelecekteki veritabanında hiçbir tablonun oluşturulmadığından emin olmanız gerekir. Bunu yapmak için, veritabanları listesinde soldaki menüden veritabanınıza gidin ve seçin. Menünün sol tarafında "Veritabanında tablo bulunamadı" mesajını görebilirsiniz. Tablolar varsa, onları silmeniz gerekir.

    Tüm bu noktaları tamamladıktan sonra, "Gözat" düğmesine tıklayarak bilgisayardan kaydedilen veritabanı dökümünü seçtiğimiz "İçe Aktar" sekmesine güvenle gidebilirsiniz. "Dosya Kodlama:" alanında, bu veritabanının oluşturulduğu kodlamayı seçin.

    Daha fazla ayar yapmanıza gerek yoktur. Tıklamak TAMAM ve veritabanı içe aktarma işleminin bitmesini bekleyin.

    Üs başarıyla aktarıldı ve bundan sonra sitemiz yeni bir barındırma üzerinde çalışacak! (Diğer tüm site aktarım işlemlerinin yapılmış olması şartıyla).

    Birçoğu, bir MySQL veritabanına sahip komut dosyalarının başka bir barındırmaya nasıl aktarılacağını düşündü. O yüzden bu yazıda SSH/telnet ve PHPMyAdmin kullanarak veritabanınızı nasıl transfer edeceğinizi yazdım "a.

    Her iki sunucuya da telnet veya SSH erişiminiz varsa, işlemlerinizin sırası aşağıdaki gibi olacaktır:
    Kaynak sunucuya Telnet/SSH. Veritabanınızın içeriğini aşağıdaki komutla dışa aktarın:

    mysqldump -uYourLogin -pYourPassword _mysql YourDatabase > baza.sql

    Bu komutu çalıştırdıktan sonra veritabanınızın tüm içeriği baza.sql dosyasına kaydedilecektir.

    Ardından, veritabanınızla birlikte ortaya çıkan dosyayı alıcı sunucuya yüklemeniz gerekir. Bu, aynı telnet/SSH oturumunda ftp komutu kullanılarak veya tercih ettiğiniz herhangi bir istemci kullanılarak yapılabilir (önce baza.sql dosyasını bilgisayarınıza indirin ve ardından alıcı sunucuya yükleyin). Veritabanı dosyanız alıcının sunucusunda bulunduktan sonra bu sunucuya telnet/SSH ile giriş yapınız. Aşağıdaki komutu çalıştırarak veritabanınızı alıcı sunucuya yükleyebilirsiniz:

    mysql -uYourLogin -pYourPassword _mysql YourDatabase< baza.sql

    (şifreler ve girişler ve veritabanı adları, elbette, alıcı sunucu için geçerli olanları belirtmelisiniz). Sonuç olarak, veritabanınızı herhangi bir kayıp olmadan bir sunucudan diğerine aktarmış olacaksınız.

    Yukarıda açıklanan teknik, her iki sunucuya da telnet veya SSH üzerinden erişiminizin olduğu durumlarda ve veritabanınızın oldukça büyük olduğu (birkaç onbinlerce kayıt) durumlarda kullanılabilir. Sunuculara (veya bunlardan birine) telnet veya SSH üzerinden erişiminizin olmadığı veya nasıl çalışacağınızı bilmediğiniz durumlarda takım ortamı Unix ve bir telnet veya SSH istemcisi kullanıyorsanız, aşağıdaki tekniği kullanabilirsiniz:
    Kaynak sunucuda, MySQL veritabanlarıyla çalışmak için komut dosyasına gidin (Genellikle bu PHPMyAdmin'dir). Aktarılacak veritabanını seçin ve özelliklerinde "Veritabanı dökümünü görüntüle (şema)" seçeneğini belirtin (Unutulmamalıdır ki belirli başlıklar Menü öğeleri, farklı sunucularda kullanılabilmeleri nedeniyle burada bahsedilenlerden farklı olabilir. farklı versiyonlar program ve bu nedenle, ilgili belgelere aşina olmanız son derece arzu edilir). İhtiyacınız olan öğeleri işaretleyin: "Yalnızca yapı", "Yapı ve veriler", "Yalnızca veriler" ve "Gönder" öğesini işaretleyin. Bir süre sonra "Git" düğmesine bastığınızda, bir dosya yüklemeniz istenecektir - bu, veritabanınızın içeriği olacaktır. Dosya bilgisayarınıza indirildiğinde.

    Başka bir sunucuya taşınması gereken bir MS SQL Server veritabanınız var mı? fiziksel bilgisayar. Zaten bir yedekleme yaptınız ve mutlu bir şekilde geri yüklemeye başladınız. Ancak daha sonra, veritabanını aktarmak istediğiniz bilgisayarda birden fazla olduğu ortaya çıktı. eski versiyon MS SQL Sunucusu. Yığın Taşması, işlerin kötü olduğunu garanti eder. Ama gerçekten öyle mi?

    Tabii ki, üssü daha fazla hareket ettirmek Yeni sürüm eskisine - bu bir klasik değil ve en doğru çalışma senaryosu değil. Ancak genellikle veritabanları, bazılarından başlayarak, örneğin 2008 R2'den başlayarak SQL'in giderek daha fazla yeni sürümünü destekleyecek şekilde oluşturulur, çünkü. MS SQL ile doğrudan uyumluluk mükemmelden daha fazlasıdır. Ve örneğin, müşteriniz zaten MS SQL 2016'yı yükledi ve geliştirme için test sunucunuzda MS SQL 2014 kurulu.Ve müşterinizin veri tabanını, verilerle nerede karıştığını anlamak için genişletmek istiyorsunuz.

    Microsoft sorunu reddetti - geriye dönük uyumluluğa sahip olmadıklarını söylüyorlar ve hepsi bu. destek olmak daha yeni bir sunucuda oluşturulan eski bir sunucuya geri yüklenemez. Evet, DTS, kopya tabanı, ihracat-ithalat vb. araçları var. Ancak o kadar elverişsiz ve hantallar ki, bunları kullanan birçok tabloyla büyük bir veritabanının normal transferini yapmak pek uygun değil. Her halükarda, şahsen başarılı olamadım.

    Evet, veriler dahil tüm veritabanı için SQL betikleri oluşturabilirsiniz. Ancak veritabanınızda büyük veri içeren bir grup blob alanınız olduğunu ve genel olarak tüm veritabanının boyutunun 500+ GB olduğunu hayal edin. Böyle bir betiğin ne kadar süreceğini, ne kadar sürede oluşturulacağını ve çalıştırılacağını hayal edin.

    Bir numaralı sınırlama, MS SQL Management Studio üzerinden eski ve yeni sunucuların her ikisine de erişmeniz gerektiğidir. Bu mümkün değilse, veritabanını aktarmak istediğiniz makinede mümkün olmalı, veritabanını yerel olarak önce bu sürüme aktarmak için veritabanını aktarmak istediğiniz SQL sürümünü kurun ve sonra onu yedek üzerinden veya doğrudan *df veritabanı dosyaları (Ayırma/Attach aracılığıyla) aracılığıyla yeni bir makineye sürükleyin (bu durumda SQL Server sürümü zaten eşleşecektir).

    Diğer bir sınırlama, veri içermeyen bir veritabanı şeması komut dosyasına (tablolar, dizinler, kısıtlamalar, saklı yordamlar, tetikleyiciler vb. en sonunda, tabloları kendileri oluşturmak için komut dosyasından ayrı.

    Veri aktarım algoritmasının kendisini kısaca anlatacağım. Tüm eylemler, sunucuya bağlı bir Management Studio oturumunda gerçekleştirilir, hangisindeüssü hareket ettirmeniz gerekiyor.

    1) Yeni sunucuda, taşınan veritabanıyla aynı dosyalara ve dosya gruplarına sahip boş bir veritabanı oluşturun.

    2) Veritabanı şema komut dosyasını kullanarak, Yabancı Anahtar Kısıtlamaları oluşturmadan tüm veritabanı nesnelerini (tablolar, dizinler, görünümler, tetikleyiciler, saklı yordamlar ve işlevler) oluştururuz. Bu aşamada FK oluşturmak imkansızdır çünkü veri eklemeye müdahale edeceklerdir.

    3) Verileri aktaracağımız veritabanını Linked Server "a olarak bağlıyoruz, böylece eski veritabanına gelen istekleri yeni veritabanına yapılan sorgularda kullanabiliriz.

    EXEC sp_addlinkedserver @server=N"LinkedServerAlias", @srvproduct=N"", @provider=N"SQLNCLI", @datasrc=N"LinkedServerHost\LinkedServerName"; EXEC sp_addlinkedsrvlogin "LinkedServerUser", "false", null, "RealUser", "RealUserPassword";
    4) Çünkü veritabanı yapıları aynıdır, yerleşik saklı yordamı sp_msforeachtable kullanacağız; eski üs gibi bir istek yoluyla yenisine

    TAKIN ? SEÇ * KİMDEN ?
    Soru işareti yerine sp_msforeachtable, her tablonun adını değiştirir ve sorguyu birden çok kez çalıştırır (tablo başına bir kez).

    En çok burada karşılaştım çok sayıda tırmık

    A) Birinci sorun, KİMLİK alanlarına sahip tablolar için şunu aramanız gerektiğidir:

    IDENTITY_INSERT'İ AÇIK AYARLAYIN; --INSERT INTO ... (kendini ekle); IDENTITY_INSERT'İ KAPALI AYARLAYIN;
    b) İkinci problem ise IDENTITY alanı olmayan tablolarda bu çağrı yapılamaz, bu nedenle tablonun IDENITY sütunu olup olmadığını dinamik olarak belirlemeniz gerekir.

    Bu, aşağıdaki gibi bir sorgu ile yapılabilir:

    INFORMATION_SCHEMA.COLUMNS WHERE (TABLE_NAME="SomeTable") VE (COLUMNPROPERTY(object_id("dbo.SomeTable"), COLUMN_NAME, "IsIdentity") = 1) FROM INFORMATION_SCHEMA.COLUMNS SEÇİN *
    c) Üç numaralı sorun, ortaya çıktığı gibi, IDENITY_INSERT ON modunda yapamayacağınızdır.

    EKLE ... SEÇİN * KİMDEN ...
    , ancak belirli alanları listelemeniz gerekir.

    Bir tablonun alanlarını aşağıdaki sorgu ile sıralayabilirsiniz:

    SELECT SUBSTRING((SELECT ", " + QUOTENAME(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = "SomeTable" ORDER BY ORDINAL_POSITION FOR XML path("")), 3, 200000);
    4) Tüm tablolar için bir ekleme komut dosyası oluşturun:

    Komut dosyası oluşturma prosedürü

    EXEC sp_msforeachtable N" DECLARE @command varchar(MAX); DECLARE @name varchar(200); SET @name=""?""; SET @name = SUBSTRING(@name, 8, LEN(@name)-8); SET @command = """"; SELECT @command= SUBSTRING((SELECT "", "" + QUOTENAME(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = """" + @name + """" ORDER BY ORDINAL_POSITION FOR XML yolu("""")), 3, 200000); SET @command = ""INSERT INTO ""+ @name +"" (""+ @command + "") SELECT "" + @command + "" "" + ""LinkedServerAlias.SourceDatabase."" + ""?""; SET @command= ""IF EXISTS (INFORMATION_SCHEMA.COLUMNS'den *'yi seçin, burada (TABLE_NAME=""""""" + @Name + "") """") VE (COLUMNPROPERTY(object_id(""""dbo."" [e-posta korumalı]+""""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @name + "" ON; "" [e-posta korumalı]; AYARLAMAK @ [e-posta korumalı]+"";"" + ""MEVCUTSA (INFORMATION_SCHEMA.COLUMNS içinden * seçin, burada (TABLE_NAME="""""" + @Name + """""") VE (COLUMNPROPERTY(object_id(""""dbo) ."" [e-posta korumalı]+""""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @name + "" OFF;""; YAZDIR (@komut); --EXEC(@komut); // Yorum yapılmazsa, komut dosyası hemen yürütülür ve yalnızca ekranda görüntülenmez "


    5) Oluşturulan veri aktarım komut dosyasını yürütün

    6) Tüm Yabancı Anahtar Kısıtlamalarını oluşturmak için betiği çalıştırın (şimdi yapabilirsiniz).

    7) Bitti! Veritabanını yeni bir yerden taşıdınız SQL Server eskiden, imkansız olduğu düşünülse de. Üstelik aktarım, ağ üzerinden veri aktarım hızından yalnızca bir buçuk kat daha yavaş gerçekleştirilir, yani. oldukça hızlı.

    8) Kendimizi temizleyin (Bağlantılı Sunucuyu devre dışı bırakın):

    EXEC sp_droplinkedsrvlogin "LinkedServerUser", boş; sp_dropserver "LinkedServerAlias";
    Yöntem sınırlamaları.

    1) Bu yöntem, XML türünde sütunları olan tabloları aktaramaz.
    Elbette başka birçok kısıtlama var, tk. bu şekilde aktardığım veritabanı, SQL server'ın birçok özelliğini kullanmıyordu. Yorumlardaki kısıtlamalar hakkında yazabilirsiniz, ben de makaleyi onlarla tamamlayacağım.

    İlginiz için teşekkür ederiz! Umarım birine yardımcı olur.

    yollar nelerdir?

    1 - phpMyAdmin arayüzünü kullanarak.

    2 - barındırma sağlayıcısının kontrol panelini kullanarak.

    3 - üçüncü taraf bir program kullanmak.

    Hangi yol daha iyi?

    İlkini öneriyoruz, çünkü şeması basittir ve çoğu web yöneticisi tarafından kullanılır. Üçüncü yöntemi kullanmanızı önermiyoruz! Sitenizin içeriğine asla güvenmeyin. üçüncü taraf programları, anlaşılmaz geliştiricilerin yanı sıra. İkinci yöntemi de kullanabilirsiniz, ancak algoritması çok farklıdır ve barındırıcının kontrol paneline bağlıdır. Bu nedenle, ilk seçeneği ayrıntılı olarak ele alacağız ve size MySQL veritabanlarını verileri kaybetmeden veya bozmadan yetkin bir şekilde nasıl aktaracağınızı anlatacağız.

    Yeni bir barındırmada veritabanı oluşturun

    Bir MySQL veritabanını taşımak istiyorsanız, zaten bir veritabanınız var ve onu nasıl oluşturacağınızı biliyorsunuz. Her halükarda, bu süreç barındırma sağlayıcılarının her biri için farklıdır, ancak tek bir genel algoritmaya bağlıdır:

    1 - “MySQL”, “Veritabanları” veya benzeri bir bölüm arıyoruz.

    2 - İçinde "Oluştur"a tıklayın.

    3 - Veritabanının adını girin, ona bir kullanıcı ekleyin (genellikle veritabanı kullanıcısı zaten oluşturulmuştur, yoksa oluşturun ve en yüksek hakları ayarlayın) ve veritabanı için şifreyi girin.

    4 - Veritabanı oluşturuldu, ancak şu anda boş.

    Veritabanını eski barındırmadan dışa aktarma

    Şimdi veritabanı dökümü denen şeyi kullanacağız. Onlar. geçerli veritabanını sunucudan bilgisayarınıza kaydedin. Bunu yapmak için, içinde bulunması gereken phpMyAdmin arayüzüne ihtiyacımız var. kişisel hesap geçerli sitenizi barındıran barındırma sağlayıcısı. Yine, tek bir algoritma yoktur, bu nedenle genel bir şema sunuyoruz:

    2 - Sol köşede veritabanınızı seçin (daha sonra başka bir barındırmaya aktarabilmeniz için bilgisayarınıza aktaracağınız veritabanı).

    4 - Dışa aktarma yöntemini "Normal" (birçok ayar) veya "Hızlı" (birkaç ayar) seçmeniz istenebilir. Hangisini seçeceğiniz önemli değil, asıl mesele yalnızca aşağıda açıkladığımız ayarları değiştirmek.

    5 - “Tümünü Seç” butonuna tıklayarak tüm tabloları seçmeniz gerekmektedir.

    7 - Her ihtimale karşı kodlamayı unutmayın ama ona dokunmayın.

    8 - "Tamam"a tıklayın ve dosyayı veritabanından bilgisayarınıza kaydedin. Kaydedilen dosya genellikle .sql uzantısına sahiptir.

    Veritabanını yeni ana bilgisayarın sunucusuna aktarma

    1- Aynı şekilde yeni bir hosting üzerinde phpMyAdmin arıyoruz.

    2 - İçinde seçiyoruz istenen baz veri (makalenin başında oluşturduk ve boş bırakılmıştı).

    3 - "İçe Aktar" sekmesine tıklayın.

    4 - "Gözat"a tıklayın ve bilgisayarda kayıtlı veritabanını seçin.

    5 - Kodlamanın, veritabanını kaydettiğinizle eşleştiğini kontrol edin.

    6 - Başka hiçbir şeyi değiştirmeyin, "Tamam"a tıklayın ve veritabanınız yeni barındırmaya aktarılacaktır.

    Sorun ne?

    1 - Bir veritabanını içe aktarırken " gibi sorgular içermemelidir. VERİTABANI OLUŞTUR, /*!40101 SET @ESKİ". Varlıklarını kontrol etmek için, bilgisayarınızdaki veritabanı dosyasını herhangi bir metin düzenleyiciyle açın (en iyisi Notepad++'dır) ve bu sorguları aramak için Ctrl+A'yı kullanın. Bulursanız, bunları silin ve veritabanını tekrar içe aktarmayı deneyin.

    2 - İçe aktarırken, yeni ana bilgisayarda bulunan veritabanı boş olmalıdır, eğer içinde zaten tablolar varsa - bunları seçin ve silin.