xtraback工具的使用和备份

 

 

http://www.cnblogs.com/gomysql/p/3650645.html

 

mysqldump

参数:

--all-databases #所有数据库

--database dbname #指定库的

--single-transaction #备份前执行transaction命令,保持数据的一致性

--lock-tables #针对备份前对当前库下的表进行锁表,只能读取数据不能写入,保证数据的一致性,一般是用于myisam引擎,对于innodb引擎一般使用--single-transaction

--lock-all-tables #在备份过程中,以锁住所有库下的所有表

=====================================================================

针对mysql不同引擎的备份参数:

如果库中既有innodb引擎又有myisam引擎时可以添加参数为:

--single-transaction -l 这两个参数的含义是:在innodb的引擎时既不会影响数据的读写,而且在myisam中是备份哪个对象,它就锁定哪个对象,相对于myisam引擎的读写影响较小。

=========================================================

xtraback工具的使用:

安装:

rpm -ivh http://mirror.centos.org/centos/6/os/x86_64/Packages/numactl-2.0.9-2.el6.x86_64.rpm

yum install rsync

yum install libaio

yum install perl-DBD-MySQL

rpm -ivh percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm --nodeps

创建备份用户,给相应的权限

grant reload,lock tables,replication client,create tablespace,super,process on *.* to xtraback@'%' identified by '123';

全备份:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtraback --password=123 --socket=/usr/local/mysql/mysqld.sock /opt/data/
|备份的目录|

恢复全备份:

首先:

innobackupex --apply-log /opt/data/2017-09-14_15-21-31/

再次进行恢复:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back --rsync /opt/data/2017-09-14_15-21-31/

最后修改data文件的权限:

chown -R /usr/local/mysql/data


增量备份:

1.全备份:

2.增量备份:

--incremental #指定增量备份的路径

--incremental-basedir= #指定上一次完全备份或增量备份的备份路径

--parallel=2   

会创建2个IO线程

命令:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtraback --password=123 --socket=/usr/local/mysql/mysqld.sock --incremental /opt/data/zeng/ --incremental-basedir=/opt/data/2017-09-14_15-21-31/ --parallel=2

ll /opt/data/zeng/
total 8
drwxr-x--- 7 root root 4096 Sep 14 15:54 2017-09-14_15-54-27

基于上次增量备份的增量备份:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtraback --password=123 --socket=/usr/local/mysql/mysqld.sock --incremental /opt/data/zeng/ --incremental-basedir=/opt/data/zeng/2017-09-14_15-54-27/ --parallel=2

ll /opt/data/zeng/
total 8
drwxr-x--- 7 root root 4096 Sep 14 15:54 2017-09-14_15-54-27
drwxr-x--- 7 root root 4096 Sep 14 16:04 2017-09-14_16-04-07

恢复增量备份

--redo-only #是否回滚未提交的数据,添加不回滚,不添加回滚数据

1.先恢复完全备份

innobackupex --apply-log --redo-only /opt/data/2017-09-14_15-21-31/

2.恢复第一次的增量备份 (添加 --redo-only参数,最后一次增量恢复去掉这个参数)

innobackupex --apply-log --redo-only /opt/data/2017-09-14_15-21-31/ --incremental-dir=/opt/data/zeng/2017-09-14_15-54-27/

3.恢复第二次的增量备份,依次恢复增量备份

innobackupex --apply-log /opt/data/2017-09-14_15-21-31/ --incremental-dir=/opt/data/zeng/2017-09-14_16-04-07/

4.对整体的完全备份进行回复,回滚那些未提交的数据 (不添加--redo-only)

innobackupex --apply-log /opt/data/2017-09-14_15-21-31/

把恢复完的备份复制到mysql的家目录中,并且给定权限,启动mysqld

/etc/init.d/mysqld stop

恢复数据:

innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back --rsync /opt/data/2017-09-14_15-21-31/

给定权限:

cd /usr/local/mysql

chown -R mysql:mysql data/

/etc/init.d mysqld start

最后检查数据的完整性。

xtraback实现在线添加从库:

参数:

--galera-info #会将master的binlog文件名和偏移量位置保存到xtrabackup_slave_info文件中

--safe-slave-backup #会暂停slave的SQL线程直到没有打开的临时表的时候开始备份。备份结束后SQL线程会自动启动,这样操作的目的主要是确保一致性的复制状态。

实例:

1.在原有的slave上进行备份:

slave1

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=xtraback --password=123 --socket=/usr/local/mysql/mysqld.sock --slave-info --safe-slave-backup --no-timestamp /opt/clone


查看xtrabackup_slave_info文件内容,这个内容就是为搭建从库时需要change master to的参数:

cat /opt/clone/xtrabackup_slave_info

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=404;

还原备份:

innobackupex --apply-log --redo-only /opt/clone/

将还原的数据文件复制到newslave上

rsync -avprP -e ssh /opt/clone/ 192.168.1.83:/opt/clone
|newslave的ip|

master上对newslave授权

在建主从的时候已经授权成功

拷贝slave1的配置文件到newslave上,并修改ID号:

scp /usr/local/mysql/my.cnf 192.168.1.83:/usr/local/mysql/
|newslave的ip|

newslave:

cat /usr/local/mysql/my.cnf|grep server

server-id = 4

在newslave上进行授权,并启动服务:

cd /usr/local/mysql/

cp -rf /opt/clone ./data

chown -R mysql:mysql data/

/etc/init.d/mysqld start

查看xtrabackup_slave_info文件内容,并在newslave上进行CHANGE MASTER TO

change master to master_host='192.168.1.218',master_user='repl',master_password='123',master_log_file='mysql-bin.000002',master_log_pos=404;

启动io线程,查看slave的状态:

mysql> start slave;

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

posted @ 2021-04-16 07:11  技术颜良  阅读(307)  评论(0编辑  收藏  举报