精华内容
下载资源
问答
  • mysql热备

    千次阅读 2014-12-01 11:50:03
    双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1. 可以做灾备,其中一个坏...一, mysql 备份工

    双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1. 可以做灾备,其中一个坏了可以切换到另一个。 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。  对于异地热备,尤其适合灾备。废话不多说了。我们直接进入主题。 我们会主要介绍两部分内容:

    一, mysql 备份工作原理

    二, 备份实战

     

    我们开始。

    我使用的是mysql 5.5.34,

     

    image

     

    一, mysql 备份工作原理

    简单的说就是把 一个服务器上执行过的sql语句在别的服务器上也重复执行一遍, 这样只要两个数据库的初态是一样的,那么它们就能一直同步。

     

    当然这种复制和重复都是mysql自动实现的,我们只需要配置即可。

     

    我们进一步详细介绍原理的细节, 这有一张图:

    上图中有两个服务器, 演示了从一个主服务器(master) 把数据同步到从服务器(slave)的过程。

    这是一个主-从复制的例子。 主-主互相复制只是把上面的例子反过来再做一遍。 所以我们以这个例子介绍原理。

     

    对于一个mysql服务器, 一般有两个线程来负责复制和被复制。当开启复制之后。

     

    1. 作为主服务器Master,  会把自己的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器会负责来读取这个log, 然后在自己那里再执行一遍。)

     

    2. 作为从服务器Slave, 会用master上的账号登陆到 master上, 读取master的Binarylog,  写入到自己的中继日志 Relaylog, 然后自己的sql线程会负责读取这个中继日志,并执行一遍。  到这里主服务器上的更改就同步到从服务器上了。

     

    在mysql上可以查看当前服务器的主,从状态。 其实就是当前服务器的 Binary(作为主服务器角色)状态和位置。 以及其RelayLog(作为从服务器)的复制进度。

     

    例如我们在主服务器上查看主状态:

     

    image

    mysql> show master status\G
    *************************** 1. row ***************************
                File: mysql-bin.000014
            Position: 107
        Binlog_Do_DB: 
    Binlog_Ignore_DB: mysql,information_schema,performance_schema,amh
    1 row <span class="kwrd">in</span> set (0.00 sec)

    稍微解释一下这几行的意思:

    1. 第一行表明 当前正在记录的 binarylog文件名是: mysql-bin.000014.

    我们可以在mysql数据目录下,找到这个文件:

    image

     

    2.  第二行, 107. 表示当前的文件偏移量, 就是写入在mysql-bin.000014 文件的记录位置。

    这两点就构成了 主服务器的状态。  配置从服务器的时候,需要用到这两个值。 告诉从服务器从哪读取主服务器的数据。 (从服务器会登录之后,找到这个日志文件,并从这个偏移量之后开始复制。)

     

    3. 第三行,和第四行,表示需要记录的数据库和需要忽略的数据库。 只有需要记录的数据库,其变化才会被写入到mysql-bin.000014日志文件中。  后面会再次介绍这两个参数。

     

    我们还可以在从服务器上,查看从服务器的复制状态。

     

    image

       1:  mysql> show slave status\G
       2:  *************************** 1. row ***************************
       3:                Slave_IO_State: Waiting for master to send event
       4:                    Master_Host: 198.**.***.***
       5:                    Master_User: r*******
       6:                    Master_Port: 3306
       7:                 Connect_Retry: 60
       8:                Master_Log_File: mysql-bin.000014
       9:            Read_Master_Log_Pos: 107
      10:                 Relay_Log_File: mysqld-relay-bin.000013
      11:                 Relay_Log_Pos: 253
      12:          Relay_Master_Log_File: mysql-bin.000014
      13:               Slave_IO_Running: Yes
      14:              Slave_SQL_Running: Yes
      15:                Replicate_Do_DB: 
      16:            Replicate_Ignore_DB: mysql,information_schema,amh,performance_schema
      17:             Replicate_Do_Table: 
      18:         Replicate_Ignore_Table: 
      19:        Replicate_Wild_Do_Table: 
      20:    Replicate_Wild_Ignore_Table: 
      21:                     Last_Errno: 0
      22:                     Last_Error: 
      23:                   Skip_Counter: 0
      24:            Exec_Master_Log_Pos: 107
      25:                Relay_Log_Space: 556
      26:                Until_Condition: None
      27:                 Until_Log_File: 
      28:                  Until_Log_Pos: 0
      29:             Master_SSL_Allowed: No

     

    我们还是来重点解释途中的红圈的部分:

    1.  Master_host 指的是 主服务器的地址。 

    2. Master_user 指的是主服务器上用来复制的用户。  从服务器会用此账号来登录主服务。进行复制。

    3. Master_log_file 就是前面提到的, 主服务器上的日志文件名.

    4. Read_Master_log_pos 就是前面提到的主服务器的日志记录位置, 从服务器根据这两个条件来选择复制的文件和位置。

    5. Slave_IO_Running:  指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。

    6. Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。

     

    其他的参数之后再介绍。

     

     

    二, mysql 双机热备实战

    了解了上面的原理之后, 我们来实战。 这里有两个重点, 要想同步数据库状态, 需要相同的初态,然后配置同步才有意义。 当然你可以不要初态,这是你的自由。 我们这里从头开始配置一遍。

     

    image

     

    我们先以A服务器为起点,  配置它的数据库同步到B。  这就是主-从复制了。 之后再反过来做一次,就可以互相备份了。

     

    1, 第一步,

    在A上面创建专门用于备份的 用户:

     

    image

    grant replication slave on *.* to 'repl_user'@'192.***.***.***' identified by 'hj34$%&mnkb';

     

    上面把ip地址换成B机器的ip地址。 只允许B登录。安全。

    用户名为: repl_user

    密码为: hj34$********nkb

    这个等会在B上面要用。

     

    2. 开启主服务器的 binarylog。

    很多服务器是默认开启的,我们这里检查一下:

    打开 /etc/my.cnf

     

    image

     

    我来解释一下红框中的配置:

    前面三行, 你可能已经有了。

    binlog-do-db 用来表示,只把哪些数据库的改动记录到binary日志中。 可以写上关注hello数据库。 但是我把它注释掉了。 只是展示一下。 可以写多行,表示关注多个数据库。

    binlog-ignore-db 表示,需要忽略哪些数据库。我这里忽略了其他的4个数据库。

     

    后面两个用于在 双主(多主循环)互相备份。 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。  解决这个问题的办法就是让每个数据库的自增主键不连续。  上图说是, 我假设需要将来可能需要10台服务器做备份, 所以auto-increment-increment 设为10.   而 auto-increment-offset=1 表示这台服务器的序号。 从1开始, 不超过auto-increment-increment。

    这样做之后, 我在这台服务器上插入的第一个id就是 1, 第二行的id就是 11了, 而不是2.

    (同理,在第二台服务器上插入的第一个id就是2, 第二行就是12, 这个后面再介绍) 这样就不会出现主键冲突了。 后面我们会演示这个id的效果。

     

    3.  获取主服务器状态, 和同步初态。

    假设我现在有这些数据库在A上面。

    如果你是全新安装的, 那么不需要同步初态,直接跳过这一步,到后面直接查看主服务器状态。

    这里我们假设有一个 hello 数据库作为初态。

     

    image

     

    先锁定 hello数据库:

    FLUSH TABLES WITH READ LOCK;

     image

     

    然后导出数据:

    我这里只需要导出hello数据库, 如果你有多个数据库作为初态的话, 需要导出所有这些数据库:

     

    image

     

    然后查看A服务器的binary日志位置:

    记住这个文件名和 位置, 等会在从服务器上会用到。

     

    image

     

    主服务器已经做完了, 可以解除锁定了:

     

    image

     

     

    4.  设置从服务器 B 需要复制的数据库

    打开从服务器 B 的 /etc/my.cnf 文件:

     

    image 

     

    解释一下上面的内容。

    server-id 必须保证每个服务器不一样。 这可能和循环同步有关。 防止进入死循环。

    replicate-do-db 可以指定需要复制的数据库, 我这里注掉了。 演示一下。

    replicate-ignore-db 复制时需要排除的数据库, 我使用了,这个。 除开系统的几个数据库之外,所有的数据库都复制。

    relay_log 中继日志的名字。 前面说到了, 复制线程需要先把远程的变化拷贝到这个中继日志中, 在执行。

    log-slave-updates 意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。  就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。

     

    保存, 重启mysql。

     

     

    5. 导入初态, 开始同步。

    把刚才从A服务器上导出的 hello.sql 导入到 B的hello数据库中, 如果B现在没有hello数据库,请先创建一个, 然后再导入:

    创建数据库:

    mysql> create database hello charset utf8;

    把hello.sql 上传到B上, 然后导入:

    image

     

    如果你刚才导出了多个数据库, 需要把他们都一一上传导入。

     

    开启同步, 在B服务器上执行:

     CHANGE MASTER TO 
           MASTER_HOST='192.***.***.***', 
           MASTER_USER='repl_user', 
           MASTER_PASSWORD='hj3****', 
           MASTER_LOG_FILE='mysql-bin.000004', 
           MASTER_LOG_POS=7145;

    image

     

    上面几个参数我就不解释了。 前面说过了。

     

    重启mysql,  然后查看slave线程开启了没:

     

    image

     

    注意图中的红框, 两个都是Yes, 说明开启成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    如果其中一个是No, 那就说明不成功。需要查看mysql的错误日志。 我在第一次做的时候就遇到这个问题。有时候密码填错了, 有时候防火墙的3306没有打开。ip地址不对,等等。 都会导致失败。

     

    我们看错误日志: mysql的错误日志一般在:

     

    image

    文件名应该是你的机器名, 我这里叫做host1.err 你换成你自己的。

     

    到这里主-从复制已经打开了。 我们先来实验一下。

    我们在A的数据库里面去 添加数据:

     

    image

    我在A的 hello数据库的test表中 连续插入了3条数据,  注意看他们的自增长id, 分别是1,11,21.  知道这是为什么吗。 前面已经说过了,不懂再回去看。

     

    我们去看一下B数据库有没有这三条数据:

     

    打开B的数据库:

    image

    发现已经在这了。 这里效果不直观。

     

    此时不要在B中修改数据。 我们接着配置从B到A的复制。  如果你只需要主从复制的话, 到这里就结束了。后面可以不看了。 所有A中的修改都能自动同步到B, 但是对B的修改却不能同步到A。 因为是单向的。 如果需要双向同步的话,需要再做一次从B到A的复制。

     

    基本跟上面一样:我们简单一点介绍:

     

    1. 在B中创建用户;

    image

     

    2. 打开 /etc/my.cnf , 开启B的binarylog:

    image

    注意红框中所新添加的部分。

     

    3. 我们不需要导出B的初态了,因为它刚刚才从A导过来。  直接记住它的master日志状态:

     

    image

    记住这两个数值,等会在A上面要用。

    B服务器就设置完了。

     

    4. 登录到A 服务器。 开启中继:

     

    image

    注意框中心添加的部分, 不解释了。

     

    5. 启动同步:

    image

    上面的ip地址是B的ip地址, 因为A把B当做master了。 不解释了。

     

    然后重启mysql服务。

    然后查看,slave状态是否正常:

     

    image

    图中出现了两个No。

    Slave_IO_Running: No

    Slave_SQL_Running: No

    说明slave没有成功, 即,从B到A的同步没有成功。 我们去查看mysql错误日志,前面说过位置:

     

    image

     

    找到  机器名.err 文件,打开看看:

    image

     

    看图中的error信息。  说找不到中继日志文件。

    这是因为我们在配置A的中继文件时改了中继文件名,但是mysql没有同步。解决办法很简单。

     

    image

     

    先停掉mysql服务。  找到这三个文件,把他们删掉。 一定要先停掉mysql服务。不然还是不成功。你需要重启一下机器了。 或者手动kill mysqld。

    好了, 启动mysql之后。 我们在来检查一下slave状态:

     

    image

     

    注意图中两个大大的Yes。  哈哈。

     

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

     

    证明从B到A的复制也成功了。

     

    此时我们去B服务器中插入几条数据试试:

     

    image

    我在B中插入了两条数据。 注意看他们的id。  不解释。

     

    然后我们,登录去A中看看,A数据库变了没。

    image

    可以看到已经自动同步到A了。

     

    至此, AB双主互相热备就介绍完了。

     

    原理其实很简单,是不是。

     

    理解了这个原理, 多机循环互备就简单了。这里就不再展开了。

     

    花了一天时间写这个博客,大家要顶啊。

     

    欢迎大家访问我的独立博客:http://blog.byneil.com 多多交流。

     

     

     

    参考:

    1. mysql-keepalived-实现双主热备读写分离

    http://gitsea.com/2013/06/16/mysql-keepalived-%E5%AE%9E%E7%8E%B0%E5%8F%8C%E4%B8%BB%E7%83%AD%E5%A4%87%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB/

     

    2. MySQL数据同步【双主热备】http://www.cnblogs.com/zhongweiv/archive/2013/02/01/mysql_replication_circular.html

     

    3. Mysql双机热备实现

    http://yunnick.iteye.com/blog/1845301

     

    4. 高性能Mysql主从架构的复制原理及配置详解http://blog.csdn.net/hguisu/article/details/7325124

     

    5.   mysql 基于 master-master 的双机热备配置



    转自:http://blog.csdn.net/binyao02123202/article/details/19323399

    展开全文
  • 教程mysql热备

    2011-12-20 12:09:02
    mysql热备教程
  • mysql热备及mysql主从配置、Mysql 双机备份
  • redhat下mysql热备制作,参考高性能mysql一书编写的,测试通过,包含截图等
  • mysql热备脚本

    2018-04-13 17:32:00
    #mysql热备脚本 #备份策略:每周一进行完整备份,以后每一天在前一天的基础上进行增量备份 # #备份目录 back_dir="/data/backup/mysql" #备份数据库信息 host="" dbuser="" dbpasswd="" #日志文件 back...
    #!/bin/bash
    #mysql热备脚本
    #备份策略:每周一进行完整备份,以后每一天在前一天的基础上进行增量备份
    #
    #备份目录
    back_dir="/data/backup/mysql"
    #备份数据库信息
    host=""
    dbuser=""
    dbpasswd=""
     
    #日志文件
    back_log="${back_dir}/log/mysql_back.log"
     
    #week day
    week_day=`date +%w`
    #yesterday
    yesterday=`date +%F -d "1 days ago"`
     
    #日志记录函数
    function log(){
      echo "`date` $1" | tee -a ${back_log}
    }
    
    #判断当前日期,是周一进行全备份,其他时间进行增量备份
    if [ ${week_day} -eq 1 ]; then
    #完整备份
      log "周${week_day}开始完全备份..."
      innobackupex --defaults-file=/etc/my.cnf --host=${host} --user=${dbuser} --password=${dbpasswd} ${back_dir} &>> ${back_log}
      if [ $? -eq 0 ]; then
        log "完全备份完毕."
        else
           log "完全备份出错,请检查."
           exit 1
      fi
      else
        let dir_num=`find ${back_dir} -type d -name "${yesterday}*" | wc -l`
        if [ ${dir_num} -ne 1 ]; then
          log "昨天增量目录未找到或昨天备份目录大于等于2个,请确认后再次备份."
          exit 1
        fi
        incremental_dir=`find ${back_dir} -type d -name "${yesterday}*"`
        log "周${week_day}开始增量备份..."
        #增量备份
        innobackupex --host=${host} --user=${dbuser} --password=${dbpasswd} --incremental ${back_dir} --incremental-basedir=${incremental_dir} &>> ${back_log}
        if [ $? -eq 0 ]; then
          log "增量备份成功."
          else
            log "备份失败,请检查日志..."
            exit 1
        fi
    fi
    exit $?

     

    转载于:https://www.cnblogs.com/xiaoyafei/p/8822110.html

    展开全文
  • mysql热备 1 查看mysql版本,保证主库低于等于从库 2 主库配置: A 需要打开支持日志功能:log-bin=mysql-bin B 提供server-id:server-id=1 C 重启mysql,进入后,分配复制从库的帐号 GRANT REPLICATION SLAVE...

    mysql热备 
    1 查看mysql版本,保证主库低于等于从库 
    2 主库配置: 
      A 需要打开支持日志功能:log-bin=mysql-bin 
      B 提供server-id:server-id=1 
      C 重启mysql,进入后,分配复制从库的帐号 
    GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'backip' IDENTIFIED BY 'repuser'; 
      D show master status;能看到二进制日志文件目前的Position 
      E mysqldump --all-databases --single-transaction --master-data > all 
    把数据库内容备份出来,加上master-data参数是为了在备份出来的文件中看到当前备份的数据对应哪个日志文件的哪个position 
    3 配置从服务器 
      A   server-id=2 //设置数据库 id 默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。 
      master-host=masterip //主服务器的IP地址或者域名 
      master-port=3306 //主数据库的端口号 
      master-user=repuser //同步数据库的用户 
      master-password=repuser //同步数据库的密码 
      master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差 
      B 启动从服务器,并先停止slave:slave stop; 
      C 导入主库数据 
      D mysql> CHANGE MASTER TO 
      -> MASTER_HOST='masterip', //主服务器的IP地址 
      -> MASTER_USER='repuser', //同步数据库的用户 
      -> MASTER_PASSWORD='repuser', //同步数据库的密码 
      -> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名 
      -> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置 

      其中日志文件名和开始位置,可以从all这个文件的头几行查到 
      E slave start;结束 



    查询mysql操作日志 
    1 show binary logs;可以看到每个binlog中的position 
    2 mysqlbinlog  binlog_file --no-defaults --start-datetime='2009-12-15 00:00:00' |more

    展开全文
  • 数据库分为3台服务器ABC,分别安装3个库a,b,c。现在希望每台服务器有一个 冗余热备的库,所以在服务器A,B,C上分别安装3个备份的数据库a2,b2,c2。 主从同步关系为: Aa...请高手指教,这样的mysql热备方案是否可行?
  • Ubuntu 安装 innobackup 实现Mysql 热备 环境说明: root@znjtb-YangTianT4900d-07:/home/znjtb# cat /etc/os-release NAME="Ubuntu" VERSION="16.04.6 LTS (Xenial Xerus)" ID=ubuntu ID_LIKE=debian PRETTY_NAME=...

    Ubuntu 安装 innobackup 实现Mysql 热备

    环境说明:

    root@znjtb-YangTianT4900d-07:/home/znjtb#  cat  /etc/os-release  
    NAME="Ubuntu"
    VERSION="16.04.6 LTS (Xenial Xerus)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 16.04.6 LTS"
    VERSION_ID="16.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    VERSION_CODENAME=xenial
    UBUNTU_CODENAME=xenial
    
    root@znjtb-YangTianT4900d-07:/home/znjtb# mysql  -V  
    mysql  Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using  EditLine wrapper
    
    root@znjtb-YangTianT4900d-07:/opt/percona# innobackupex   --version  
    xtrabackup: recognized server arguments: --datadir=/var/lib/mysql --log_bin=/var/log/mysql/bin/mysql-bin.log --server-id=10 
    innobackupex version 2.4.15 Linux (x86_64) (revision id: 544842a)
    
    

    下载Percona-XtraBackup安装包

    wget  https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.15/binary/debian/xenial/x86_64/Percona-XtraBackup-2.4.15-r544842a-xenial-x86_64-bundle.tar
    

    由于8.0版本不支持mysql 8.0 以下的,所以这里选用的版本是2.4的

    解决依赖并安装

    root@znjtb-YangTianT4900d-07:/opt# tar  -xf Percona-XtraBackup-2.4.15-r544842a-xenial-x86_64-bundle.tar  -C /opt/percona 
    
    root@znjtb-YangTianT4900d-07:/opt/percona# apt-get  -f  install  ./*.deb 
    
    root@znjtb-YangTianT4900d-07:/opt/percona#  innobackupex   --version  
    xtrabackup: recognized server arguments: --datadir=/var/lib/mysql --log_bin=/var/log/mysql/bin/mysql-bin.log --server-id=10 
    innobackupex version 2.4.15 Linux (x86_64) (revision id: 544842a)
    
    
    

    编写innobackup使用脚本

    #!/bin/bash
    #name: innobackup.sh
    # Version: 2.0
    # Author: tang
    # Organization:null  
    # Created Time : date
    # chkconfig: - 58 74
    # Description:
    #这个实现全量备份mysql数据库,可以加入到定时计划任务上实现定时备份
    
    
    logfile="/home/mysqlbak/mysql_full_bak_time.log"
    #备份好后菜单文件,根据这个检索多次备份的文件(包含备份状态)
    backuplogfile="/home/mysqlbak/mysqlbackup.log"
    #mysql的备份日志
    mysql_bakdir="/home/mysqlbak/"
    #备份数据的存放目录
    user=root
    password='XXXXXX'
     
    [ ! -d $mysql_bakdir  ] &&  mkdir -p $mysql_bakdir
    [ ! -f  $logfile ] && touch  $logfile
     
    innobackupex --user=${user} --password=${password} --compress –-parallel=4 –-throttle=400 --stream=tar ${mysql_bakdir} 2>&1 >> $backuplogfile
    reset=$?
    finishtime=`date +%Y%m%d_%H%M%S`
    [ ${reset} -eq 0 ] && echo  "Mysql fullbakup  finished, time: $finishtime">>  $logfile || echo "Mysql fullbakup failed,please check time:$finishtime" >>  $logfile
    
    
    

    innobackup的常用选项

    innobackupex完整备份、增量备份操作

    –host 主机名

    –port 3306

    –user 用户名

    –password 密码

    –databases=“库名”

    –databases=“库1 库2”

    –databases=“库.表”

    –no-timestamp 不用日期命名备份文件存储的子目录,使用备份的数据库名做备份目录名

    –no-timestmap 不使用日期命名备份目录名

    1)做一个完整备份

    默认情况下,备份文件存储的子目录会用日期命名,

    innobackupex作为客户端工具,以mysql协议连入mysqld,将数据备份到/home/mysqlbak/文件夹:

    备份和恢复数据操作

    通过innobackup工具备份的数据库目录,若要恢复到另一个MySQL服务器,需要先做一个“–apply-log --redo-only ”的准备操作。

    root@znjtb-YangTianT4900d-07:~# innobackupex   --user root  --password  'XXXXXX' /back 
    .........
    	MySQL binlog position: filename 'mysql-bin.000039', position '154'
        190813 13:43:56 [00] Writing /back/2019-08-13_13-38-37/backup-my.cnf
        190813 13:43:56 [00]        ...done
        190813 13:43:56 [00] Writing /back/2019-08-13_13-38-37/xtrabackup_info
        190813 13:43:56 [00]        ...done
        xtrabackup: Transaction log of lsn (33533234135) to (33533234144) was copied.
        190813 13:43:56 completed OK!
    

    看到最终的完全OK即可完成本次的备份,否则备份失败

    备份成功的元素展示

    root@znjtb-YangTianT4900d-07:/home/mysqlbak#  pwd  
    /home/mysqlbak
    
    root@znjtb-YangTianT4900d-07:/home/mysqlbak# ls 
    2019-08-13_13-59-51  mysqlbackup.log  mysql_full_bak_time.log
    
    root@znjtb-YangTianT4900d-07:/home/mysqlbak# ls  2019-08-13_13-59-51/  
    backup-my.cnf  ft@002donline  ft@002dtest  ib_buffer_pool  ibdata1  mysql  performance_schema  sys  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile
    
    
    root@znjtb-YangTianT4900d-07:/home/mysqlbak# cat  mysql_full_bak_time.log mysqlbackup.log 
    Mysql fullbakup  finished, time: 20190813_140508
    

    1)准备恢复“完整备份”

    完成准备以后,最终/back可用来重建MySQL服务器。这种情况下,需要先做一个“–apply-log --redo-only ”的准备操作,以确保数据一致性:

    innobackupex  --user=root --password=XXXXXX --apply-log  --redo-only  /back
    

    2)关闭mysql服务

    systemctl  stop  mysqld 
    

    3)恢复“完整备份”

    完成准备以后,最终仍然是/back用来重建MySQL服务器,但这种情况下需确保数据库目录为空

    innobackupex --user=root --password=XXXXXX --copy-back  /back
    

    4)修改/var/lib/mysql/下文件属主与属组,查看数据:

    恢复后,/var/lib/mysql下文件属组与属主皆为root,需要更改为mysql

    chmod  -R  mysql.mysql  /var/lib/mysql 
    

    5)重启数据库,恢复完成

    systemctl start mysqld
    
    展开全文
  • mysql热备详细说明.txt

    2012-12-30 10:03:24
    mysql 主备 热备 负载平均所有东西都齐,思路浅析,实现简单明了
  • 【转】mysql热备

    2018-10-08 10:34:00
    mysql双机热备的实现 亲测可用 转载于:https://www.cnblogs.com/wpqwpq/p/9752965.html
  • Linux nginx mysql热备

    2018-11-28 15:15:51
    所以一开始用root安装的都卸载了,包括之前安装的mysql。全部改为普通用户安装,然后root把该授权的账号先麻溜给整好。 回归正题: 下载nginx,本屌下的是nginx-1.13.7.tar.gz 1、解压nginx 2、进入nginx解压...
  • 简单的mysql热备

    2018-01-11 17:45:00
    最近一直担心数据出问题,还好领导给了一台备用机,装好mysql后搜了下mysq热备相关的帖子,看似好繁琐,自己大概配置了一下擦发现起始很简单! 下边就是步骤了! 1.修改主从mysql配置文件,在mysqld字段下增加以下...
  • 准备两个mysql,A和B,A为主,B为从。...Amysql添加账户,只用于热备。语法如下:CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';grant replication slave on *.* to 'dog'@'218.206.70.146' identified...
  • MySQL热备手顺

    2017-07-28 14:36:14
    此手顺为配置、操作和维护A数据库和B数据库的MySQL热备份操作说明。 5.5版本之后需要使用命令来进行热备份,修改配置文件的方式只适应5.5之前的版本 MySQL配置热备份 说明:121.40.xxx.A 主数据库(A)  120....
  • 10 复查数据完整 11 开放用户访问 xtrabackup 备份 Xtrabackup:percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库进行热备的工具。 特点: 备份还原过程快速、可靠 备份过程不会打断正在...
  • Percona XtraBackup(https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html)是MySQL DBA备份数据库的必备神器之一了,免费、开源,支持热备和增备。这里记录一下在自己本地Ubuntu Linux的安装过程,...
  • # innobackupex --copy-back /path/to/BACKUP-DIR
  • mysqldump是mysql自带命令工具,是最基础的一款备份工具。它的备份过程就是从buffer中找到要备份的数据,如果buffer中没有,就要去磁盘中的数据文件中查找并调回到buffer里面再备份,最后形成一个可编辑的备份文件。...
  • mysql热备工具XtraBackup

    2011-06-08 15:35:39
    下载地址:http://www.percona.com/downloads/XtraBackup/ 使用详细可谷歌,这里只是mark! 例如:http://www.icavy.com/mysql/xtrabackup-hotcopy-innodb
  • windows下mysql热备

    2011-10-20 14:03:58
    MySQL主从服务器(Replication)的设置:1.首先在主服务器上为从服务器建立一个账户。2.登录从服务器使用步骤一申请的用户名和密码访问主数据库如果可以访问代表建立用户成功。只有3.2版本以上的才支持该技术。 ...
  • xtrabackup可以在不加锁的情况下备份innodb数据表,不过此工具不能操作myisam。 innobackupex是一个封装了xtrabackup的脚本,能同时处理innodb和myisam,但在处理myisam时需要加一个读锁。 按如上的介绍,由于操作...
  • 7、先停掉MySQL实例,重命名原来的数据库目录,改名为/data/mysql_bak,把新的备份目录集移动到/data下,改名为mysql,并赋予mysql的权限,再重启MySQL实例。 mysqladmin -uroot -p123 shutdown mv /data/mysql...
  • mysql热备脑裂问题补充

    千次阅读 2014-07-25 10:46:20
    当其中一台网络断了(自动退出集群节点,standalone),重新连网后:(需要重新加入集群) 对这台服务器操作: umount /drbddata drbdadm secondary r0 drbdadm disconnect r0 drbdadm -- --discard-my-data ...
  • ※增备必须是基于全备而言的,第一次增备必须是基于上一次全备。 1)先进行一次全备命令 ...innobackupex --defaults-file=/...chown mysql:mysql -R mysql mysql_safe --defaults-file=/etc/my.conf &  
  • mysql热备工具-xtrabackup-1.5

    千次阅读 2011-11-14 17:19:18
    mysql当然可以使用它本身的双机热备,但只有一台服务器就不能使用双机热备,这里说一下热备工具Xtrabackup xtrabackup-1.5下载地址http://download.csdn.net/detail/zzaihl/3794181 xtrabackup 是 percona 的一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,590
精华内容 6,636
关键字:

mysql热备

mysql 订阅