Редовното архивиране на базата данни е една от решаващите стъпки след въвеждането на проекта. Честотата на архивиране може да бъде веднъж на ден или седмица. Ежедневното архивиране е предпочитано за приложения, в които промените в базата данни са по-чести. В случай на бази данни с висока достъпност трябва да се обмисли подходяща настройка на клъстер вместо вертикално мащабиране. Този урок обяснява използването на
Бележки :Този урок обхваща само най-често срещаните опции, използвани с
Локално архивиране
Резервно копие - Този раздел обяснява вземането на локално архивиране във файл чрез експортиране на единична или множество бази данни.
Разрешения -
- SELECT - за изхвърляне на таблици
- ПОКАЖИ ИЗГЛЕД - за изхвърляне на изгледи
- TRIGGER - за изхвърляне на тригери
- ЗАКЛЮЧВАНЕ НА ТАБЛИЦИ – в случай, че опцията --единична транзакция не се използва
Команда - По-долу е споменато използването на
# Regular command - Usage - Windows, Linux
mysqldump [options] db_name [tbl_name ...] > <file path>
mysqldump [options] --databases db_name ... > <file path>
mysqldump [options] --all-databases > <file path>
Примерите за използване на обикновената команда са посочени по-долу. Тези примерни команди използват потребителския предприятие да правите резервни копия на базата данни предприятие . Не е необходимо да посочвате потребител и парола, в случай че потребителският акаунт използва auth_socket алгоритъм за влизане в MySQL сървъра. Потребителят на системата има директен достъп до базата данни. Можете да се обърнете към Как да използвате собствена парола с MySQL 5.7 и Как да инсталирате MySQL 8 в Ubuntu, за да научите повече за алгоритмите за пароли.
Бележки :Не е необходимо да използвате опцията -p, в случай че на потребителя не е зададена парола.
По-долу са посочени примерите за архивиране на една база данни с потребителско име, хост и порт. Паролата не трябва да се предоставя с тези команди с цел сигурност. Можете да посочите паролата за
# All tables - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise > enterprise.sql
# All tables - with username, with password - insecure
mysqldump -u enterprise -p'mypwd' enterprise > enterprise.sql
# All tables - with username, with password - Plesk way
mysqldump -u enterprise -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql
# All tables - with host, with port, with username, without password - prompts for password
mysqldump -h localhost -p 3306 -u enterprise -p enterprise > enterprise.sql
# Single table(user) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise [user] > enterprise.sql
# Multiple tables(user, profile) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise user profile > enterprise.sql
По-долу са посочени примерите за архивиране на множество бази данни с потребителско име, хост и порт.
# Multiple databases - with username, without password - prompts for password
mysqldump -u enterprise -p --databases enterprise vblog mshop > mydbs.sql
# Multiple databases - with username, with password
mysqldump -u enterprise -p'mypwd' --databases enterprise vblog mshop > mydbs.sql
По-долу е споменат пример за архивиране на всички бази данни с потребителско име, хост и порт.
# All databases - with username, without password - prompts for password
mysqldump -u enterprise -p --all-databases > mydbs.sql
# All databases - with username, with password
mysqldump -u enterprise -p'mypwd' --all-databases > mydbs.sql
Потребителите на PowerShell в Windows ще се нуждаят от различна команда, както е посочено по-долу.
# PowerShell on Windows
shell> mysqldump [options] db_name [tbl_name ...] --result-file=<file path>
shell> mysqldump [options] --databases db_name ... --result-file=<file path>
shell> mysqldump [options] --all-databases --result-file=<file path>
# Example
shell> mysqldump -u enterprise -p enterprise --result-file=mydump.sql
Гореспоменатите команди ще експортират избраната база данни и таблици към местоположението на файла, посочено в командата.
Архивиране на база данни
Този раздел обяснява пренасянето на архивирането на базата данни в друга база данни, използвана за целите на архивирането, използвайки Shell Pipes. Можем или да експортираме базата данни в локалния файл и след това да използваме този файл за импортиране в друга база данни или директно да експортираме в друга база данни с помощта на shell pipe.
Посочената по-долу команда може да се използва за експортиране на базата данни директно в друга база данни. Освен това се уверете, че имате достъп до двата сървъра, преди да изпълните командата.
# Export database to another database - Same server
mysqldump -u enterprise -p enterprise | mysql enterprise_backup
# Export database to another database - Different server
mysqldump -u enterprise -p enterprise | mysql -h host.example.com -p 3306 enterprise
Ето как можем да експортираме или архивираме база данни.