安装教程请查看这篇文章
innobackupex备份选项
--user= #指定数据库备份用户
--password= #指定数据库备份用户密码
--port= #指定数据库端口
--host= #指定备份主机
--socket= #指定socket文件路径
--databases= #备份指定数据库,多个空格隔开,如–databases=”dbname1 dbname2″,不加备份所有库
--defaults-file= #指定my.cnf配置文件
--apply-log #日志回滚
--incremental= #增量备份,后跟增量备份路径
--incremental-basedir= #增量备份,指上次增量备份路径
--redo-only #合并全备和增量备份数据文件
--copy-back #将备份数据复制到数据库,数据库目录要为空
--move-back #这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本
--no-timestamp #生成备份文件不以时间戳为目录名
--stream= #指定流的格式做备份,–stream=tar,将备份文件归档
--remote-host=user@ip DST_DIR #备份到远程主机
一、全量备份(主库操作)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=your_passwd --socket=/usr/local/mysql/data/mysql.sock /data/backup/
#填上自己的配置文件,用户,密码,mysql的socket的路径,备份存放路径
如果是只备份个别数据库,用–databases=database_name 选项
innobackupex --defaults-file=/etc/my.cnf --user=root --password=your_passwd --socket=/usr/local/mysql/data/mysql.sock --databases=database_name /data/backup/
二、恢复(从库操作,预先把在主库备份的文件夹传到从库)
1、关闭数据库
mysqladmin -uroot -p'passwd' -S /usr/local/mysql/data/mysql.sock shutdown
或者
systemctl stop mysqld
或者
service mysqld stop
2、备份数据目录
mv /usr/local/mysql/data /usr/local/mysql/databak
3、创建一个新的数据目录(与原来名称一样)
mkdir /usr/local/mysql/data
4、准备恢复文件
innobackupex --defaults-file=/etc/my.cnf --apply-log /data/backup/2020-12-03_11-22-15/
#通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。
5、执行恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/2020-12-03_11-22-15/
6、更改数据目录权限
chown -R mysql:mysql /usr/local/mysql/data
7、启动数据库
systemctl start mysqld
8、配置主从信息
mysql -uroot -ppassworld
CHANGE MASTER TO MASTER_HOST='10.104.xx.xx',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='gzydro16pass',MASTER_LOG_FILE='xxx',MASTER_LOG_POS=xx;
根据实际填写MASTER_HOST、MASTER_LOG_FILE和MASTER_LOG_POS
注:MASTER_LOG_FILE和MASTER_LOG_POS 查看文件xtrabackup_binlog_info
cat /data/backup/2020-12-03_11-22-15/xtrabackup_binlog_info
7、开启复制
start slave;
show slave status\G
注意:
1.执行恢复时datadir目录必须为空。除非指定innobackupex --force-non-empty-directorires选项指定,否则–copy-backup选项不会覆盖
2.在恢复之前,必须shutdown MySQL实例,你不能将一个运行中的实例恢复到datadir目录中
3.由于文件属性会被保留,大部分情况下你需要在启动实例之前将文件的属主改为mysql
增量备份,查看如下文章
用xtrabackup命令进行备份和恢复,查看如下文章