Mysql备份笔记

mysqldump备份

mysqldump -uroot -p --all-databases > /backup/mysqldump/all.sql  //备份所有数据库
mysqldump -uroot -p test > /backup/mysqldump/test.sql      //备份指定数据库
mysqldump -uroot -p  mysql database event > /backup/mysqldump/2table.mysql       //指定特定表
参数名缩写含义
–host-h服务器IP地址
–port-P服务器端口号
–user-uMySQL 用户名
–pasword-pMySQL 密码
–databases指定要备份的数据库
–all-databases备份mysql服务器上的所有数据库
–compact压缩模式,产生更少的输出
–comments添加注释信息
–complete-insert输出完成的插入语句
–lock-tables备份前,锁定所有数据库表
–no-create-db/–no-create-info禁止生成创建数据库语句
–force当出现错误时仍然继续备份操作
–default-character-set指定默认字符集
–add-locks备份数据库表时锁定数据库表
–ignore-table忽略某表

还原

1.系统行命令

mysql -uroot -p  < /backup/mysql/all.sql
mysql -uroot -p  db_name < /backup/mysql/db_name.sql

2.Source方法

source /backup/mysql/all.sql

利用Binlog增量备份

1.在/etc/my.cnf开启bin-log日志

log-bin=/data/mysql/mysql-bin  #“log-bin=”后的字符串为日志记载目录,如果不指定位置的话,默认在mysql的data目录下。

2.重启服务

systemctl restart mysqld   

3.查看binlog日志是否开启

show variables like 'log_%'

4.进行一次全备

mysqldump -uroot -p -hlocalhost -P3306 --all-databases --triggers --routines --events --single-transaction --master-data=1  --flush-logs  --set-gtid-purged=OFF > /tmp/mysql/$(date+ %F%H)-all.sql

5.查看全备截止点

sed -n '22p'  /tmp/mysql/all.sql

6.向全量备份文件里追加不记录二进制日志命令

sed -i '23a SET sql_log_bin=0;'  /tmp/mysql/all.sql

7.恢复增量数据

mysqlbinlog --start-position=155 /www/server/data/bin-log.000002 bin-log.000003 |mysql -uroot -p

Xtrabackup增量备份

1.全备

innobackupex --defaults-file=/etc/my.cnf -uroot -p /backup/

2.进行一次增量备份

mkdir /backup/up1
innobackupex --defaults-file=/etc/my.cnf -uroot -p --incremental  --incremental-basedir=/backup/2020-12-1_14-44-54 /backup/up1

3.预备完整备份

innobackupex --apply-log --redo-only /backup/2020-12-1_14-44-54/       //回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态:

4.合并增量备份

innobackupex --apply-log --redo-only /backup/2020-12-1_14-44-54/ --incremental-dir=/root/up1/2020-12-2_15-48-24

5.恢复

rm -rf /www/server/data 
innobackupex --copy-back --datadir=/www/server/data  /backup/2020-12-1_14-44-54

5.启动数据库

chown -R mysql.mysql /www/server/data 
systemctl start mysqld
上一篇
下一篇