mysql(mariadb)データベースmysqldumpを使用してすべてのデータベースをバックアップし、現在の時間名で自動的にファイルを保存します.


すべてのデータベースのバックアップ
開発サーバはすべてのデータベースを定期的にバックアップするfox.風
mysqldump -h127.0.0.1 --port=3306 \
-uroot -proot \
--lock-tables=0 \
--all-databases > /root/db-`date "+%Y-%m-%d-%H-%M-%S"`.sql

–all-databasesすべてのデータベース–lock-tables=0テーブルをロックしないdate "+%Y-%m-%d-%H-%M-%S"タイムスタンプ
すべてのデータベースのバックアップにDatabase|information_は含まれません.schema|performance_schema|mysql|testといういくつかのデータベース
mysql -e "show databases;" -h127.0.0.1 -uroot -proot | grep -Ev "Database|information_schema|performance_schema|mysql|test" | xargs mysqldump -h127.0.0.1 -uroot -proot --databases > mysql_dump-`date "+%Y-%m-%d-%H-%M-%S"`.sql


ソースhttps://bbs.csdn.net/topics/390847803
指定したデータベースのバックアップ
mysqldump -h127.0.0.1 --port=3306 \
-uroot -proot \
--lock-tables=0 \
--databases nacos > /root/nacos-`date "+%Y-%m-%d-%H-%M-%S"`.sql

すべてのデータベースをリストア
まずtestというライブラリが存在し、存在すると、他のデータベースが自動的に作成され、データがインポートされます.
mysql -h127.0.0.1 -uroot -proot test < db-xx.sql

データベースのスケジュールバックアップ/www/crontab/dbディレクトリの下のback-up-db.shファイルの内容は以下の通りです.
#!/bin/bash


#    
backupdir=/www/crontab/db/logs
#        
time=_`date +%Y_%m_%d_%H_%M_%S`

mysql -e "show databases;" -h127.0.0.1 -uroot -proot | grep -Ev "Database|information_schema|performance_schema|mysql|test" | xargs mysqldump -h127.0.0.1 -uroot -proot --databases > ${backupdir}/db${time}.sql


#  7        
find $backupdir -name "db*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

echo ${time}" ok"

保存に成功したら、ファイルの実行権限を設定します.
chmod +x /www/crontab/db/back-up-db.sh

タイマーの設定
crontab -e

に参加
#    3   10   
10 3 * * * /bin/bash /www/crontab/db/back-up-db.sh

#      
@reboot /bin/bash /www/crontab/db/back-up-db.sh