Mysql主从搭建 (基于xtrabackup)

时间:2024-04-12 20:03:54

 1 安装xtrabackup工具

安装在主库与从库上

本次编译安装不做详细介绍(太过繁琐,且要求较多),最后选择了rpm方式安装,这种方式安装非常快。

 

# yum install perl-Time-HiRes

# yum install perl-DBD-MySQL -y

#  yum install perl-Digest-MD5 -y          (依赖包)

 

下载网址:

https://www.percona.com/downloads/XtraBackup/LATEST/

 

 

# rpm -ivh percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm

 

 

 

 

 

 2 主从机制介绍

 2.1复制解决的问题

         MySQL复制技术有以下一些特点:         

(1)     数据分布 (Data distribution )       

(2)   负载平衡(load balancing)         

(3)   备份(Backups)        

(4)     高可用性和容错(High availability and failover )

 2.2 复制如何工作 

        整体上来说,复制有3个步骤:   

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

(2)  slavemasterbinary log events拷贝到它的中继日志(relay log)    

(3)   slave重做中继日志中的事件,将改变写入自身的数据。

2-2-1描述了复制的过程:

 Mysql主从搭建 (基于xtrabackup)

2-2-1

 

 

 

3 主从搭建

3.1 主库环境检测

MySQL配置主从需要主库开启bin-log日志,来记录相应操作,首先检查主库书是否开启:

命令:show variables like “log_bin”;

 Mysql主从搭建 (基于xtrabackup)

 

 

如果未开启需要关库修改配置文件(my.cnf

1.主库配置/etc/my.cnf

增加server-id 和 bin-log

# vim /etc/my.cnf

server-id = 1

log-bin = mysql-bin  

 

因为这两个参数是动态参数,不用重启主库也可以生效,直接在开库情况下设置sql>set global server_id=1等)

 

 

开库检验bin-log

Mysql主从搭建 (基于xtrabackup)

 

以上,主库环境已经符合。

 

 

3.2主库(master)配置

3.2.1 主库配置授权账号

mysql> grant replication slave on *.* to [email protected]'192.168.199.185' identified by 'slave';

mysql> flush privileges;

 Mysql主从搭建 (基于xtrabackup)

 

3.2.2 主库机器上创建备份目录

# mkdir -p /home/mysql/full_data

3.2.3 .执行全库备份

3.2.3.1.备份

# innobackupex --defaults-file=/etc/my.cnf --user=root --password=mysql    --socket=/tmp/mysql.sock    /home/mysql/full_data

 

PS:备份完成后,会在/home/mysql/full_data/目录下生成一个时间点的目录,这里是2018-05-02_05-19-52。你也可以加一个--no-timestamp参数不产生这个目录,直接备份到/backup/full_data/目录下

3.2.3.2. redo log

下面preparing,undo撤销未提交的事务,重 redo log

# innobackupex  --defaults-file=/etc/my.cnf  --user=root  --password=mysql  --apply-log   --socket=/tmp/mysql.sock   /home/mysql/full_data/2018-05-02_05-19-52

 

 

3.3从库配置

3.3.1配置文件修改

1.停止从库

# /etc/init.d/mysqld stop

 

2. 修改配置文件

从库配置/etc/my.cnf

增加server-id

# vim /etc/my.cnf

server-id = 2



3.3.2 恢复数据到从库

1.把主库备份文件拷贝到从库机器

# scp -ap /home/mysql/full_data/2018-05-03_05-19-52 [email protected]:/home/mysql

3.修改恢复文件权限

# chown -R mysql:mysql /data/mysql/  

 

4. 使用xtrabackup恢复数据

 

# innobackupex --copy-back --user=root --password=mysql /home/mysql/2018-05-02_05-19-52

 

5.开库检验

 Mysql主从搭建 (基于xtrabackup)

 

3.3.3 开始主从同步

1. 配置从库 主从配置 

#登录从库并执行

mysql > CHANGE MASTER TO   

MASTER_HOST='192.168.199.179',

MASTER_USER='root',

MASTER_PASSWORD='slave',

MASTER_LOG_FILE='mysql-bin.000003',

MASTER_LOG_POS=470;

 

PS:以上信息都是主库配置的,特别是MASTER_LOG_FILEMASTER_LOG_POS,一定要主库查看后,从库填写时保证一致

2.开始同步

mysql> start slave;

3.查看同步状态

mysql> show slave status\G

 Mysql主从搭建 (基于xtrabackup)

图上标红的一定保证是yes,主从搭建才是正常的,如果slave_IO_running出现connecting,最常见是填写主库信息时密码写错,slave_sql_runing出现no,最常见原因是事务回滚造成的

 

 

 

4 主从测试

4.1主库建库

 

命令:create database test

 Mysql主从搭建 (基于xtrabackup)

 

从库检查:

 Mysql主从搭建 (基于xtrabackup)

 

4.2主库插表

 

 Mysql主从搭建 (基于xtrabackup)

从库检查:

 Mysql主从搭建 (基于xtrabackup)

 

 

 

4.3从库进程检测

主库进程:

 Mysql主从搭建 (基于xtrabackup)

从库进程:

 Mysql主从搭建 (基于xtrabackup)

至此MySQL主从搭建全部完成