文章浏览 复制本页面地址

LINUX计划|MYSQL计划备份|MYSQL备份还原数据库

一、知识点:

       ① Linux 事务计划       

       ② 大数据库备份       

       ③ mysql 计划备份 shellscript 脚本

 

    同事每天在公司备份数据库,我感觉他挺辛苦的,所以帮忙研究了一下 数据库备份和还原问题,并且保证无乱码和执行效率问题。

    数据库文件 1G左右每天备份如果用工具备份很好,但是要人工很麻烦,还原也非常费时费力,故我在这里讲解一下系统性备份数据库资源的步骤。

    ① Linux 事务计划:    

      加入计划 : crontab -e

      查看计划 : crontab -l     

      42 4 1 * * root run-parts /etc/cron.monthly
      */1 * * * * root echo "Good morning." >>/zzzchaoqun/goods.txt

     2 * * * root  /zzzchaoqun/shell_bag/backmyqsl.sh

 

这里 主要看 下方的信息引用一下资料

      .cron文件语法:
          分    小时   日      月      星期     命令
        0-59  0-23  1-31  1-12    0-6    command    (取值范围,0表示周日一般一行对应一个任务)

     .记住几个特殊符号的含义:
        "*"代表取值范围内的数字,
        "/"代表"每",
        "-"代表从某个数字到某个数字,
        ","分开几个离散的数字

    OK 到这里 计划做完了。

   ② Myqsl 大文件备份

      备份工具用 mysqldump 自带的工具 具体快到什么程度  3G的数据库速度大约为几分钟左右不过这个还是跟服务器的运行速度有关。

      备份好的sql 头部信息为

---------------------------------------------------------------------------------------------

       -- MySQL dump 10.11
--
-- Host: localhost    Database: aaaa_wqy
-- ------------------------------------------------------
-- Server version 5.0.77

   这里存在一下默认头部指定编码和字符集等信息

--
-- Table structure for table `think_access`
--

DROP TABLE IF EXISTS `think_access`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `think_access` (
  `role_id` smallint(6) unsigned NOT NULL,
  `node_id` smallint(6) unsigned NOT NULL,
  `level` tinyint(1) NOT NULL,
  `pid` smallint(6) NOT NULL,
  `module` varchar(50) default NULL,
  KEY `groupId` (`role_id`),
  KEY `nodeId` (`node_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

 

---------------------------------------------------------------------------------------------

注意事项: 方法只会备份数据库表,但是存储过程,事务备份不下来。 

优点 :

1.)所以无论你再把这个信息用什么工具导入数据库的时候 都不会出现乱码,因为已经指定编码了。

2.)同时看代码,把文件导入数据库的时候 不用担心数据库表信息被重复插入,因为他有自带的 DROP TABLE 命令先删除再创建导入。

 

命令使用方法:

导出

mysqldump -u root -p password 数据库名>备份文件名.sql

导入

1、不显示提示信息 超大数据用  很快

mysql -u root -p  数据库名 < newgbi.sql

---------------------补充--在window dos 中也适合--------------------------

注:  wid+R  进入dos 模式

mysql -u root -p mysqlname < mysql.sql  回车 输入密码 搞定

不过不要出现文件路径问题

如果发现提示 没有 mysql 那就去设置一下环境变量

我的电脑 =》 属性 =》 高级=》 环境变量  path 中加入

E:\WAMP\Server\MySQL\bin  (路径自己的mysql 安装路径)  即可

--------------------------------------------------------------------------

 

 

回车后 直接输入密码 搞定

 

2、边导入边提示

mysql -u root -p password 

use linewow_wqy

source /zzzchaoqun/备份数据文件.sql

导出例如:

mysqldump -uroot -p'password' 数据库名 > /zzzchaoqun/文件.sql 

OK 到这里 数据库导入完成。

   ③ Linux 计划 + mysql shellscript 脚本导入数据

 

---------------------------SHELL  Script  直接复制 -------------------------------

filename:   backmyqsl.sh

************************************************
#!/bin/bash

USERNAME=mysqlbackup
PASSWORD=mysql_online_back

DATE=`date +%Y-%m-%d`
OLDDATE=`date +%Y-%m-%d -d '-10 days'`
FTPOLDDATE=`date +%Y-%m-%d -d '-30 days'`

MYSQL=/www/wdlinux/mysql/bin/mysql
MYSQLDUMP=/www/wdlinux/mysql/bin/mysqldump
MYSQLADMIN=/www/wdlinux/mysql/bin/mysqladmin
SOCKET=/tmp/mysql.sock
 
BACKDIR=/root/mysql_data
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATE} ] || mkdir ${BACKDIR}/${DATE}
[ ! -d ${BACKDIR}/${OLDDATE} ] || rm -rf ${BACKDIR}/${OLDDATE}

#数据库名; 可以多个列举

for DBNAME in mysql  

do
   ${MYSQLDUMP} --opt --master-data=2 --tz-utc=true -u${USERNAME} -p${PASSWORD} -S${SOCKET} ${DBNAME} | gzip > ${BACKDIR}/${DATE}/${DBNAME}-backup-${DATE}.sql.gz
   logger "${DBNAME} has been backup successful - $DATE"
   /bin/sleep 5
done
****************************************************

用法:  加入计划中执行此命令;

 

       

2 * * * root  /zzzchaoqun/shell_bag/backmyqsl.sh     //每天凌晨两点执行

 

对了 最后别忘了给 脚本可执行的权限

chmod +x /zzzchaoqun/shell_bag/backmyqsl.sh 

OK  到这里完成了, 你就等着丰收吧。

-------------------------------------------------------

标签:
上一篇:
下一篇: