2009-07-03 20 views

cevap

12

O sürümüne biraz bağlıdır. 5.0.13'ten önce mysqldump ile bu mümkün değildir. Mysqldump adam sayfasından

(v 5.1.30)

--routines, -R 

     Dump stored routines (functions and procedures) from the dumped 
     databases. Use of this option requires the SELECT privilege for the 
     mysql.proc table. The output generated by using --routines contains 
     CREATE PROCEDURE and CREATE FUNCTION statements to re-create the 
     routines. However, these statements do not include attributes such 
     as the routine creation and modification timestamps. This means that 
     when the routines are reloaded, they will be created with the 
     timestamps equal to the reload time. 
     ... 

     This option was added in MySQL 5.0.13. Before that, stored routines 
     are not dumped. Routine DEFINER values are not dumped until MySQL 
     5.0.20. This means that before 5.0.20, when routines are reloaded, 
     they will be created with the definer set to the reloading user. If 
     you require routines to be re-created with their original definer, 
     dump and load the contents of the mysql.proc table directly as 
     described earlier. 
0

Kullan yedekleme saklı prosedürlere '-R', aynı zamanda akılda tutmak size veritabanının tutarlı bir dökümü istiyorsanız iken onun varlık

mysqldump <other mysqldump options> --routines > outputfile.sql 

biz ise -: (siz de MyISAM tabloları gerekiyorsa) (yalnızca yedekleme innodb ise) veya --lock-all-tables

12

bu komutları kullanın modifiye Eğer --single-transaction kullanmak gerekir SADECE saklı prosedürler ve tetikleyiciler yedekleme istiyoruz ve MySQL tabloları ve veriler daha sonra biz böyle bir şey çalışmalıdır değil:

: Başka bir db/sunucuya aktarmak gerekirse böyle bir şey çalıştırmak zorunda kalacak

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql 

--routines bayrağına ek olarak

mysql <database> < outputfile.sql 
5

saklı yordamlar okumak için yedek kullanıcı izinleri vermek gerekir: için hİBE ayrıcalıkları

GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup host>; 

Benim kümesini Yedek kullanıcı şunlardır: durumunda

GRANT USAGE ON *.* TO ... 
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ... 
GRANT SELECT ON `mysql`.`proc` TO ... 
+0

Hibe ayrıcalıkları, eksik olduğum şey budur! +1 – carla

+0

Ayrıca, bir “FLUSH PRIVILEGES” i de unutmayın. – carla

38

herhangi bağlantıları kesmeden tam yani yedekleme, tüm veritabanlarını, prosedürleri, rutinler, olaylar almak istiyorum.

mysqldump -u <username> -p -A -R -E --triggers --single-transaction > full_backup.sql 
tüm veritabanları (ayrıca --all-databases kullanabilirsiniz) için
  1. -A-

    . Tüm rutinler için
  2. -R.
  3. -E - tüm Etkinlikler için.
  4. - tekli işlem - tablayı kilitlemeden, yani herhangi bir bağlantı kesmeden (R/W).

Yalnızca veritabanı (lar) üzerinde yedek almak istediğiniz sürece.

mysqldump -u <username> -p <Database_Name1><database2> -R -e --triggers --single-transaction > Database_backup.sql 

Veritabanındaki belirli bir tablonun yedeğini almak istediğiniz sürece.

mysqldump -u <username> -p <database_name> <Table_name> > table_backup.sql 

imkândan sadece önceki komutlara --no-veri eklemek Bir veritabanı yapısının yedeğini almak istiyorum.Bu araçta daha fazla seçenek vardır. FUrther bilgileri aşağıdaki bağlantıda bulunabilir: - mysqldump information

1

Ben MySQL 5.5.40 kullanıyorum. Bu sürüm --all-databases

mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql 

Bu komut MySQL sunucusundaki tüm veritabanlarının tam bir yedeğini oluşturur geçerli tarih-zaman adlı dosyası seçeneği vardır.

İlgili konular