• Mysql数据库备份脚本


    脚本示例:

    @echo off
    set hour=%time:~0,2%
    if "%time:~0,1%"==" " set hour=0%time:~1,1%
    set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%
    echo %now%
    set host=localhost
    set port=3306
    set user=root
    set pass=root
    set dbname=scmweb
    set backupfile=D:ackup_dbbackup_day\%dbname%-%now%.sql
    "D:mysqlinmysqldump" -h%host% -P%port% -u%user% -p%pass% -R -E --add-drop-table %dbname% > %backupfile%
    echo delete files before 10 days
    forfiles /p D:ackup_dbbackup_day /s /m *.sql /d -10 /c "cmd /c del @file /f"

    二、备份方案:

    参考:https://www.cnblogs.com/chevin/p/5683281.html

    ———————————————-库操作———————————————-
    1.①导出一个库结构

    mysqldump -d dbname -u root -p > xxx.sql

    ②导出多个库结构

    mysqldump -d -B dbname1 dbname2 -u root -p > xxx.sql

    2.①导出一个库数据

    mysqldump -t dbname -u root -p > xxx.sql

    ②导出多个库数据

    mysqldump -t -B dbname1 dbname2 -u root -p > xxx.sql

    3.①导出一个库结构以及数据

    mysqldump dbname1 -u root -p > xxx.sql

    ②导出多个库结构以及数据

    mysqldump -B dbname1 dbname2 -u root -p > xxx.sql


    ———————————————-表操作———————————————-
    4.①导出一个表结构

    mysqldump -d dbname1 tablename1 -u root -p > xxx.sql

    ②导出多个表结构

    mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

    5.①导出一个表数据

    mysqldump -t dbname1 tablename1 -u root -p > xxx.sql

    ②导出多个表数据

    mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

    6.①导出一个表结构以及数据

    mysqldump dbname1 tablename1 -u root -p > xxx.sql

    ②导出多个表结构以及数据

    mysqldump -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql


    ————————————–存储过程&函数操作————————————-
    7.只导出存储过程和函数(不导出结构和数据,要同时导出结构的话,需要同时使用-d)

    mysqldump -R -ndt dbname1 -u root -p > xxx.sql


    ———————————————-事件操作———————————————-
    8.只导出事件

    mysqldump -E -ndt dbname1 -u root -p > xxx.sql


    —————————————–触发器操作——————————————–
    9.不导出触发器(触发器是默认导出的–triggers,使用–skip-triggers屏蔽导出触发器)

    mysqldump --skip-triggers dbname1 -u root -p > xxx.sql


    ————————————————————————————————
    10.导入

    source xxx.sql


    ————————————————————————————————
    总结一下:

    -d 结构(--no-data:不导出任何数据,只导出数据库表结构)

    -t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)

    -n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)

    -R (--routines:导出存储过程以及自定义函数)

    -E (--events:导出事件)

    --triggers (默认导出触发器,使用--skip-triggers屏蔽导出)

    -B (--databases:导出数据库列表,单个库时可省略)

    --tables 表列表(单个表时可省略)

    ①同时导出结构以及数据时可同时省略-d和-t
    ②同时 不 导出结构和数据可使用-ntd
    ③只导出存储过程和函数可使用-R -ntd
    ④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
    ⑤只导出结构&函数&事件&触发器使用 -R -E -d

    PS:如果可以使用相关工具,比如官方的MySQL Workbench,则导入导出都是极为方便的,如下图。(当然为了安全性,一般情况下都是屏蔽对外操作权限,所以需要使用命令的情况更多些)

    ————————————————————————————————

    下面为使用infile/outfile导入/导出txt/csv数据文件操作

    10.①首先使用语句看一下可以导入/导出的路径在哪里

    show variables like '%secure%';

    表示导入/导出只能存放在E:/下面。

    ②如果不按照对应路径进行操作的话,将报如下错误:

    Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

    ③如果还有权限问题,请修改my.ini将secure_file_priv设置到有权限的路径下

    11.对csv/txt数据导入和导出

    ①导出csv数据

    select *
    into outfile 'E:/table1_data.csv'
    character set gb2312
    fields terminated by ',' optionally enclosed by '"' escaped by '"'
    lines terminated by ' '
    from table1;

    ②导入csv数据

    load data infile 'E:/table1_data.csv'
    into table table1 character set gb2312
    fields terminated by ',' optionally enclosed by '"' escaped by '"'
    lines terminated by ' ';

    ③导出txt数据

    默认使用空格作为分隔符,需要其它参数请参考上面的csv操作

    select *
    into outfile 'E:/table1_data.txt'
    from table1;

    ④导入txt数据

    load data infile 'E:/table1_data.txt'
    into table table1;

    三、在Windows下添加定时执行任务

    参考:https://blog.csdn.net/m0_38025207/article/details/83302882

    1. 任务计划程序中创建基本任务

    2.输入基本任务名称

    3.选择触发规则

    4.选择触发时间及间隔

    .

    5.选择执行的操作

    .

    6.选择执行的备份脚本

  • 相关阅读:
    根据大小生成对应尺寸网络图片的网址 狼人:
    如何建立高效的质量保障机制
    全链路压测(8):构建三大模型
    聊聊我对敏捷项目交付的理解
    分享最近做的一个中文 wordle 的游戏《词影》
    面试突击34:如何使用线程池执行定时任务?
    面试突击37:线程安全问题的解决方案有哪些?
    面试突击36:线程安全问题是怎么产生的?
    面试突击35:如何判断线程池已经执行完所有任务了?
    面试突击33:线程池有哪些状态?状态是如何转换的?
  • 原文地址:https://www.cnblogs.com/qiupiaohujie/p/12915945.html
Copyright © 2020-2023  润新知