基础备份
mysqldump [OPTIONS] database [tables ...] //备份某张表
mysqldump [OPTIONS] --all-databases [OPTIONS] //全量备份
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] //备份某个库
//常用的OPTIONS:
-uUSERNAME //指定数据库用户名
-hHOST //指定服务器主机,请使用ip地址
-pPASSWORD //指定数据库用户的密码
-P# //指定数据库监听的端口,这里的#需用实际的端口号代替,如-P3307
数据恢复
- 恢复数据库时
[root@localhost ~]#mysql -uroot -p (-h127.0.0.1) < all-201808131500.sql
- 恢复表时
[root@localhost ~]#mysql -uroot -p (-h127.0.0.1) 库名< all-201808131500.sql
差异备份与恢复
mysql差异备份
- 开启MySQL服务器的二进制日志功能
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
user = mysql
pid-file = /tmp/mysql.pid
skip-name-resolve
server-id=1 //设置服务器标识符
log-bin=mysql_bin //开启二进制日志功能
[root@localhost ~]# service mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
- 完全备份
[root@localhost ~]# mysqldump -uroot -pwangqing123! --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > all-201902211406.sql
-
修改数据库
-
刷新创建新的二进制日志
[root@localhost ~]# mysqladmin -uroot -pwangqing123! flush-logs
3.4.2. mysql差异备份恢复
- 恢复完全备份
[root@localhost ~]# mysql -uroot -pwangqing123! < all-201902211406.sql
- 恢复差异备份
检查误删数据库的位置在什么地方
[root@localhost ~]# mysql -uroot -pwangqing123!
mysql> show binlog events in 'mysql_bin.000001'\G
使用mysqlbinlog恢复差异备份
[root@localhost ~]# mysqlbinlog --stop-position=794 /opt/data/mysql_bin.000001 |mysql -uroot -pwangqing123!