数据库的备份恢复是DBA的必修课,本文首先讲解mysqldump完整备份恢复的操作方法,演示数据库完整备份的基本过程。然后再模拟数据库遭遇灾难性破坏,配合bin-log日志实验数据库灾难性恢复的步骤。
一、mysqldump备份数据
mysqldump常用选项解析:
-u --user 用户名
-p --password 密码
-h --host=name 指定从远程主机备份(若不指定就是本机)
-l --lock-tables 指定读锁定(完成之后自动解锁)
-F --flush-logs 指定立刻刷新系统log日志,产生新的bin-log日志
-A --all-databases 所有数据库
-B --databases 指定若干个数据库:数据库名1 数据库名2
--log-error=name 指定此次备份的出错日志文件路径
A.将本地服务器上的所有数据库都备份
# /usr/local/mysql/bin/mysqldump -uroot -p123456 -lF --log-error=/root/myDump.err -A > /root/dball.sql
@ 主机:localhost
@ 数据库:所有数据库
@ 数据表:所有表
@ 错误日志:/root/myDump.err
@ 备份文件:/root/dball.sql
B.将本地服务器上的部分数据库备份
# /usr/local/mysql/bin/mysqldump -uroot -p123456 -lF --log-error=/root/myDump.err -B test zyyshop > /root/test_zyyshop.sql
@ 主机:localhost
@ 数据库:test 和 zyyshop 两个数据库
@ 数据表:所有表
@ 错误日志:/root/myDump.err
@ 备份文件:/root/test_zyyshop.sql
C.将本地服务器上的zyyshop数据库备份
# /usr/local/mysql/bin/mysqldump -uroot -p123456 -lF --log-error=/root/myDump.err -B zyyshop > /root/zyyshop.sql
@ 主机:localhost
@ 数据库:zyyshop数据库
@ 数据表:所有表
@ 错误日志:/root/myDump.err
@ 备份文件:/root/zyyshop.sql
注:当只备份一个数据库时加-B选项会在备份语句开头加有“CREATE DATABASE zyyshop”建库语句(推荐!),否则没有这条建库语句;
D.将本地服务器上的zyyshop数据库中的stu表、users表备份
# /usr/local/mysql/bin/mysqldump -uroot -p123456 -lF --log-error=/root/myDump.err zyyshop stu users > /root/zyyshop.stu_users.sql
@ 主机:localhost
@ 数据库:zyyshop数据库
@ 数据表:stu表、users表
@ 错误日志:/root/myDump.err
@ 备份文件:/root/zyyshop.stu_users.sql
注:当只备份某个库里的某些表时,格式:{库名} {表1} {表2}...
库名前是不能加-B选项的,否则系统会认为你要备份的是“zyyshop stu users”这三个数据库。
E.将远程主机(192.168.137.27)上的zyyshop数据库备份(异地备份)
# /usr/local/mysql/bin/mysqldump -uLisi -p123456 -h192.168.137.27 -lF --log-error=/root/myDump.err -B zyyshop > /root/host27.zyyshop.sql
@ 主机:192.168.137.27
@ 数据库:zyyshop数据库
@ 数据表:所有表
@ 错误日志:/root/myDump.err
@ 备份文件:/root/host27.zyyshop.sql
二、mysql命令导入恢复数据
常用选项:
-u --user 用户名
-p --password 密码
-h --host 指定向远程主机恢复(不指定就是从本机)
-v --verbose 将执行过程输出到屏幕显示
-f --force 如遇到错误sql语句就忽略,继续向下执行(如不加则可能会终止在某条错误的sql语句处)
A.假设zyyshop.sql这个备份文件是含“CREATE DATABASE zyyshop”建库语句的,则直接导入即可:
# /usr/local/mysql/bin/mysql -uroot -p123456 -v < /root/zyyshop.sql
B.假设zyyshop.sql这个备份文件不含“CREATE DATABASE zyyshop”建库语句的,则本地需要先建库再导入:
必须先登录主机并建库:
mysql> create database zyyshop;
然后再导入到指定库中:
# /usr/local/mysql/bin/mysql -uroot -p123456 -v zyyshop < /root/zyyshop22.sql
C.向远程主机(192.168.137.27)恢复数据,假设zyyshop.sql这个备份文件是含“CREATE DATABASE zyyshop”建库语句的:
# /usr/local/mysql/bin/mysql -uroot -p123456 -h192.168.137.27 -v < /root/zyyshop.sql