数据库

mysql备份与恢复

2018-12-15  本文已影响184人  SkTj

导出所有数据库

mysqldump -q --single-transaction -A >all.sql

导出某几个数据库

mysqldump -q --single-transaction -B db1 db2 >a.sql

导出某几张表

mysqldump -q --single-transaction -B db1.a db2.c >a.sql

导出表结构

mysqldump -q -d --skip-triggers

导出存储过程

mysqldum -q -Rtdn --skip-triggers

导出触发器

mysqldump -q -tdn --skip-triggers

导出事件

mysqldump -q -Etdn --skip-triggers

导出数据

mysqldump -q --single-transaction --skip-triggers -t

建立新slave

mysqldump -q --single-transaction --master-data=2 -A>all.sql

恢复
mysql -uroot -p1222 <all.sql


mydumper 性能比mysqldump 性能快10倍
安装


image.png

mydumper -uroot -pxxx -B db1 db2 -o a.sql
myloader -uroot -pxx


全量备份脚本:

!/bin/bash

mkdir /backup
cd /backup
datadir=date +"%Y-%m-%d"
mkdir -p datadir/data path=/usr/local/mysql/data for i in `mysql -uroot -p123456 -e "show databases"|grep -v "Database"` do mysqldump -uroot -p123456 --default-character-set=utf8 \ -q --lock-all-tables --flush-logs -E -R --trigger -Bi|gzip>/backup/datadir/data/i_datadir.sql.gz done binlog_rm=`tail -n 1 %path/mysql-bin.index|sed 's/.\///'` mysql -uroot -p123456 -e "purge binary logs tobinlog_rm"

凌晨1点


增量备份

!/bin/bash

cd /backup
datadir=date +"%Y-%m-%d"
mkdir -p datadir/data path=/usr/local/mysql/data mysqladmin -uroot -p123456 flush-logs binlog_cp=`head -n -1path/mysql-bin.index|sed 's/.///'for i in $binlog_cp do mysql -uroot -p123456 -e "\cp -p $path/$i /backup/$datadir/data/;" done binlog_rm=tail -n 1 path/mysql-bin.index|sed 's/.\///'` mysql -uroot -p123456 -e "purge binary logs to 'binlog_rm'"


热备份工具:xtrabackup
安装


全量 备份所有

innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf /bak/

备份数据库

innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --databases=/bak/

恢复

1、mysqld stop
2、删除数据文件和事务日志文件
3、innobackupex --defaults-file=/etc/my.cnf --apply-log /bak/2013xxxxx
4、innobackupex --defaults-file=/etc/my.cnf --copy-back /bak/2013xxxx
5、chown -R mysql.mysql /usr/local/mysql/data
6、mysqld start


上一篇下一篇

猜你喜欢

热点阅读