翼度科技»论坛 编程开发 mysql 查看内容

shell脚本-MySQL数据库备份

10

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30
shell脚本-MySQL数据库备份

准备:

确保mysql服务启动
可以通过mysqldump命令来备份数据库
1.mysqldump 命令语法:
使用 mysqldump 命令备份一个数据库的语法格式如下:
  1. mysqldump -u username -p dbpasswd [tbname ...]> filename.sql
复制代码
使用 mysqldump 命令备份一个数据库中表的语法格式如下:
  1. mysqldump -u username -p dbpasswd [tbname ...]> filename.sql
复制代码
2.参数:
  1. -s 会去掉显示表的边框
  2. -e 免交互
复制代码
实例:
  1. [root@localhost scripts]# mysql -uroot -proot -e "show databases;"
  2. +--------------------+
  3. | Database           |
  4. +--------------------+
  5. | information_schema |
  6. | mysql              |
  7. | performance_schema |
  8. | test               |
  9. +--------------------+
  10. [root@localhost scripts]# mysql -uroot -proot -s -e  "show databases;"
  11. Database
  12. information_schema
  13. mysql
  14. performance_schema
  15. test
  16. `再过滤一下就可以得到我们想要备份的一些数据库列表`
  17. [root@localhost scripts]# mysql -uroot -proot -s -e  "show databases;" | grep -Ev "Database|information_schema|mysql|performance_schema|sys"
  18. test
  19. `使用mysqldump备份数据库`
  20. mysqldump -uroot -proot -B dbname > xxx.sql
  21. `使用mysqldump备份数据库中的表`
  22. mysqldump -uroot -proot dbname tabname > xxx.sql
复制代码
1.备份数据库(可指定数据库)

先确保数据库服务启动的情况下,创建shell脚本
  1. vim 12.sh
复制代码
  1. #!/bin/bash
  2. DATA=`date +%F-%H-%M-%S`
  3. HOST=localhost
  4. USER=root
  5. PASS=root
  6. BACKUP_DIR=/data/db_backup
  7. DB_LIST=`mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2> /dev/null | grep -Ev "Database|information_schema|mysql|performance_schema|sys"`
  8. for DB in $DB_LIST; do
  9.         BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
  10.         if mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null ; then
  11.                 echo "$BACKUP_NAME 备份成功!"
  12.         else
  13.                 echo "$BACKUP_NAME 备份失败!"
  14.         fi
  15. done
复制代码
  1. [root@localhost scripts] bash 12.sh
  2. /data/db_backup/test_.sql 备份成功!
复制代码
2.备份数据库中的表(可以指定数据库、表)
  1. vim 12-1.sh
复制代码
  1. #!/bin/bash
  2. DATE=`date +%F-%H-%M-%S`
  3. HOST=localhost
  4. USER=root
  5. PASS=root
  6. BACKUP_DIR=/data/db_back_up
  7. DB_LIST=`mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null | grep -Ev "Database|information_schema|mysql|performance_schema|sys"`
  8. for DB in $DB_LIST; do
  9.         BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
  10.         [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
  11.         TABLE_LIST=`mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null`
  12.         for TABLE in $TABLE_LIST; do
  13.                 BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
  14.                 if mysqldump -h $HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME ; then
  15.                         echo "$BACKUP_NAME 备份成功!"
  16.                 else
  17.                         echo "$BACKUP_NAME 备份成功!"
  18.                 fi
  19.         done
  20. done
复制代码
  1. [root@localhost scripts]# bash 12-1.sh
  2. /data/db_back_up/test_2023-07-17-00-28-22/student.sql 备份成功!
复制代码
来源:https://www.cnblogs.com/xuxuxuxuxu/p/17558982.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具