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) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变写入它自身的数据。
图2-2-1描述了复制的过程:
图2-2-1
3 主从搭建
3.1 主库环境检测
MySQL配置主从需要主库开启bin-log日志,来记录相应操作,首先检查主库书是否开启:
命令:show variables like “log_bin”;
如果未开启需要关库修改配置文件(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
以上,主库环境已经符合。
3.2主库(master)配置
3.2.1 主库配置授权账号
mysql> grant replication slave on *.* to [email protected]'192.168.199.185' identified by 'slave';
mysql> flush privileges;
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.开库检验
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_FILE、MASTER_LOG_POS,一定要主库查看后,从库填写时保证一致
2.开始同步
mysql> start slave;
3.查看同步状态
mysql> show slave status\G;
图上标红的一定保证是yes,主从搭建才是正常的,如果slave_IO_running出现connecting,最常见是填写主库信息时密码写错,slave_sql_runing出现no,最常见原因是事务回滚造成的,
4 主从测试
4.1主库建库
命令:create database test;
从库检查:
4.2主库插表
从库检查:
4.3主从库进程检测
主库进程:
从库进程:
至此MySQL主从搭建全部完成