• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

MySQL的备份方式

mysql技术 王占兴 23次浏览 已收录 0个评论

备份和恢复:

逻辑备份:mysqldump, mydumper, phpMyAdmin

Schema和数据存储一起、巨大的SQL语句、单个巨大的备份文件

mysqldump: 客户端,通过mysql协议连接至mysqld; 建议使用较小的数据集,不建议使用较大的备份数据集。

mysqldump [options] [db_name [tbl_name …]]

备份的数据集

-A, –all-databases  #备份所有数据库

-B db_name,… #备份指定的数据库

–databases db_name,…

-x, –lock-all-tables:锁定所有库的所有表,建议备份所有库使用;

-l, –lock-tables:对于每个单独的数据库,在启动备份前锁定其所有表,建议备份指定库使用;

–single-transaction:启动一个大的单一事务实现备份

shell> mysqldump [options] db_name [tbl_name …] #备份单个库,或库指定的一个或多个表

shell> mysqldump [options] –databases db_name …

shell> mysqldump [options] –all-databases

shell># mysqldump -uroot –databases test zabbix > /root/test.sql   #备份数据库命令

shell># mysql < heoll.sql   #执行恢复操作。

MyISAM:支持温备:锁定备份库,而后启动备份操作;

MyISAM, InnoDB: 温备

-x, –lock-all-tables:锁定所有表

-l, –lock-tables:锁定备份的表

InnoDB:支持热备

–single-transaction:启动一个大的单一事务实现备份

-B, –databases db_name1 db_name2 …:备份指定的数据库

-C, –compress:压缩传输;

命令的语法格式:

mysqldump [OPTIONS] database [tables]:备份单个库,或库指定的一个或多个表

mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]:备份一个或多个库

mysqldump [OPTIONS] –all-databases [OPTIONS]:备份所有库

其它选项:

-E, –events:备份指定数据库相关的事件调度器,event,scheduler;

-R, –routines:备份指定数据库相关的所有存储过程和存储函数;

–triggers:备份表相关的触发器;

–master-data[=#]:value

shell> mysqldump –all-databases –master-data=2 > all_databases.sql

shell> mysqldump –all-databases –flush-logs –master-data=2 > all_databases.sql

shell> mysqldump -uroot –all-databases –lock-all-tables –master-data=2 > /root/all.sql

1:记录CHANGE MASTER TO语句;此语句不被注释;

2:记录为注释语句;

–flush-logs, -F:锁定表之后执行flush logs命令; #二进制日志滚动操作

二进制日志恢复数据,通过二进制日志进行时间点还原。

# mysqlbinlog –start-position=245 /var/lib/mysql/mysql-bin.000001

# mysqlbinlog –start-position=245 /var/lib/mysql/mysql-bin.000001 > incre.sql

mysql -hHOST -u USER -p PASSWORD < incre.sql  #将备份的二进制文件导入至mysql中

注意:二进制日志文件与数据文件不应该放置于同一磁盘;

物理备份:数据文件的时间一致性?

冷备:

几乎热备:lvm2快照

1、请求锁定所有表:

mysql> FLUSH TABLES WITH READ LOCK;

2、记录二进制日志文件及事件位置:

mysql> FHULS LOGS;

mysql> SHOW MASTER STATUS;

shell# mysql -e 'SHOW MASTER STATUS' > /root/pos-`date +%F>` 

3、创建快照:

lvcreate -L SIZE -s -p r -n NAME(卷名) /dev/VG_NAME/LV_NAME

4、释放锁:

mysql> UNLOCK TABLES

5、挂载快照卷,复制数据进行备份;

cp, rsync, tar等命令复制数据;

6、备份完成之后,删除快照卷;

7、制定好策略,通过原卷备份二进制日志;

两种备份和恢复方式:

mysqldump,lvm2+cp(tar)

        mysqldump做的备份,数据还原时,是否会产生二进制日志?

mysql> SET SESSION sql_log_bin=0;

mysql> SOURCE /path/from/somefile.sql;

mysql> SET SESSION sql_log_bin=1;

Xtrabackup:

percona, www.percona.com #MySQL咨询公司

Percona Server为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升

innobackupex: 客户端工具, 以mysql协议连入mysqld,不支持离线备份

增量备份命令:# innobackupex –incremental /backups/ –incremental-basedir=/backups/2019-2-17/  

–user=

–password=

# innobackupex –apply-log /backups/2019-2-17    #数据还原的整理完全备份命令。

# innobackupex –apply-log –redo-only /backups/2019-02-27_13-53-43/ #数据还原的整理完全备份命令。

# innobackupex –apply-log –redo-only /backups/2019-02-27_13-53-43/ –incremental-dir=/backups/2019-2-17/ #整理增量备份命令

上述操作将增量备份合并的完全被上,这时可以通过上述备份进行数据恢复。

# innobackupex –apply-log –export /backups/2019-2-17/    #执行导出某张表。

# innobackupex  –copy-back  /backups/2019-2-17  #数据还原命令,使用backup下的所有内容进行数据恢复。

完整备份策略:完整备份 + 增量备份 + 二进制日志

注意:

1、将数据和二进制文件放置于不同的设备;二进制日志也应该周期性地备份;

2、将数据和备份分开存放,建议不在同一设备、同一主机、同一机房、同一地域;

3、每次灾难恢复后都应该立即做一次完全备份;

4、备份后的数据应该周期性地做还原测试;

从备份中恢复应该遵循的步骤:

1、停止MySQL服务器;

2、记录服务器配置和文件权限;

3、将备份恢复到MySQL数据目录;此步骤依赖具体的备份工具;

4、改变配置和文件权限;

5、以限制方式启动MySQL服务器:比如通过网络访问;

[mysqld]

skip-networking 

socket=/tmp/mysql-recovery.sock

6、载入额外的逻辑备份;而检查和重放二进制日志;

7、检查已经还原的数据;

8、以完全访问模式重启服务器;

其它的备份工具:

SELECT … INTO OUTFILE ''

LOAD FILE 

mylvmbackup


VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明MySQL的备份方式
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址