Mysql
 sql >> база данни >  >> RDS >> Mysql

Автоматично или редовно архивиране на mysql данни

CSV и SELECT INTO OUTFILE

http://dev.mysql.com/doc/refman /5.7/bg/select-into.html

SELECT ... INTO OUTFILE записва избраните редове във файл. Могат да бъдат зададени терминатори на колони и редове, за да произведат специфичен изходен формат.

Ето пълен пример:

SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

Файлът се записва на сървъра и избраният път трябва да може да се записва. Въпреки че тази заявка може да се изпълни чрез PHP и уеб заявка, най-добре е да се изпълни през конзолата на mysql.

Данните, които се експортират по този начин, могат да бъдат импортирани в друга база данни с помощта на ЗАРЕЖДАНЕ НА ИНФАЙЛ С ДАННИ

Въпреки че този метод е по-добър при повторение през набор от резултати и записване във файл ред по ред, той не е толкова добър, колкото използването на....

mysqldump

mysqldump е по-добра от SELECT INTO OUTFILE в много отношения, създаването на CSV е само едно от многото неща, които тази команда може да направи.

Клиентската помощна програма mysqldump извършва логически архиви, произвеждайки набор от SQL оператори, които могат да бъдат изпълнени, за да възпроизведат оригиналните дефиниции на обект на база данни и таблични данни. Той изхвърля една или повече MySQL бази данни за архивиране или прехвърляне към друг SQL сървър. Командата mysqldump може също да генерира изход в CSV, друг текст с разделители или XML формат.

В идеалния случай mysqldump трябва да се извиква от вашата обвивка. Възможно е да използвате exec в php, за да го стартирате, но тъй като създаването на дъмп може да отнеме много време в зависимост от количеството данни и php скриптовете обикновено се изпълняват само за 30 секунди, ще трябва да го стартирате като фонов процес.

mysqldump не е без доста проблеми.

Той не е предназначен като бързо или мащабируемо решение за архивиране на значителни количества данни. При големи размери на данни, дори ако стъпката за архивиране отнема разумно време, възстановяването на данните може да бъде много бавно, тъй като повторното възпроизвеждане на SQL изрази включва дисков I/O за вмъкване, създаване на индекс и т.н.

Класически пример вижте този въпрос: Срив на сървъра при архивиране на MySQL с помощта на python където изглежда, че един mysqldump започва, преди предишният да е завършил и прави уебсайта напълно неотговарящ.

Mysql репликация

Репликацията позволява копиране на данни от един MySQL сървър на база данни (главният) към един или повече сървъри на база данни на MySQL (подчинените). Репликацията е асинхронна по подразбиране; подчинените устройства не трябва да бъдат свързани постоянно, за да получават актуализации от главния. В зависимост от конфигурацията можете да репликирате всички бази данни, избрани бази данни или дори избрани таблици в рамките на база данни.

Така репликация работи различно от SELECT INTO OUTFILE или msyqldump Идеално е данните в локалното копие да се поддържат почти актуални (Бих казал перфектно в синхрон, но има нещо, наречено подчинено забавяне) От друга страна, ако използвате планирана задача за стартиране на mysqldump веднъж на всеки 24 часа. Представете си какво може да се случи, ако сървърът се срине след 23 часа?

Всеки път, когато стартирате mysqldump, вие произвеждате голямо количество данни, продължавайте да го правите редовно и ще откриете, че вашият твърд диск е пълен или сметките ви за съхранение на файлове удрят покрива. При репликация само промените се предават на сървъра (чрез използване на т.нар. binlog)

XtraBackup

Алтернатива на репликацията е използването на Percona XtraBackup .

Percona XtraBackup е програма за горещо архивиране с отворен код за базирани на MySQL сървъри, която не заключва вашата база данни по време на архивирането.

Макар и от Percona, той е съвместим с Mysql и Mariadb. Той има способността да прави инкрементални архиви, липсата на което е най-голямото ограничение на mysqldump.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите разлика между две дати в MySQL

  2. Не може да се промени колоната, използвана в ограничение за външен ключ

  3. MySQL DELETE FROM с подзаявка като условие

  4. Поправете „ГРЕШКА 1054 (42S22):Неизвестна колона „…“ в „клауза за поръчка“, когато използвате UNION в MySQL

  5. Как да използвам хеширане на пароли с PDO, за да направя кода си по-сигурен?