• windows上备份mysql数据库


    方案一:采用mysql自带的工具mysqldump。

    脚本文件backup.bat如下:

    set  "YMD=%date:~,4%%date:~5,2%%date:~8,2%"
    cd    /d   C:\Program Files\MySQL\MySQL Server 5.7\bin
    mysqldump  --no-defaults    -uroot    -p"501501"    sdxs    >  E:/databaseBackupData/sdxs/sdxs_%YMD%.sql

    解释如下:

          1、set  "YMD=%date:~,4%%date:~5,2%%date:~8,2%"              表示给变量YMD赋值为执行该脚本时的年月日,比如为20180505。

          2、cd    /d   C:\Program Files\MySQL\MySQL Server 5.7\bin     表示切换cmd目录到C:\Program Files\MySQL\MySQL Server 5.7\bin中。特别注意 /d 必须加上。否则失败。

          3、mysqldump  --no-defaults    -uroot    -p"501501"    sdxs     >  E:/databaseBackupData/sdxs/sdxs_%YMD%.sql       

             表示执行mysqldump 命令--no-defaults 的作用主要是解决执行该命令出现error的--no-beep。即如下图错误。

         4、完整的mysqldump命令表示如下:

           mysqldump    --no-defaults 

    --host=120.120.120.120

    --port=3306

    --user=root

    --password=501501

    --events

    --routines 

    --triggers

    --flush-logs 

    --add-drop-database

    --add-drop-table

    --add-locks

    --complete-insert

    --default-character-set=utf8

    (--lock-all-tables) 一般不用

    --log-error=E:/databaseBackupData/sdxs/sdxs_%YMD%.err

    (--no-data) 一般不用

    --single-transaction 

     --master-data=2 

    --databases sdxs

    E:/databaseBackupData/sdxs/sdxs_%YMD%.sql

            如果添加 --no-data 选项,则只备份结构不会备份数据。

           --host=127.0.0.1 用于指定mysql数据库所在的ip地址,这里指定为本地的ip 。因此可以远程备份,异地备份,该选项用于指定备份哪一台机器上的mysql数据库。

           --port=3306 用于指mysql定数据库服务使用的端口,这里指定为3306端口 。

           --databases 数据库A,数据库B,数据库C等,用于指定备份指定mysql服务器的哪些数据库。如果备份这台mysql服务器上的所有的数据库的所有表,则用 --all-databases 选项,真正在生产环境中,我们应该导出的是整个mysql服务器中的数据,而不是单个库,因此应该使用--all-databases。

           --user="igoodful"  用于指定数据库的用户名,这里指定用户名为igoodful 。

           --password="123456"  表示该数据库用户的密码,这里是给igoodful用户指定的密码为123456 。

           --comments="很好"     表示给备份文件添加注释。

           --default-character-set=utf8 表示该数据库使用的默认字符集 。

           --events       表示数据库的事件也会备份,默认不会备份事件。

           --routines   表示导出存储过程以及自定义函数,默认不会备份存储过程以及自定义函数

           --triggers  表示数据库的触发器也会备份,默认会备份触发器

           --flush-logs 表示日志滚动一次,以免日志不一致。

           --add-drop-database 表示每个数据库创建之前会先执行drop对应的数据库,即会在备份文件中先执行drop 对应的数据库操作。

           --add-drop-table       表示每个数据表创建之前会先执行drop对应的数据表,即会在备份文件中先执行drop 对应的数据表操作。默认执行drop,可以添加--skip-add-drop-table取消drop。

          --add-locks  在每个表导出之前增加LOCK TABLES并且之后UNLOCK  TABLE。(默认为打开状态,使用--skip-add-locks取消选项)

          --complete-insert  表示使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。

         --default-character-set=utf8   表示指定的字符集。

         --lock-all-tables 表示提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁。--single-transaction 互斥

         --log-error=E:/databaseBackupData/sdxs/sdxs_%YMD%.err 表示附加警告和错误信息到给定文件。

         --no-data 表示不导出任何数据,只导出数据库表结构。

         --single-transaction 表示该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK  TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。该选项实现热备份。热备(hot backup):备份的同时,业务不受影响。

      --master-data=2 表示mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从master端复制binlog。默认情况下这个值是1。当这个值是2的时候,chang master to也是会写到dump文件里面去的,但是这个语句是被注释的状态。记录备份那一时刻的二进制日志的位置

    备份到120的有:

     备份到106的有:bat存放脚本文件,data存放备份的数据数据

    5、备份后使用备份的sql文件时,特别注意下面的语句。会创备份的建数据库(如果不存在该库),而且使用创建的数据库来执行备份中的sql语句。

    igoodful@qq.com
  • 相关阅读:
    HTTP协议
    HTTP请求
    scoket
    Git的简绍
    SpringBoot添加“热部署”
    SpringBoot入门(简绍和案例)
    JVisual VM工具使用以及垃圾回收机制
    jstack应用
    Jvm优化(1)
    Spring Data ElasticSearch的使用十个小案例
  • 原文地址:https://www.cnblogs.com/igoodful/p/8993969.html
Copyright © 2020-2023  润新知