Mysql的备份方式与备份策略

1、MYSQL数据的备份方式有哪些?

    答:备份方式有:物理备份、逻辑备份、冷热备份;

          物理备份:通过系统自带命令进行复制cp或tar打包压缩的方式备份,也叫冷备份;

          逻辑备份:通过mysql自带服务或者额外安装软件进行备份;

                            mysqldump 和 mysql

            冷热备份:在备份的过程中别人无法访问的叫冷备份,备份过程中也能访问的叫热备份;


2、备份策略有哪些?

    答:备份策略有:完全备份、增量备份、差异备份;

          完全备份:备份所有数据;

           

          增量备份:备份上次备份后,所有新产生的数据;

                            如:周一备份之后,周二产生了新数据,再次备都份时只需要备份新增的周二的数据即可;

                                    以上一次备份作为新数据备份的参考点,备份时间短,节约内存;

   

            差异备份:备份完全备份后,所有新产生的数据;

                              如:差异备份时,主要以完全备份作为参考点,每次备份都拿新数据与完全备份时的数据对比;

                                      周一完全备份,周二新增数据进行备份,差异备份会把周二的数据与周一完全备份的数据全部备份                                      一遍,周三,周四依然如此;

                                      以完全备份为参考点,备份所需时间长,耗内存,安全;





各种备份方式的操作流程与优缺点:


1、物理备份的具体操作流程与优缺点;

    第一步、新建一个目录,将mysql的所有数据拷贝到新建的目录中;

                  也可以用tar命令;

                  mkdir  /mysql.backups    ;  cp  -r  /var/lib/mysql    /mysql.backups

    第二步、scp 远程拷贝给所需要的主机;

                  scp  -r    /mysql.backups  root@客户IP地址:/目录

    第三步、客户机验证目录是否拷贝成功;

                  ls  查看scp拷贝过来的目录;

    第四步、清空/var/lib/mysql/目录下的其他文件,将备份文件拷贝到这个目录下并授权;

                  rm  -rf  /var/lib/mysql/

                  cp    -r    /备份目录/*    /var/lib/mysql/

                  因为,是用root拷贝的,所以目录中所有的文件都属于root用户,mysql用户无权读取;

                  所以,要将这个目录的所有者和所属组变更为mysql;

                  chown  -R    mysql:mysql      /var/lib/mysql/

    第五步、重起mysql服务,验证备份结果;

                  systemctl  restart  mysql 

                  mysql  -u  toot  -p密码


优点:简单便捷

缺点:随着时间的积累数据越越来越大,备份起来费时费力,并且存在文件格式与系统不兼容的问题;

所以,物理备份只适合数据量小,系统统一时使用;


2、逻辑备份的具体操作流程与优缺点;


    逻辑备份之完全备份与恢复——mysqldump

    备份命令格式:】#    mysqldump  -uroot  -p密码  库名    >  路径/xxx.sql

    恢复命令格式:】#    mysql  -uroot  -p密码  库名  <    路径/xxx.sql


    备份所有数据、备份数据库、备份表的具体操作:

* mysqldump  -uroot  -p密码  all  (或-databases、或-A)  >  路径/xxx.sql 

* 如何备份数据库所有数据?

* 如何备份数据库中的单个库?

* mysqldump  -uroot  -p密码  库名  >  路径/xxx.sql 

* 如何同时备份数据库中的多个库?

* mysqldump  -uroot  -p密码  -B  库名1  库名2  库n...  >  路径/xxx.sql 

* 如何备份数据库中的表?

* mysqldump    -uroot    -p密码    库名  表名1  表名2    >  路径/xxx.sql

    恢复所有数据、备份数据库、备份表的具体操作:

* 如何恢复所有数据?

* mysql  -uroot  -p密码    <    路径/xxx.sq  ( 恢复所有数据可以不需要加库名)

* 如何恢复单个书库的数据?

* mysql  -uroot  -p密码  库名  <    路径/xxx.sq

* 如何恢复多个数据库的数据?

* mysql  -uroot  -p密码    <    路径/xxx.sq  ( 恢复多个数据库的数据也不需要加库名)

* 如何恢复数据库中表的数据?

* mysql  -uroot  -p密码  库名  <    路径/xxx.sq


注意事项:         

1. mysqldump备份数据,本质上备份的是你在数据库中书写的命令;

2. 在恢复表数据时需要查看装表的库是存在,如果不存在需要先创建在恢复;

3. 在恢复多个数据库和所有库的时候,可以不需要加库名;

4. 无论是恢复数据还是备份数据都要验证用户权限;     

mysqldump完全备份的优缺点:

      优点:1.mysqldump备份数据,本质上备份的是你在数据库中书写的命令,所以备份的通用性非常好,mysql命令通用;

                2.方便快捷,

      缺点:1.备份时会把数据库锁住导致备份期间无法写入和读取数据,影响客户体验;

               

                2.不能时时备份,当备份完之后,随即写入的数据没有备份,如果删除无法恢复,只能恢复之前的备份;



3、时时备份的具体操作流程与优缺点;


1、时时备份的工作原理:

          第一、时时备份采取的时运用二进制的方式备份你在数据库中所操作的所有除查看命令外的,会让数据库变动的命令;

          比如:insert  into  、  drop  、  update  、  delete  等等

                    select 、 show  、  desc  查看命令不备份;

          第二、每次产生一个新的二进制日志文件,系统都会自动生成一个索引文件,用于记录日志已有的文件名;

          第三、需要在/etc/my.cnf文件中的 [ mysql ] 字符下面添加:

                    log_bin[=dir/name]             

                    ## [=dir/name]译为指定日志文件存放的目录位置,不设定的情况默认存放在/var/lib/mysql/;

                    server_id=数字                       

                    ##译为服务器id,0-255随便填写一个数字即可;

                    max_binlog_size=数字M       

                    ##译为日志文件的内存大小为多少M,默认1G,不设定的情况下为默认值;

                 

2、如何手动添加日志文件?

              第一、重新启动mysql服务,生产环境下禁用,因为在启动过程中可能会有客户访问;

              第二、在mysql环境中执行刷新命令:  mysql  >  flush  logs;

            第三、运用mysqldump备份数据时添加--flush-logs选项;

                        mysqldump  -uroot  -p密码  --flush-logs  库名  >  路径/xxx.sql

              第四、linux系统命令行中添加-e选项;

                        mysql  -uroot  -p密码  -e  "flush  logs"

                        这个方法可以不用进入数据库,在系统命令行可以查看到mysql数据库中的内容;


3、如何删除无用的日志文件?

              第一、删除早于指定版本之前的binlog日志;

                        命令格式:purge  master  logs  to  "binlog文件名";

              第二、删除所有binlog日志,重建新日志;

                        命令格式:reset  master ;

              注:删除日志文件的同时,索引文件也会自动删除,并同步日志文件;


                    在linux命令行用mysql的指令:

                    mysql  -uroot  -p密码  -e    "mysql的指令"

                    在mysql命令行用linux的指令:

                    system  linux的指令

4、如何自定义mysql数据库中的binlog日志文件名和目录?

          第一、不能把目录创建在/root目录下,因为/root目录是管理员root的家目录,所有者是root,如果把权限赋予给其他用户,会非常危险,所以不能把目录创建在/root目录下;

          第二、在根目录下创建一个目录,并归属与mysql用户;

                    mkdir    /mylog    ;  chown  mysql:mysql    /mylog

          第三、修改mysql的配置文件/etc/my.conf;

                    vim    /etc/my.conf

                    [mysql]

                    server_id=50                    ##1-255之间的数字均可;

                    log_bin=/mylog/bac      ##目录均可自定义

          第四、验证目录是否修改成功;

                  a、在linux命令行查看日志文件是否有生成;

                  b、在mysql命令行查看:  show  master  status;



5、如何运用binlog日志文件恢复所有的数据?

          日志文件恢复数据的原理是:通过记录保存mysql执行过的命令,然后再通过mysqlbinlog命令执行一遍;

          第一、将binlog日志文件拷贝到需要数据恢复的主机;

          第二、运用 mysqbinlog 命令恢复数据;

                    mysqlbinlog    日志文件路径  |  mysql  -uroot  -p密码

          第三步、验证数据是否有恢复;

                    show  databases;      select  *  from  库名.表名;

          注意事项:

       

6、如何修改日志格式?

        第一、查看当前日志格式,"binlog_format"日志变量;

                    mysql >  show  variables  like  "binlog_format";

          第二、必须要了解日志的三种格式;

                A、statement  这种格式每一条修改数据的SQL命令都会记录再binlog日志中;

                B、row 不记录SQL语句上下文相关信息仅保存哪条记录备修改;

                C、mixed 以上两种格式的混合使用;

          第三、修改日志的具体步骤;

                  在 /etc/my.cnf 配置文件 [mysql] 字符下添加 binlog_format="日志格式" 即可;

                  然后,重新启动mysql,并用 mysqlbinlog  日志路径文件  |  grep  -i  mysql命令;

                  例如:  mysql  >  mysqlbinlog      /mylog/bac.000001  |  grep  insert


7、如何运用binlog日志恢复指定的部分日志?

          第一、要明白什么是“偏移量”的概念?

                  偏移量——指的就是字符A到字符B的距离

                  在mysql命令行输入的每一条改变数据库和表格的数据,偏移量都会改变——Position下的数字会变化;

                  偏移量可以用于恢复指定的数据;


          第二、恢复指定部分数据的命令格式:

          mysqlbinlog    日志文件路径    ##先查看出偏移量的起始与结束位置,时间也是用mysqlbinlog命令查询;

          ]#  mysqlbinlog  --start-position=偏移量  --stop-position=偏移量    日志文件路径    |    mysql  -uroot  -p密码

          ]#  mysqlbinlog  --start-datetime="yyyy-mm-dd hh:mm:ss"    --stop-datetime="yyyy-mm-dd hh:mm:ss"

                日志文件路径    |    mysql  -uroot  -p密码

          注:在生产环境中通常是drop删除在最后,所以可以快速定位偏移量;

以上.......

<END>

                                                       

祝:开心!

罗贵

2019-05-17于深圳

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容