要求:将mysql数据库中的用户数据库备份,备份的数据库文件以时间命名 脚本内容如下:
#!/bin/bash mysql_user=root mysql_pass=123456 mkdir -p /backup for n in `mysql -u$mysql_user -p$mysql_pass -e 'show databases;' 2>/dev/null|grep -Ev '_schema|mysql'|sed '1d'`; do mysqldump -u$mysql_user -p$mysql_pass -B $n 2>/dev/null>/backup/${n}_`date +%Y_%m_%d`.sql done执行脚本进行测试:
[root@db01 scripts]# sh -x backup_database.sh + mysql_user=root + mysql_pass=123456 + mkdir -p /backup ++ mysql -uroot -p123456 -e 'show databases;' ++ grep -Ev '_schema|mysql' ++ sed 1d + for n in '`mysql -u$mysql_user -p$mysql_pass -e '''show databases;''' 2>/dev/null|grep -Ev '''_schema|mysql'''|sed '''1d'''`' + mysqldump -uroot -p123456 -B test1 + for n in '`mysql -u$mysql_user -p$mysql_pass -e '''show databases;''' 2>/dev/null|grep -Ev '''_schema|mysql'''|sed '''1d'''`' + mysqldump -uroot -p123456 -B test2 + for n in '`mysql -u$mysql_user -p$mysql_pass -e '''show databases;''' 2>/dev/null|grep -Ev '''_schema|mysql'''|sed '''1d'''`' + mysqldump -uroot -p123456 -B test [root@db01 scripts]#检查备份情况:
[root@db01 scripts]# tree /backup/ /backup/ ├── test1_2018_07_04.sql ├── test2_2018_07_04.sql └── test_2018_07_04.sql 0 directories, 3 files [root@db01 scripts]# 2、分库分表备份要求:备份每个数据库的表,同一个库中的表,放在对应数据库名字命名的目录下 脚本内容如下:
[root@db01 scripts]# vim backup_tables.sh #!/bin/bash mysql_user=root mysql_pass=123456 mkdir -p /backup for n in `mysql -u$mysql_user -p$mysql_pass -e 'show databases;' 2>/dev/null|grep -Ev '_schema|mysql'|sed '1d'`; do mkdir -p /backup/$n for m in `mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '1d'`; do mysqldump -u$mysql_user -p$mysql_pass $n $m 2>/dev/null>/backup/${n}/${m}_`date +%Y_%m_%d`.sql done done执行脚本进行测试:
[root@db01 scripts]# sh -x backup_tables.sh + mysql_user=root + mysql_pass=123456 + mkdir -p /backup ++ mysql -uroot -p123456 -e 'show databases;' ++ grep -Ev '_schema|mysql' ++ sed 1d + for n in '`mysql -u$mysql_user -p$mysql_pass -e '''show databases;''' 2>/dev/null|grep -Ev '''_schema|mysql'''|sed '''1d'''`' + mkdir -p /backup/test1 ++ sed 1d ++ mysql -uroot -p123456 test1 -e 'show tables;' + for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '''1d'''`' + mysqldump -uroot -p123456 test1 students + for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '''1d'''`' + mysqldump -uroot -p123456 test1 test + for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '''1d'''`' + mysqldump -uroot -p123456 test1 test2 + for n in '`mysql -u$mysql_user -p$mysql_pass -e '''show databases;''' 2>/dev/null|grep -Ev '''_schema|mysql'''|sed '''1d'''`' + mkdir -p /backup/test2 ++ mysql -uroot -p123456 test2 -e 'show tables;' ++ sed 1d + for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '''1d'''`' + mysqldump -uroot -p123456 test2 test3 + for n in '`mysql -u$mysql_user -p$mysql_pass -e '''show databases;''' 2>/dev/null|grep -Ev '''_schema|mysql'''|sed '''1d'''`' + mkdir -p /backup/test ++ mysql -uroot -p123456 test -e 'show tables;' ++ sed 1d + for m in '`mysql -u$mysql_user -p$mysql_pass $n -e "show tables;" 2>/dev/null|sed '''1d'''`' + mysqldump -uroot -p123456 test test4 [root@db01 scripts]#检查备份情况:
[root@db01 scripts]# tree /backup/ /backup/ ├── test1 │ ├── students_2018_07_04.sql │ ├── test_2018_07_04.sql │ └── test2_2018_07_04.sql ├── test2 │ └── test3_2018_07_04.sql └── test └── test4_2018_07_04.sql 3 directories, 5 files [root@db01 scripts]# ---来自腾讯云社区的---山山仙人
微信扫一扫打赏
支付宝扫一扫打赏