iiiii

逻辑卷备份

 

首先先做一个lvm逻辑卷,然后把mysql的目录文件和二进制文件放在其中(备注:生产环境中,我们一定要把他们放在两个磁盘上避免有一块坏掉二全部数据损坏)

 

基于lvm2的备份:

    1)请求锁定所有表

       mysql>flush tables with read lock;

    2)记录二进制日志文件及事件位置

       mysql>flush logs;

       mysql>show master status;

    3)创建快照

       lvcreate -L 500M -s -n Name -p r /dev/vg0/lv0

       

    4)释放锁

       unlock tables;

       

    5)挂载快照卷,执行数据备份

    6)备份完成,删除快照卷

    7)通过原卷备份二进制日志

    8)导出备份文件

    9)恢复备份,恢复二进制

    

xtrabackup:

    

    

    备注需要启用,innodb_file_table (配置文件里地址反解也要跳过)

    

    完全备份:

    

    innobacpupex是对xtrabackup封装过得perl脚本.相当于简装版的xtrabackup. 也就是说innobackupex是xtrabachup的前端工具

        

               

    使用格式1:备份     

       1) innobackpuex --user=User --password=Passeord  /PATH/TO/BACKUP_dir

        (不需要指定datadir在哪只需要指定需要备份的位置,它会自动搜索数据的位置)

            

    

        2)innobackpuex --user=User --password=Passeord

        --stream=tar ./ |bzip2 -

        

        注意:备份完的文件有可能比原来的文件多出一些文件

         文件有:

        1)xtrabackup_checkpoints :指明备份类型(完全或者增量)、备份状态 lsn范围(日志序列号范围)

        

        2)xtrabackup_binlog_info: mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置

        

        3)xtrabackup_binlog_pos_innodb:二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position

        4)xtrabackup_binary:备份中用到的xtrabackup的可         执行文件

        5)backup-my.cnf:备份命令用到的配置选项信息 在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据

        

          选项说明:

                .--user:该选项表示备份账号

                .--password:该选项表示备份的密码

                .--host:该选项表示备份数据库的地址

                .--databases:该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表

                .--defaults-file:该选项指定了从哪个文件读取MySQL配置,必须放在命令行第一个选项的位置

                .--incremental:该选项表示创建一个增量备份,需要指定--incremental-basedir

                .--incremental-basedir:该选项表示接受了一个字符串参数指定含有full backup的目录为增量备份的base目录,与--incremental同时使用

                .--incremental-d    ir:该选项表示增量备份的目录

                .--include=name:指定表名,格式:databasename.tablename      

        

        

        

        

        

        

    使用格式2:整理

        innobackupex --apply-log [option] BACKUP-DIR (整理数据文件) 

         备注:当我们对数据备份时我们不止要备份数据文件,我们还要备份事务日志(有可能我们备份时别人有在处理的事务并未提交 或者已经提交但并未同步到数据中的等 现象 )。

        

         我们还原数据之前如果此数据只有完全备份,需要把已经提交的事务日志信息手动提交到数据中,未提交的给他回滚。然后这个文件才能拿来做还原   当然如果有完全备份和增量备份那么,还原之前我们要把增量和完全备份合并,然后在执行上面的

         

            选项说明:

            .--use-memory:该选项表示和--apply-log选项一起使用,prepare 备份的时候,xtrabackup做crash recovery分配的内存大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G

            .--defaults-file:该选项指定了从哪个文件读取MySQL配置,必须放在命令行第一个选项的位置

            .--export:表示开启可导出单独的表之后再导入其他Mysql中

            .--redo-only:这个选项在prepare base full backup,往其中merge增量备份时候使用

    

        我们使用xtrabacup时需要确认innodb_file_per_table:开启 

    

    使用格式3:还原

    

           innobackupex --copy-back /Path/to/backup_dir

           

           还原时,我们不需要打开mysql 只需要指定好文件目录,和配置文件位置即可,同时我们最好用mysql用户执行,这样我们就不会在产生权限和属性的问题了

    

    使用格式4:增量备份

           innobackupex --incremental /backup(增量结果备份的位置) --incemental-basedir=Basedir(基于谁做增量)

           

           一旦我们做了增量备份我们的还原就变成了:

           还原第一个增量

              innobackupex --apply-log --redo-only BASE-DIR --INCREMENTAL-SIR=Dir1

           还原第二个增量

              innobackupex --apply-log --redo-only BASE-DIR --INCREMENTAL-SIR=Dir1

    

    使用格式5:导入或导出单张表

      前提:启用innodb_file_per_table

          

          导出:

          导出表是在完全备份的基础上操作的

          innobackupex --apply-log --export /Path/to/backup(对哪个文件进行导出exp文件)

          

          备注:这个命令会为没有个表空间创建一个.exp结尾的文件,这些表文件可用于导入其他服务器中做还原单张表操作

          

          

          导入:

            在mysql服务器上导入其他服务器的表,需要在当前服务器中创建一个跟原来表结构一样的表才能进行导入

               

           mysql> create table Tb_name (...) engine= innodb;

           

           将此表空间删除:

           alter table Database_name.TB_name discard tablespace;

           

           然后导入exp文件

           alter table Database_name.TB_name import tablespace

           备注:说是exp文件,实际上我们需要把exp和ibd文件一起复制过来,表的名字就是exp和ibd前缀的名字。

           

           备注:注意权限

           

               

mysql主从:

 

        我们的目标是让不同的节点拥有相同的数据集。

        

        复制的功用

            1)数据分布:一个数据可以存多份

           2)负载均衡:针对读操作均衡(因为同步数据需要在从节点执行和主节点相同的写操作)

           3)备份

           4)实现高可用(编写脚本,实现故障切换)

           5)升级测试

           

           

    复制的实现:

    

    主节点必须开启二进制日志文件

    

    1)从节点会把自己扮演成客户端,通过mysql协议请求读取主节点上的二进制日志中的事件

    2)服务器端会查看对方请求的事件位置(如果不指定则从第一个文件的最开始处),然后发送给从节点

    3)从节点收到以后,先保存在中继日志中,然后用一个文件记录起来(记录收到的位置,以便下次请求)

    4)再本地replay一遍

    

    5)继续发送新的请求,然后主服务器开启一个新的dump线程响应客户端。

    

    

    总结:

    从节点

      I/O线程:从master请求二进制日志时间,保存在中继日志中

      SQL线程:从中继日志中读取时间,并在本地完成重放

      

    主节点:

       dump线程:为每个从节点的I/O 线程启动一个dump先后才能,用于向其发送二进制时间。

     

   主主复制:

   

       互为主从

          可能产生的问题:

              1)数据不一致,因此需要慎用

           2)写入时有可能造成自动增长的节点号产生冲突

           为了避免这种事情发生,我们最好两个节点,其中一个节点使用奇数ID一个使用偶数ID

          其中一个节点设置: aotu_increment_offset=1

           aotu_increment_offset_increment=2

           另一个节点设置

           aotu_increment_offset=2

           aotu_increment_offset_increment=2

        配置步骤:

        1)各节点选择一个唯一的server_id

        2)都启用bin_log和relay log

        3)创建拥有复制权限的用户账号

        

        grant replication slave,repliaction client *.* to 'repluser'@'172.20.%.%' identified by 'password'

        

        然后 双机都进行 flush privileges   

        权限同步

        备注:万一需要用到千万不要使用%.%这种命令。 

        4)定义自动增长ID字段的数值增长范围为奇偶

        5)均把对方设置为主节点,并启动复制线程

        首先show master status

        在对面的机器上change master to master_host='172.#.#.#',master_user='repluser',master_password='Passwd',master_log_file=master-bin.0000#,master_log_pos='###'(后面这两个文件是从show tsatus 得到的),

        

        同理再来一次,从另一台机器show master statys 

        另一台机器设置命令。

        查看从服务器信息

        show slave status

        

        如果从服务器没有问题我们可以

        start slave

        

        

    主从复制:

    

       

       主节点:

       1)开启二进制文件

       编辑my.cnf 在其中加入log_bin=mysql-bin(他会自动分开,按照滚动的方式新建0000#的新日志文件名字就叫做mysql-bin0000#)

       server-id=#(设置主服务器ID) 

       innodb_file_per_table=ON

       

       skip_name_resolve=ON

       这样主服务器就配置好了 

        

        

        2)对主服务器创建一个有复制权限的用户账号

        grant replication slave,repliaction client *.* to 'repluser'@'172.20.%.%' identified by 'password'

        

        plush privileges同步权限 

        

        

        

        3)配置从服务器

        编辑my.cnf

        relay_log=relay-log

        relay_log_index=relay-log.index

        

        server-id=#(主从ID不一致)

        innodb_file_per_table=ON

        

        skip_name_reslove=ON

        

        4)查看主服务器状态

        show master status 

        找出bin0000# 和position

        5)在从服务器指明主服务器

        这步我们可以查看用help change master to来查看格式

        change master to

        master_host='172.#.#.#'

        ,master_user='repluser'

        ,master_password='Passwd'

        ,master_log_file='master-bin.0000#''

        ,master_log_pos=###(备注最后一位置数字不需要加引号)

       

       

       6) 启动复制线程

       start slave

       

       主从架构中应该注意的问题:

       1、应该限制从服务器为只读模式

       show global variables like 'read_only'(查看)

       为了长期生效我们把它写在配置文件中

       

       如果我们需要阻止包括管理员的所有用户我们可以用

       flush tables with read lock;

       备注:这是两种方式我们要根据自己需求选择

       

       2、保证主从复制的事务安全

          

          

        主节点:

          在master节点启用参数

           sync_binlog=on

            innodb_flush_logs_at_trx_commit=ON

           (刷写日志:在事务提交时,立即将内存中与事务相关的缓冲区中的事务提交至事务日志中

           )

           innodb_support_xa=ON

           (是否支持分布式事务)

        

          sync_master_info(这个是变量,我们最好把它设置为1表示是否立即同步至从节点)      

        

        

            

        从节点:

           

          1)skip_slave_start=ON(开机时跳过自动启动复制线程 我们应该检测无误后手动启动)

       

          2)master.info:

        记录的主节点的信息,从节点复制的位置等等

        

          3)relay-log.info: 自己记录的中继日志,以及复制到了哪个位置

         

          变量:

          sync_relay_log_info:【1|0】

          sync_relay_log:【1|0】

          这两个变量开启会保证数据的安全性,但是会降低服务器的读写性能,如何选择需要我们权衡生产环境

       

       

       

     

             

        

       

       

       

       

       

       

       

       

       

       

        为了实现高可用,我们为避免主机宕机产生的问题,我们可以在从服务器上也执行上面这步

        同时在配置文件中启用log_slave_updates(在配置文件中写,不需要写on直接写这个句子就可以了)

            

       半同步复制

        6)对主服务器和从服务器安装各自插件

        

        主服务器:

        install plugin rpl_semi_sync_master soname 'semisync_master.so' (插件如果是yum安装的我们用rpm直接看就可以)

        show plugins

 

        可以查看所有插件是否启用情况

        

        从服务器:

        install plugin rpl_semi_sync_slave

        soname 'semisync_slave.so'

        

        

        7)设置为主从同步数据变量 on

        主服务器

        set global rpl_semi_sync_master_enabled=on

        

        从服务器

        set global rpl_semi_sync_slave_enabled=on

        

        然后确认:show global variables like '%semi%

        '

        show global status like '%semi%

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值