MySQL复制从库建立-xtracebackup方式

Percona XtraBackup工具提供了一种在系统运行时执行MySQL数据热备份的方法。

Percona XtraBackup在事务系统上执行联机非阻塞,紧密压缩,高度安全的完整备份,因此在计划的维护时段内,应用程序仍保持完全可用。

环境准备:

master:192.168.0.106:3306 
slave:192.168.0.105:3306

datadir: /data/mysql/mysql3306/data

cnfpath: /data/mysql/mysql3306/my3306.cnf

XtraBackup 安装,两台机器都安装:

下载地址:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

TheMaster$ wget https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0-7/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.7-1.el7.x86_64.rpmTheMaster$ yum install -y percona-xtrabackup-80-8.0.7-1.el7.x86_64.rpm

1、在Master制作一个备份

TheMaster$ mkdir xtrabackup_backupfilesTheMaster$ xtrabackup --defaults-file=/data/mysql/mysql3306/my3306.cnf -S /tmp/mysql3306.sock -uroot -p‘‘ --backup --target-dir=./xtrabackup_backupfiles...completed OK!

为了让快照是一致的:需要prepare备份数据:

TheMaster$ xtrabackup -S /tmp/mysql3306.sock -uroot -p --prepare --target-dir=./xtrabackup_backupfiles/...completed OK!

undo log目录需要处理下,默认会解压到xtrabackup_backupfiles目录下,在my3306.cnf中定义在/data/mysql/mysql3306/data/undolog/下,所以:

TheMaster$ cd xtrabackup_backupfiles && mkdir undolog && mv undo_* undolog/

2、复制备份数据到Slave上

使用rsync或scp将数据从Master复制到Slave。如果直接将数据同步到slave的数据目录,建议在这之前先停止mysqld。

TheMaster$ rsync -avpP -e ssh ./xtrabackup_backupfiles/ 192.168.0.105:/data/mysql/mysql3306/data/

复制数据前,您可以备份原始或先前安装的MySQL datadir(注意:在移动mysqld的内容或将快照移动到其datadir之前,请确保mysqld已关闭。):

TheSlave$ mv /data/mysql/mysql3306/data /data/mysql/mysql3306/data_bak

复制数据后,确保MySQL有权限访问

TheSlave$ chown -R mysql:mysql /data/mysql/mysql3306/data

3、创建Master上配置复制账号

TheMaster|mysql> GRANT REPLICATION SLAVE ON *.*  TO ‘repl‘@‘192.168.0.%‘ IDENTIFIED BY ‘repl‘;

测试连接

TheSlave$ mysql --host=192.168.0.106 --user=repl --password=repl
mysql> SHOW GRANTS;

4、配置Slave上的MySQL服务器

首先将my3306.cnf从TheMaster复制到TheSlave:

TheSlave$ scp [email protected]:/data/mysql/mysql3306/my3306.cnf /data/mysql/mysql3306/
TheSlave$ chown -R mysql:mysql /data/mysql/mysql3306/data/my3306.cnf

修改TheSlave上的my3306.cnf:

server-id=1053306  # 建议ip最后一位+端口号

启动TheSlave 上的 mysqld

TheSlave$ /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &

观察error.log是否有错误

TheSlave$ more /data/mysql/mysql3306/data/error.log 

5、启动复制

TheSlave$ cat /data/mysql/mysql3306/data/xtrabackup_binlog_info
mysql-bin.000012        195     e8f74dde-ed8e-11e9-8ebb-000c29f5c092:1-3

执行CHANGE MASTER语句在MySQL命令行:

TheSlave|mysql> CHANGE MASTER TO
                MASTER_HOST=‘192.168.0.106‘,
                MASTER_USER=‘repl‘,
                MASTER_PASSWORD=‘repl‘,
                MASTER_AUTO_POSITION=1;

开始复制:

TheSlave|mysql> START SLAVE;

6、检查

TheSlave|mysql> SHOW SLAVE STATUS \G
         ...
         Slave_IO_Running: Yes
         Slave_SQL_Running: Yes
         ...
         Seconds_Behind_Master: 0
         ...

看到IO和SQL线程处于运行中 (Yes)表示复制正常。

[email protected] 22:42:41 [(none)]> show slave status\G
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    16
Current database: *** NONE ***

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.106
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000016
          Read_Master_Log_Pos: 383
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 557
        Relay_Master_Log_File: mysql-bin.000016
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 383
              Relay_Log_Space: 769
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1063306
                  Master_UUID: e8f74dde-ed8e-11e9-8ebb-000c29f5c092
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set: e8f74dde-ed8e-11e9-8ebb-000c29f5c092:4
            Executed_Gtid_Set: e8f74dde-ed8e-11e9-8ebb-000c29f5c092:1-4
                Auto_Position: 1
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
       Master_public_key_path:
        Get_master_public_key: 0
            Network_Namespace:
1 row in set (0.00 sec)

原文地址:https://www.cnblogs.com/shlc/p/11701019.html

时间: 2024-08-29 10:58:19

MySQL复制从库建立-xtracebackup方式的相关文章

MySQL复制从库建立-mysqldump方式

环境准备: master:192.168.0.106:3306slave:192.168.0.105:3306 主和从都必须配置有唯一的ID(server_id:建议ip最后一组+MySQL端口号,例如:1063306,1053306) 采用gtid模式复制,需要配置mysqld开启以下两个参数 1 gtid_mode=ON 2 enforce-gtid-consistency=ON 操作步骤: 1.在master创建用于复制的账号 1 mysql> CREATE USER 'repl'@'19

Mysql复制-Slave库设置复制延迟

mysql> stop slave; mysql> change master to master_delay=10;#单位是秒 mysql> start slave; mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event ... SQL_Delay: 10 S

MySQL复制之理论篇

一.MySQL复制概述 MySQL支持两种复制方式:基于行的复制和基于语句的复制(逻辑复制).这两种方式都是通过在主库上记录 二进制日志.在备库重放日志的方式来实现异步的数据复制,其工作原理如下图: 同一时间点主库和备库的数据可能存在不一致.复制通常不会增加主库的开销,主要是启用二进制日志带来的开 销.通过复制可以将读操作指向备库来获得更好的读扩展,但对于写操作,除非设计得当,否则并不适合通过复制来 扩展写操作.在一主库多备库的架构中,写操作会被执行多次,这时候整个系统的性能取决于写入最慢的那部

Mysql复制(Master/Slave实现)

1.Mysql复制方式: * 基于行的复制(5.1中引入) * 基于语句的复制 注:都是通过在主库上记录binlog.在备库上重放日志的方式来实现异步的数据复制的.这意味着,在同一时间点备库上的数据可能与主库存在不一致性,并且无法保证主备之间的延迟. 2.应用场景: * 数据分布: Mysql复制通常不会对带宽造成很大的压力,但是基于行的复制会比传统的基于语句复制模式的带宽压力更大些. * 负载均衡: 通过Mysql复制可以装读操作分布到多个服务器上,实现对读密集型应用的优化,并且实现方便,通过

MySQL复制详解

目录: 1.简介 2.原理 3.常见复制架构 4.一主一丛异步复制演示 5.测试结果 6.额外的配置参数 7.提升备库成为主库 7.1计划内的提升 7.2计划外的提升 8.半同步复制配置演示 9.双主双写配置演示 10.处理可以忽略的错误 11.总结 1.简介:MySQL内建的复制功能是构建基于MySQL的大规模,高性能应用的基础.复制就是让一台服务器的数据和其它服务器保持同步,一台主库可以同步到多台备库上面,备库也可以作为另一台服务器的主库.主库和备库之间可以有多种不同的组合方式. 2.原理:

使用 Ansible 管理 MySQL 复制

Ansible 是一个新兴的 IT 自动化工具.本文将介绍如何通过 Ansible 配置及管理 MySQL 主.从复制环境,实现部署过程自动化,体验 Ansible 简单快速带来的快感. 简介: Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平台由 Michael DeHaan 创建,他同时也是知名软件 Cobbler 与 Func 的作者.Ansible

MYSQL 复制详解

MySql 复制介绍 MySQL复制允许将主实例(master)上的数据同步到一个或多个从实例(slave)上,默认情况 下复制是异步进行的,从库也不需要一直连接到主库来同步数据 MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库 ,也可以是一个数据库里的指定的表 MySQL复制所带来的优势在于: 扩展能力:通过复制功能可以将MySQL的性能压力分担到一个或多个slave上.这要求所有 的写操作和修改操作都必须在Master上完成,而读操作可以被分配到一个或多个s

MySQL 复制 - 性能与扩展性的基石 2:部署及其配置

原文:MySQL 复制 - 性能与扩展性的基石 2:部署及其配置 正所谓理论造航母,现实小帆船.单有理论,不动手实践,学到的知识犹如空中楼阁.接下来,我们一起来看下如何一步步进行 MySQL Replication 的配置. 为 MySQL 服务器配置复制非常简单.但由于场景不同,基本的步骤还是有所差异.最基本的场景是新安装主库和备库,总得来说分为以下几步: 在每台服务器上创建复制账号. 配置主库和备库. 通知备库连接到主库并从主库复制数据. 此外,由于主备部署需要多台服务器,但是这种要求对大多

MySQL 复制 - 性能与扩展性的基石 1:概述及其原理

原文:MySQL 复制 - 性能与扩展性的基石 1:概述及其原理 1. 复制概述 MySQL 内置的复制功能是构建基于 MySQL 的大规模.高性能应用的基础,复制解决的基本问题是让一台服务器的数据与其他服务器保持同步. 接下来,我们将从复制概述及原理.复制的配置.常见的问题及解决方法来学习 MySQL 的复制功能. 1.1 复制解决的问题 下面是复制常见的用途: 数据分布.Mysql 复制通常不会对带宽造成很大压力,但在 5.1 版本中引入的基于行的复制会比传统的基于语句的复制模式产生更大的带