逻辑备份--mysqldump
本博客就逻辑备份做一个较为详细的整理,希望能为各位网友带来技术和知识上的便利。如有任何不足,欢迎博客留言或者站内短信。
详看官方文档 “Chapter 7 Backup and Recovery Types” 7.4 Using mysqldump for Backups
一 备份
1 备份一个数据库
mysqldump -u用户名 -p密码 --opt dbname > filename.sql
Eg:
备份数据库starive2
-
sudo mysqldump -uroot -p密码 starive2 > /home/*****/mysql/backup/starive2.sql
逻辑备份后文件starive2.sql内容:

备份所有的数据库: ????有问题,没有成功
-
mysqldump -uroot -p*** -all-database > /home/*****/mysql/backup/alldatabase.sql
-
错误:
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
2 备份数据库starive 下的表emp:
-
sudo mysqldump -uroot -p*** starive emp > /home/*****/mysql/backup/starive_emp.sql
3 备份系统数据库Mysql下的表 db:
-
sudo mysqldump -uroot -p*** mysql db > /home/*****/mysql/backup/mysql_db.sql
4 How to make a copy a database
sudo mysqldump -uroot -p123 starive > /home/gaoyu/backup/starive.sql
sudo mysql -uroot -p123 starive2 < /home/gaoyu/backup/starive.sql
5 How to copy a database from one server to another
On Server 1:
shell> mysqldump --databases db1 > dump.sql
Copy the dump file from Server 1 to Server 2.
On Server 2:
shell> mysql < dump.sql
6 How to dump stored programs (stored procedures and functions, triggers, and events)
参数如下:
? --events: Dump Event Scheduler events
? --routines: Dump stored procedures and functions
? --triggers: Dump triggers for tables
7 How to dump definitions and data separately
sudo mysqldump -uroot -p123 --no-data starive > /home/gaoyu/backup/starive_defs.sql
sudo mysqldump -uroot -p123 --no-create-info starive > /home/gaoyu/backup/starive_data.sql
二 恢复
恢复分为完全恢复和不完全恢复。(这两者区别可参看博客:http://blog.chinaunix.net/uid-167175-id-3512379.html)
1 完全恢复
To see a listing of all binary log files, use this statement:
mysql> SHOW BINARY LOGS;
To determine the name of the current binary log file, issue the following statement:
mysql> SHOW MASTER STATUS;
语法:
-
mysql -uroot -p databasename < ***.sql
注意上面备份恢复后数据并不完整,还要将备份后执行的日志进行重做,语法如下:
-
mysqlbinlog binlog-file | msyql -u root -p databasename
Eg:
自己先把备份与恢复弄清楚。
把 /home/*****/mysql/backup下的
starive2.sql删除掉。
重新备份数据库
starive2
然后往数据库
starive2 里面插入一条记录:
insert into t1 values(3,'lili');
现在突然发生故障了,数据无法访问。需要恢复备份:
sudo mysql -uroot -p starive2 < /home/*****/mysql/backup/starive2.sql
备份后图片如下:

注意:上面的 第一个”select
*from t1;“ 是备份后恢复前的查询结果(备份后新插入了一条记录);第二个 ”select *from t1;“是恢复以后的查询结果
使用msyqlbinlog来恢复子mysqldump备份以来的binlog:
mysqlbinlog mysql-bin.000001 | mysql -u root -pgao starive2
报错如下:
The program 'mysqlbinlog' is currently not installed. You can install it
by typing:
sudo apt-get install mysql-server-5.5
?????
2 不完全恢复
2.1 基于时间点恢复
mysqlbinlog --stop-datetime="2005-04-20 9:59:59" /var/log/mysql/bin.123456 | mysql -u root -p
mysqlbinlog --start-datetime="2005-04-20 10:01:00" /var/log/mysql/bin.123456 | mysql -u root -p
2.2 基于位置恢复
(1)在shell下执行如下命令:
mysqlbinlog --start-datetime="2005-04-20 9:55:00" --stop-datetime="2005-04-20 10:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
该命令将在/tmp目录创建小的文本文件,编辑此文件,找到出错语句前后的位置号,例如前后位置号分别是 368312和368315
(2)恢复了以前的备份文件后,应从命令行输入下面的内容:
shell> mysqlbinlog --stop-position=368312 /var/log/mysql/bin.123456 | mysql -u root -p
shell> mysqlbinlog --start-position=368315 /var/log/mysql/bin.123456 | mysql -u root -p
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26435490/viewspace-1298137/
,如需转载,请注明出处,否则将追究法律责任。