首页 > 数据库 >linux实验(数据库备份)

linux实验(数据库备份)

时间:2024-05-04 11:56:11浏览次数:33  
标签:5.7 备份 linux el7 mysql 数据库 BACKUPDIR

linux实验(数据库备份)

以下所有操作皆以机房电脑上的虚拟机为基础环境

下载链接:Linux课程机房虚拟机#

  1. 切换到root用户

    su - root
    
  2. 安装数据库mysql 5.7

    rpm -ivh https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.29-1.el7.x86_64.rpm https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-libs-5.7.29-1.el7.x86_64.rpm https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-client-5.7.29-1.el7.x86_64.rpm https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-server-5.7.29-1.el7.x86_64.rpm --force --nodeps
    
  3. 配置数据库cnf文件

    vim /etc/my.cnf
    

    在文件中添加以下代码:

    kip-grant-tables
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    

    image

  4. 启动数据库

    systemctl start mysqld.service
    
  5. 进入数据库并配置密码

    mysql
    update mysql.user set authentication_string=password('123456') where user='root';
    
  6. 使配置生效

    flush privileges;
    
  7. 退出数据库

    exit
    
  8. 停止数据库

    systemctl stop  mysqld.service
    
  9. 编辑my.cnf配置文件将:skip-grant-tables这一行注释掉

    vim /etc/my.cnf
    

    image

  10. 重启数据库

    systemctl start mysqld.service
    
  11. 再次登录数据库

    mysql -uroot -p123456
    
  12. 创建数据库和表

    CREATE DATABASE IF NOT EXISTS Student;
    USE Student;
    CREATE TABLE `user` (
      `id` INT NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(255) NULL,
      `sex` VARCHAR(255) NULL,
      `phone` VARCHAR(255) NULL,
      PRIMARY KEY (`id`)
    );
    INSERT INTO `user` VALUES (1, 'zhangsan', '1', '123456');
    INSERT INTO `user` VALUES (2, 'lisi', '1', '123456');
    INSERT INTO `user` VALUES (3, 'wangwu', '1', '123467989');
    INSERT INTO `user` VALUES (4, 'chuanchuan', '2', '123456789');
    
  13. 退出数据库

    exit
    
  14. 创建数据库备份脚本

    vi cmysql.sh
    

    粘贴以下内容

    #!/bin/bash
    # 要备份的数据库列表
    DBLIST="mysql Student"
    
    # 要备份的目录
    BACKUPDIR=/mydata/backups/data/mysql
    
    # 要保存的时间
    NUMDAYS=30
    
    # 备份要用到Linux命令和MySQL数据库配置
    FINDCMD="find"
    MYSQLCMD="mysql"
    MyUSER="root"		# USERNAME
    MyPASS="123456"			# PASSWORD
    MyHOST="localhost"	# Hostname
    DUMPCMD="mysqldump -u$MyUSER -h $MyHOST -p$MyPASS --lock-tables --databases"
    GZIPCMD="gzip"
    
    # 备份的日期
    BACKUPDATE=`date +%Y%m%d_%H%M`
    
    function USAGE() {
    cat << EOF
    
    usage: $0 options
    
    This script backs up a list of MySQL databases.
    
    OPTIONS:
     -h Show this message
     -a Backup all databases
     -l Databases to backup (space seperated)
     -n Number of days to keep backups
    EOF
    }
    
    while getopts "hal:n:" opt;
    do
      case $opt in
        a)
          DBLIST=""
          ;;
        h)
          USAGE
    	  exit1
    	  ;;
    	l)
    	  DBLIST="$OPTARG"
    	  ;;
    	n)
    	  NUMDAYS="$OPTARG"
    	  ;;
    	\?)
    	  USAGE
    	  exit
    	  ;;
    	:)
    	  echo "Option -$OPTARG requires an argument.">&2
    	  exit 1
    	  ;;
    	esac
    done
    
    function ERROR() {
      echo && echo "[error] $@"
      exit 1
    }
    
    function NOTICE() {
      echo && echo "[notice] $@"
    }
    
    function RUNCMD() {
      echo $@
      eval $@
    }
    
    # 用备份的数据作健壮性判断
    if [ ! -n "$DBLIST" ]; then
      DBLIST= `$MYSQLCMD -N -s -e "show databases" | grep -viE ' (information_schema | performance_schema|mysql|test)'`
    
      if [ ! -n "$DBLIST" ]; then
        ERROR "Invalid database list"
      fi
    fi
    
    if [ ! -n "$BACKUPDIR" ]; then
      ERROR "Invalid backup directory"
    fi
    
    if [[ ! $NUMDAYS =~ ^[0-9]+$ ]]; then
      ERROR "Invalid number of days: $NUMDAYS"
    elif [ "$NUMDAYS" -eq "0" ]; then
      ERROR "Number of days must be greater than zero"
    fi
    
    # 屏蔽字
    umask 077
    
    # $BACKUPDIR是前面定义的备份的目录变量
    RUNCMD mkdir -p -v $BACKUPDIR
    
    if [ ! -d $BACKUPDIR ]; then
      ERROR "Invalid directory: $BACKUPDIR"
    fi
    
    NOTICE "Dumping MySQL databases..."
    RC=0
    
    for database in $DBLIST; do
      NOTICE "Dumping $database..."
      RUNCMD "$DUMPCMD $database | $GZIPCMD > $BACKUPDIR/${database}_$BACKUPDATE.sql.gz"
    
      RC=$?
      if [ $RC -gt 0 ]; then
        continue;
      fi
    done
    
    if [ $RC -gt 0 ]; then
      ERROR "MySQLDump failed!"
    else
      NOTICE "Removing dumps older than $NUMDAYS days..."
      RUNCMD "$FINDCMD $BACKUPDIR -name \" *.sql.gz\" -type f -mtime +$NUMDAYS -print0 | xargs -0 rm -fv"
    
      NOTICE "Listing backup directory contents..."
      RUNCMD ls -la $BACKUPDIR
    
      NOTICE "MySQLDump is complete!"
    fi
    
    # exit 0
    
  15. 运行脚本

    bash cmysql.sh
    

至此,恭喜你完成了该实验

参考链接:

centos7安装mysql(完整)

标签:5.7,备份,linux,el7,mysql,数据库,BACKUPDIR
From: https://www.cnblogs.com/aslwr/p/18172146/linux-experiment-database-backup-26jhv9

相关文章

  • MySQL 数据库自增主键生成的优缺点
    MySQL数据库中使用自增主键(AUTO_INCREMENT)作为表的主键有以下显著的优点和缺点:**优点**:1.**简化开发**:开发人员不需要手动指定每条记录的唯一标识,减少了出错的可能性。2.**性能优化**:自增主键通常会导致数据在物理存储上近乎顺序地排列,这能够提升基于主键的查询效率,特别......
  • Linux课程机房虚拟机
    Linux课程机房虚拟机机房虚拟机(默认不能联网的):百度网盘:https://pan.baidu.com/s/1WqSvqB3Y7b_D4690CDBlJA?pwd=augc123网盘:https://www.123pan.com/s/tQ0UVv-LiolA.html提取码:F4xm‍联网使用说明:虚拟机->设置->网络适配器->已连接->重启虚拟机​​‍......
  • 易优CMS安装出现程序和数据库版本不一致情况的解决方法
    易优cms建站系统出现无法安装,数据库文件版本号(V1.5.4)与CMS源码版本号(V1.5.6)不一致怎么办?这样的情况是因为程序在安装的时候是低版本,安装过通过后台升级到了最新版本。然后再进行数据库和程序的备份,就会导致程序和数据库版本不一致的情况。接下来我们给大家说下怎么来解决这个......
  • linux 中判断一列数据是否按照指定步长递增
     linux中判断一列数据是否按照指定步长递增 001、[root@pc1test01]#lsa.txtb.txt[root@pc1test01]#cata.txt##测试数据,正确递增123456[root@pc1test01]#catb.txt##测试数据,异常递增12456[root@pc1test01]#awk......
  • Ubuntu/Linux系统中的multi-user.target
    相关:https://www.cnblogs.com/devilmaycry812839668/p/17999041multi-user.target是Linux系统中systemd的一个目标。它表示系统已完成引导过程,并准备好供多个用户登录和使用系统。该目标通常包括在多用户环境中进行正常系统操作所需的服务和资源。RunLvlTargetU......
  • C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑
    要在C#中搭建基于ISqlSugarClient的三层架构框架,你需要定义数据访问层(DAL)、业务逻辑层(BLL)和表现层(UI)。下面是一个完整的例子,涉及数据库仓储、业务逻辑层,以及依赖注入。这个例子基于ASP.NETCoreMVC构建,使用ISqlSugarClient来处理数据访问。这个例子中,我们将使用User作为一个简单......
  • Linux 中sed命令实现从gff文件中仅仅提取基因名称
     001、(base)[b20223040323@admin1x_test]$ls##测试gff文件GCF_000001405.40_GRCh38.p14_genomic.fna.gzGCF_000001405.40_GRCh38.p14_genomic.gff(base)[b20223040323@admin1x_test]$grep-v"^#"GCF_000001405.40_GRC......
  • Linux(centos7)实现git push到gitee
    1.找到需要提交的文夹目录cd目的目录2.初始化git仓库gitinit看见最下面的InitializedemptyGitrepositoryin就是初始化成功了3.配置提交人信息gitconfig--globaluser.name“你想填的名字”gitconfig--globaluser.email"你的邮箱"最后查看一下是否正确gi......
  • 关闭Linux图形界面
    V1.02024年5月3日发布于博客园关闭Linux图形界面Linux图形界面相对于字符界面占用内存至少为286MB,故而关闭图形界面可以节约很多服务器内存.临时关闭图形界面sudoinit3#临时关闭图形界面或切换root账户执行sudoinit5#切回图形界面永久关闭图形界面#切回root......
  • 深入 Django 模型层:数据库设计与 ORM 实践指南
    title:深入Django模型层:数据库设计与ORM实践指南date:2024/5/318:25:33updated:2024/5/318:25:33categories:后端开发tags:DjangoORM模型设计数据库关系性能优化数据安全查询操作模型继承第一章:引言Django是一个基于Python的开源Web应用程序框架,它......