MYSQL学习总结(四):MYSQL的恢复和备份
程序员文章站
2022-04-08 21:03:10
...
#使用mysqldump备份所有库
Mysqldump –opt –master-data –single-transaction –u root –ppassword –all –database > all.sql
参数说明:--opt 好像是默认选项,不加也可以,主要作用是防止库太大,不加的话会把结果先放进内存,这样会出问题
--master-data 这个主要是在结果上显示导出的位置(二进制日志的pos)
--single-transaction 这个是相对于innoDB引擎起作用的,类似于flush table with read lock吧;
#使用mysqldump备份一个库
Mysqldump –u root –ppassword databasename > databasename.sql
#使用mysqldump备份一个表(即导出一个表数据)
Mysqldump –u root –ppassword –databases databasename –tables tablename > tablename.sql
#使用mysqldump压缩备份
Mysqldump –u root –ppassword databasename | gzip > databasename.sql.gz
#mysqldump的恢复
Gunzip < databasename.sql.gz | mysql –u root –ppassword databasename
Mysql –u root –ppassword databasename < databasename.sql
也可以登陆进mysql,然后运行source /tmp/databasename.sql
#使用mysqlhotcopy备份库
Mysqlhotcopy –uroot –p=password databasename /bakup/备份目录
#使用mysqlhotcopy备份某一个表
Mysqlhotcopy –u root –p=password databasename./tablename/ /backup/备份目录
#使用mysqlhotcopy备份库并增加备份记录
Mysqlhotcopy –u root –p=password –checkpoint=hotcopy.checkpoint databasename /bakup/备份记录
参数说明:将每次执行备份的记录保存在hotcopy库-checkpoint表中,需要事先创建好库和表
如:create databases hotcopy;
Use hotcopy;
Create table checkpoint (time_stamp timestamp not null,src varchar(32),dest varchar(32),msg varcher(255));
#恢复hotcopy备份的库
直接将数据库目录拷贝至数据库的数据目录即可,注意目录的权限。
#mysqldump和mysqlhotcopy的区别和个人理解
Mysqlhotcopy只适用于MYISAM引擎的表;
使用mysqlhotcopy必须要安装perl-DBI、perl-DBD-mysql模块
二者执行时都会自动锁表
恢复时mysqlhotcopy的备份文件需要拷至目标目录覆盖,mysqldump需要把备份文件导入到原库
#基于二进制日志的恢复
Mysqlbinlog mysql-bin.XXXXX | mysql –u root –ppassword // 恢复整个mysql-bin.XXXX二进志文件
Mysqlbinlog –start-datatime=”2014-02-28 10:00:00” –stop-datatime=”2014-02-28 12:00:00” mysql-bin.XXXX | mysql –u root –ppassword //恢复mysql-bin.XXXX中从10点到12点的部分操作
Mysqlbinlog –start-position=’3000’ –stop-position=’5000’ mysql-bin.XXXX | mysql –u root –ppassword //恢复mysql-bin.XXXX 中位置从3000-5000的部分。可以使用mysqlbinlog工具将二进制日志导出后,找到位置。 如:mysqlbinlog /var/mysql-bin.XXXX >/tmp/binlogXXXX.txt
Mysqldump –opt –master-data –single-transaction –u root –ppassword –all –database > all.sql
参数说明:--opt 好像是默认选项,不加也可以,主要作用是防止库太大,不加的话会把结果先放进内存,这样会出问题
--master-data 这个主要是在结果上显示导出的位置(二进制日志的pos)
--single-transaction 这个是相对于innoDB引擎起作用的,类似于flush table with read lock吧;
#使用mysqldump备份一个库
Mysqldump –u root –ppassword databasename > databasename.sql
#使用mysqldump备份一个表(即导出一个表数据)
Mysqldump –u root –ppassword –databases databasename –tables tablename > tablename.sql
#使用mysqldump压缩备份
Mysqldump –u root –ppassword databasename | gzip > databasename.sql.gz
#mysqldump的恢复
Gunzip < databasename.sql.gz | mysql –u root –ppassword databasename
Mysql –u root –ppassword databasename < databasename.sql
也可以登陆进mysql,然后运行source /tmp/databasename.sql
#使用mysqlhotcopy备份库
Mysqlhotcopy –uroot –p=password databasename /bakup/备份目录
#使用mysqlhotcopy备份某一个表
Mysqlhotcopy –u root –p=password databasename./tablename/ /backup/备份目录
#使用mysqlhotcopy备份库并增加备份记录
Mysqlhotcopy –u root –p=password –checkpoint=hotcopy.checkpoint databasename /bakup/备份记录
参数说明:将每次执行备份的记录保存在hotcopy库-checkpoint表中,需要事先创建好库和表
如:create databases hotcopy;
Use hotcopy;
Create table checkpoint (time_stamp timestamp not null,src varchar(32),dest varchar(32),msg varcher(255));
#恢复hotcopy备份的库
直接将数据库目录拷贝至数据库的数据目录即可,注意目录的权限。
#mysqldump和mysqlhotcopy的区别和个人理解
Mysqlhotcopy只适用于MYISAM引擎的表;
使用mysqlhotcopy必须要安装perl-DBI、perl-DBD-mysql模块
二者执行时都会自动锁表
恢复时mysqlhotcopy的备份文件需要拷至目标目录覆盖,mysqldump需要把备份文件导入到原库
#基于二进制日志的恢复
Mysqlbinlog mysql-bin.XXXXX | mysql –u root –ppassword // 恢复整个mysql-bin.XXXX二进志文件
Mysqlbinlog –start-datatime=”2014-02-28 10:00:00” –stop-datatime=”2014-02-28 12:00:00” mysql-bin.XXXX | mysql –u root –ppassword //恢复mysql-bin.XXXX中从10点到12点的部分操作
Mysqlbinlog –start-position=’3000’ –stop-position=’5000’ mysql-bin.XXXX | mysql –u root –ppassword //恢复mysql-bin.XXXX 中位置从3000-5000的部分。可以使用mysqlbinlog工具将二进制日志导出后,找到位置。 如:mysqlbinlog /var/mysql-bin.XXXX >/tmp/binlogXXXX.txt
以上就是MYSQL学习总结(四):MYSQL的恢复和备份的内容,更多相关内容请关注PHP中文网(www.php.cn)!
推荐阅读