一、全备
-- 删除8天前备份
-- find /data/mysqldata/back_dir/ -maxdepth 1 -mtime +8 -type d -exec rm -rf {} \;
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=密码 --no-lock /data/mysqldata/back_dir/
全备恢复整库则直接使用全备文件夹即可;
全备恢复单库、单表
将备份文件复制到20220809文件夹
cp backup-my.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 xtrabackup_binlog_info xtrabackup_binlog_pos_innodb xtrabackup_checkpoints xtrabackup_info xtrabackup_logfile xtrabackup_master_key_id /data/mysqldata2/20220809/
cp -r mysql performance_schema 数据库 /data/mysqldata2/20220809/
删除ib_logfile0 ib_logfile01
/data/mysqldata/log/relay_log/ib_logfile0
rm -rf ib_logfile0 ib_logfile1
应用redo日志
innobackupex --defaults-file=/etc/my.cnf --apply-log /data/mysqldata2/20220809/
复制文件
innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysqldata2/20220809/
chown -R mysql:mysql /data/mysqlnew
chown mysql:mysql ib_logfile0 ib_logfile1
删除ib_logfile0 ib_logfile01
/data/mysqldata/log/relay_log/ib_logfile0
rm -rf ib_logfile0 ib_logfile1
systemctl start mysqld.service
二、增备:
先进行全备
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=密码 --no-lock /data/mysqldata/back_dir/
增备
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=密码 --no-lock --incremental /data/mysqldata/back_inc_dir/ --incremental-basedir=$FULLBACKUP
其中$FULLBACKUP= /data/mysqldata/back_dir/时间戳
$INCREMENTALBACKUP= /data/mysqldata/back_inc_dir/ 时间戳
恢复全备
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only $FULLBACKUP
增备应用于全备
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only $FULLBACKUP --incremental-dir=$INCREMENTALBACKUP
将所有部分放在一起后,再次准备完整备份(基本 + 增量)以回滚待处理的事务:
innobackupex --defaults-file=/etc/my.cnf --apply-log $FULLBACKUP
剩余步骤和全备恢复相同
-------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
mysqldump -u root -p --single-transaction --set-gtid-purged=OFF --databases test --tables test> /data/back_dir/`date +%Y%m%d%H%M`.sql
find /data/back_dir/ -mtime +5 -name "*.sql" -exec rm -rf {} \;
crontab -e
10 5 * * * sh /data/back_dir/test.sh
```````
mysqldump 参数
--host=host_name, -h host_name
MySQL 数据库主机地址,默认为 localhost。
示例:mysqldump -uroot -p --host=localhost --all-databases
--port=port_num, -P port_num
连接数据库端口号
--user=user_name, -u user_name
指定连接数据库的用户名。
--password[=password], -p[password]
连接数据库的密码
--all-databases, -A
导出全部数据库的全部表。示例:mysqldump -uroot -p --all-databases
--databases,