MySQL и MariaDB включват помощната програма mysqldump за опростяване на процеса за създаване на резервно копие на база данни или система от бази данни. Използване на mysqldump
създава логическо архивиране . Можете да използвате този инструмент само ако процесът на вашата база данни е достъпен и работи.
Ако вашата база данни не е достъпна по някаква причина, можете вместо това да създадетефизическо архивиране , което е копие на структурата на файловата система, която съдържа вашите данни.
Инструкциите в това ръководство важат както за MySQL, така и за MariaDB. За опростяване, името MySQL ще се използва, за да се прилага и към двете.
Преди да започнете
-
Ще ви трябва работеща инсталация на MySQL или MariaDB и потребител на база данни, за да стартирате архивирането. За помощ при инсталирането вижте документацията на Linode MySQL.
-
Ще ви е необходим root достъп до системата или потребителски акаунт с
sudo
привилегии.
Архивиране на база данни
mysqldump
общият синтаксис на командата е:
mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
mysqldump
подканва за парола, преди да започне процеса на архивиране.- В зависимост от размера на базата данни, завършването може да отнеме известно време.
- Архивът на базата данни ще бъде създаден в директорията, в която се изпълнява командата.
-$(date +%F)
добавя времева марка към името на файла.
Примерните случаи на употреба включват:
-
Създайте резервно копие на цялата система за управление на бази данни (СУБД):
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
-
Архивирайте конкретна база данни. Заменете
db1
с името на базата данни, която искате да архивирате:mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
-
Архивирайте една таблица от всяка база данни. В примера по-долу,
table1
се експортира от базата данниdb1
:mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
Ето разбивка на mysqldump
опции за команди, използвани по-горе:
--single-transaction
:Издайте BEGIN SQL оператор, преди да изхвърлите данни от сървъра.--quick
:Прилагане на дъмпинг таблици ред по ред. Това осигурява допълнителна безопасност за системи с малко RAM и/или големи бази данни, където съхраняването на таблици в паметта може да стане проблематично.--lock-tables=false
:Не заключвайте таблици за сесията за архивиране.
Автоматизирайте архивирането с cron
Записите могат да се добавят към /etc/crontab
да планирате редовно архивиране на база данни.
-
Създайте файл, който да съхранява идентификационните данни за влизане на root потребителя на MySQL, който ще извършва архивирането. Имайте предвид, че потребителят на системата, в чиято домашна директория се съхранява този файл, може да не е свързан с потребители на MySQL.
- Файл:/ home/example_user/.mylogin.cnf
1 2 3
[client] user = root password = MySQL root user's password
-
Ограничаване на разрешенията на файла с идентификационни данни:
chmod 600 /home/example_user/.mylogin.cnf
-
Създайте файла за задание на cron. По-долу е дадена примерна задача на cron за архивиране на цялата система за управление на база данни всеки ден в 1 часа сутринта:
- Файл:/ etc/cron.daily/mysqldump
1
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql
За повече информация относно cron вижте страниците на ръководството на thecron(8) иcron(5).
Възстановяване на резервно копие
Общият синтаксис на командата за възстановяване е:
mysql -u [username] -p [databaseName] < [filename].sql
-
Възстановете цял архив на СУБД. Ще бъдете подканени за паролата на root потребителя на MySQL:
Това ще презапише всички текущи данни в системата на базата данни MySQLmysql -u root -p < full-backup.sql
-
Възстановете единично дъмп на базата данни. Вече трябва да съществува празна или стара дестинационна база данни, за да се импортират данните, и потребителят на MySQL, който изпълнявате командата, трябва да има достъп за запис до тази база данни:
mysql -u [username] -p db1 < db1-backup.sql
-
За да възстановите една таблица, трябва да имате готова дестинационна база данни, за да получите данните:
mysql -u dbadmin -p db1 < db1-table1.sql
Повече информация
Може да пожелаете да се консултирате със следните ресурси за допълнителна информация по тази тема. Въпреки че те са предоставени с надеждата, че ще бъдат полезни, моля, имайте предвид, че не можем да гарантираме за точността или навременността на външно хостваните материали.
- Страница Методи за архивиране на MySQL база данни
- mysqldump – програма за архивиране на база данни, справочно ръководство за MySQL