zoukankan      html  css  js  c++  java
  • mysqlbackup 重建带有gtid特性的slave

    一、mysqlbackup简介:

      mysqlbackup是mysql的一个企业级备份工具,优点就是牛逼,缺点就是这东西要钱买。

    二、gtid 特性简介:

      gtid 的中文名叫全局事务ID,也就是说每一个事务都会对应一个全局唯一的编号;由于这个编号也会被写入到binlog

      只要slave把自己的已经应用的gitd发给master, master就能知道slave同步到了二进制日志的那个位置。也就是说之前

      的master_log_file,master_log_pos被革命了。

    三、重建slave大致上要分如下几步:

      1、备份master

      2、传输备份到slave主机

      3、确保slave已经停止,数据目录已经清空

      4、还原备份

      5、建立主从关系,启动复制

    四、备份master:

      1、备份脚本

    mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/ --with-timestamp 
      --host=127.0.0.1 --port=3306 --user=mebuser --password='Pass@352' 
      --compress --skip-binlog --skip-relaylog --limit-memory=1024 
      --read-threads=4 --process-threads=8 --write-threads=4  
      --backup-image=/tmp/$(date +'%F_%H-%M-%S').mbi 
      backup-to-image

      2、注意事项

        --no-locking 这个选择使得mysqlbackup在备份的最后阶段不锁表,这样就得不到一个全局一致的备份;之所以说是全局一致是

        是因为对于innodb表来说是一致的,因为在还原的时候会前滚回滚,但是MyIASM表就不能保证一致了;所以这种情况下mysqlbackup

        得不到一个正确的binlog位置,这样做重建是有问题的。

      3、性能优化项:

        --read-threads --write-threads 如果你的磁盘性能比较牛逼就调大这两个参数

        --process-threads                    如果你的cpu性能比较牛逼就调大这个上参数

        --limit-memory                         如果你的内存比较空闲就调大这个上参数

    五、传输备份到slave: 

    scp 2017-08-29_16-23-16.mbi root@172.16.192.111:/tmp/

    六、停止slave 并清空它的数据目录:

    systemctl stop mysql
    mv /database/mysql/data/3306 /database/mysql/data/3306.backup.20170829
    mkdir -p /database/mysql/data/3306/

    七、还原备份:

      1、还原脚本

    mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/meb --with-timestamp --backup-image=/tmp/2017-08-29_16-23-16.mbi 
        --datadir=/database/mysql/data/3306/  --uncompress copy-back-and-apply-log

      2、还原后的数据目录内容

    ll /database/mysql/data/3306/
    total 110656
    -rw-r--r--. 1 root root      302 Aug 29 16:43 backup_gtid_executed.sql # 记录着gtid相关信息
    -rw-r--r--. 1 root root      568 Aug 29 16:43 backup_variables.txt
    -rw-r--r--. 1 root root      383 Aug 29 16:43 ib_buffer_pool
    -rw-r--r--. 1 root root 12582912 Aug 29 16:43 ibdata1
    -rw-r-----. 1 root root 50331648 Aug 29 16:43 ib_logfile0
    -rw-r-----. 1 root root 50331648 Aug 29 16:43 ib_logfile1
    drwxr-x---. 2 root root     4096 Aug 29 16:43 mysql
    drwxr-x---. 2 root root     8192 Aug 29 16:43 performance_schema
    -rw-r--r--. 1 root root    15623 Aug 29 16:43 server-all.cnf
    -rw-r--r--. 1 root root     4555 Aug 29 16:43 server-my.cnf
    drwxr-x---. 2 root root     8192 Aug 29 16:43 sys

      3、修改数据目录的权限

    chown -R mysql:mysql /database/mysql/data/3306

    八、启动slave并配置复制:

       1、启动slave

    systemctl start mysql

      2、更新slave上gtid信息

    reset master;
    set sql_log_bin=0;
    source /database/mysql/data/3306/backup_gtid_executed.sql

      3、配置复制

    change master to
        master_user='repl',
        master_password='xxxxxxxx',
        master_host='172.16.192.110',
        master_port=3306,
        master_auto_position=1;
    
    start slave;

      4、查看复制的状态

    show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.16.192.110
                      Master_User: repl
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 3206
                   Relay_Log_File: clusterb-relay-bin.000002
                    Relay_Log_Pos: 626
            Relay_Master_Log_File: mysql-bin.000004
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes

    总结:

      用mysqlbackup重建带有gtid特性的slave的过程大致就是上面这个样子了,这里并没有对mysqlbackup有过多的讲解,

      官方文档见:MySQL Enterprise Backup 4.1

    交流学习

    ----

  • 相关阅读:
    Implementing a smoothly animated ListBox
    HTML head区的其他设置(转)
    How to: Display a Gradient Fill
    jQuery学习一
    Android中的日历读写操作!!! (转)
    画透明的图片
    How to: Draw Images with Transparency
    EasyTime TV——轻松玩MAC
    IOSproperty's synthesized getter follows Cocoa naming convention for returning 'owned' objects
    IOSButton CurrentTitle and titleLabel 使用
  • 原文地址:https://www.cnblogs.com/JiangLe/p/7448648.html
Copyright © 2011-2022 走看看