• Xtrabackup在线添加从库


      MySQL添加从库一般就两种方法,一种是通过MySQL自带的mysqldump命令,这种属于逻辑备份,备份和恢复的时间都比较长,而且会锁表,一般应用于数据量比较少的场合。另外一种是第三方开源工具Xtrabackup,这工具属于物理备份,备份和恢复时间都比较快而且不锁表,更多介绍可以到它官网上面参考https://www.percona.com/

    实验环境:
    Master:192.168.1.18 CentOS release 7.5 (Final) MySQL 5.7.32
    Slave :192.168.1.19 CentOS release 7.5 (Final) MySQL 5.7.32

    Master:
    # innobackupex --user=root --password=redhat --defaults-file=/etc/my.cnf --no-timestamp /data/backup/slave

    Slave
    # innobackupex --user=root --password=redhat --defaults-file=/etc/my.cnf --apply-log /data/backup/slave
    # innobackupex --user=root --password=redhat --defaults-file=/etc/my.cnf --copy-log /data/backup/slave

    Slave:
    # service mysqld stop #先关闭数据库
    # mkdir /usr/local/mysql/data_bak #创建一个备份原来数据的文件夹
    # mv /usr/local/mysql/data/* /usr/local/mysql/data_bak/ #将原来的数据迁移到这个备份文件夹上面。

    Master:
    # rsync -avz /data/backup/slave/ root@192.168.1.19:/usr/local/mysql/data/ #将备份出来的数据同步到从库数据库的data目录

    Slave:
    # ll /usr/local/mysql/data
    total 178228
    -rw-r--r--. 1 root root 295 Feb 2 10:40 backup-my.cnf #包含备份所必须的一些初始化参数。
    drwx------. 2 root root 4096 Feb 2 10:40 db01
    -rw-r-----. 1 root root 79691776 Feb 2 10:43 ibdata1
    -rw-r--r--. 1 root root 50331648 Feb 2 10:43 ib_logfile0
    -rw-r--r--. 1 root root 50331648 Feb 2 10:43 ib_logfile1
    drwx------. 2 root root 4096 Feb 2 10:40 mysql
    drwxr-xr-x. 2 root root 4096 Feb 2 10:40 performance_schema
    drwx------. 2 root root 4096 Feb 2 10:40 sharelinux
    drwxr-xr-x. 2 root root 4096 Feb 2 10:40 test
    -rw-r--r--. 1 root root 21 Feb 2 10:40 xtrabackup_binlog_info #记录备份时的二进制日志文件的位置。
    -rw-r--r--. 1 root root 22 Feb 2 10:43 xtrabackup_binlog_pos_innodb
    -rw-r-----. 1 root root 91 Feb 2 10:43 xtrabackup_checkpoints #记录LSN以及备份的类型。
    -rw-r--r--. 1 root root 638 Feb 2 10:40 xtrabackup_info #记录binlog和pos的位置。
    -rw-r-----. 1 root root 2097152 Feb 2 10:43 xtrabackup_logfile #备份日志文件,里面记录备份操作过程中数据库的变更。
    drwx------. 2 root root 12288 Feb 2 10:40 zabbix

    Slave:
    # chown -R mysql:mysql /usr/local/mysql/data #将权限更改为mysql
    # service mysqld start

    Master:
    mysql> grant replication slave,replication client on *.* to 'repl'@'192.168.1.19' identified by 'mysql'; #在Master的数据库中建立一个备份帐户

    Slave:
    # mysql -h 192.168.1.18 -u repl -p mysql
    mysql> show grantsG;
    *************************** 1. row ***************************
    Grants for sharelinux@192.168.1.19: GRANT REPLICATION SLAVE ON *.* TO 'sharelinux'@'192.168.1.19' IDENTIFIED BY PASSWORD '*84BB5DF4823DA319BBF86C99624479A198E6EEE9'

    Slave:
    # scp root@192.168.1.18:/etc/my.cnf /etc/my.cnf      #拷贝主库的my.cnf替换从库的my.cnf,并将server_id的值更改为2。
    # service mysqld restart

    # cat /usr/local/mysql/data/xtrabackup_binlog_info #记录备份时的二进制日志文件的位置。
    mysql-bin.000002 120

    mysql> change master to master_host='192.168.1.18',master_user='repl',master_password='mysql',master_log_file='mysql-bin.000002',master_log_pos=120;
    mysql> start slave;
    mysql> show slave statusG;
    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 192.168.161.128
    Master_User: sharelinux
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000004
    Read_Master_Log_Pos: 120
    Relay_Log_File: node2-relay-bin.000004
    Relay_Log_Pos: 283
    Relay_Master_Log_File: mysql-bin.000004
    Slave_IO_Running: Yes   #必须为Yes
    Slave_SQL_Running: Yes  #必须为Yes
    ....................................
    通过Xtrabackup在线添加从库就完成。Xtrabackup可以使MySQL维护工作变得更加简单化。

  • 相关阅读:
    Freemaker:操作集合
    win10:在关闭防火墙下如何屏蔽特定端口
    win10:家庭版开启组策略
    oracle:10g下载地址(转载)
    mybatis:延迟加载时不要在get/set方法上面添加final关键字(原创)
    mybatis:在springboot中的配置
    mybatis:访问静态变量或方法
    maven:手动安装JAR到本地仓库
    datatables日常使用集合
    python 装饰器
  • 原文地址:https://www.cnblogs.com/OrcinusOrca/p/14768124.html
Copyright © 2020-2023  润新知