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 statusG
Slave_IO_Running: Yes
Slave_SQL_Running: Yes