mysql数据库备份恢复
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于mysql数据库备份恢复内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在mysql数据库备份恢复相关知识领域提供全面立体的资料补充。同时还包含 machine_start、macox、magellan 的知识内容,欢迎查阅!
mysql数据库备份恢复相关知识
-
MySQL 自动备份与数据库被破坏后的恢复方法一、前言:当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态,使得数据的损失达到最小。或者说,仅仅是数据库服务器的建立,只能说明它能做些什么,并不代表它能稳定的做些什么。灾难恢复的效率及全面性,也是系统的稳定性的一个准因素,尤其对于一个服务器系统。这一节,介绍数据库自动备份以及数据库被破坏后的恢复的方法。在这里,我们使用mysqlhotcopy,并且定义一段Shell脚本来实现数据库的自动备份,并且,让整个数据自动备份与数据恢复过程都基于Shell。建立数据库备份所需条件[1] 建立自动备份脚本在这里,为了使数据库备份和恢复的符合我们的实际要求,用一段符合要求的Shell脚本来实现整个备份过程的自动化。[root@CentOS ~]# vi mysql-backup.sh ← 建立数据库自动备份脚本,如下: #!/bin/bash PATH=/usr/local/sbin:/usr/bin:/b
-
MYSQL冷备份 恢复MYSQL冷备份恢复 1. SHOW VARIABLES LIKE '%data%' 查看datadir目录,这就是所有数据的备份目录,好像只有innodb的可以直接覆盖备份 2. 停掉MYSQL服务,然后整个目录打包 3. 到另一台win电脑上,同样的,找到那台电脑的data目录, 停掉MYSQL服务,然后覆盖,再重启MYSQL服务,这时已经把整个数据库都备份过来了,包括所有的数据库 4. 自己测试,到mac上,找到数据目录,在finder里打不开,没有权限 5. 在mac上打开terminal, 输入sudo chmod 775 ,然后在finder里把Data目录拉入终端,回车,输入密码后就可以直接在finder里访问了 6. 把WIN上复制过来的备份覆盖, 注意win下的数据目录是Data, mac下的数据目录是data, 我覆盖到mac的目录下把文件 夹改名为小写data了,重启MYSQL,出错: Warning:The /usr/local/mysql/data directo
-
TODO:MongoDB MySQL数据库备份TODO:MongoDB MySQL数据库备份1. MongoDB使用命令备份mongodump进行整个数据库备份,主要用到的命令参数:-d 要备份的数据库-o 输出的路径./mongodump –d databasename –o /data/dbbak备份成功后会在/data/dbbak创建以数据库名的文件夹,文件夹下都是备份文件2. MongoDB使用命令还原mongorestore进行数据库还原,主要用到的命令参数:-d 要恢复的数据库-directoryperdb 备份数据库所在目录,要到数据库名文件夹-drop 先删掉数据,然后恢复备份数据,需谨慎使用./mongorestore –d databasename –directoryperdb /data/dbbak/databasename3. MongoDB备份整个dbpath,这个是最简单的方法。但是比较费硬盘资源,偷懒的时候就是直接备份dbpath4. MySQL使用命令备份mysqldump进行整个数据库备份,主要用到的命令参数:-u
-
MySQL 从全库备份中恢复指定的表和库示例MySQL 从备份数据库中恢复指定的表和库示例在Mysqldump官方工具中,如何只恢复某个库呢?全库备份[root@HE1 ~]# mysqldump -uroot -p --single-transaction -A --master-data=2 >dump.sql只还原erp库的内容[root@HE1 ~]# mysql -uroot -pMANAGER erp --one-database <dump.sql可以看出这里主要用到的参数是--one-database简写-o的参数,极大方便了我们的恢复灵活性。那么如何从全库备份中抽取某张表呢,全库恢复,再恢复某张表小库还可以,大库就很麻烦了,那我们可以利用正则表达式来进行快速抽取,具体实现方法如下: 从全库备份中抽取出t表的表结构?root@HE1 ~]# sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `t`/!d;q' dump.sql D
mysql数据库备份恢复相关课程
mysql数据库备份恢复相关教程
- MySQL 数据库的备份与恢复 数据库的备份与恢复,一直都是DBA最为重要的工作,任何生产环境的数据库都必须有完整的备份方案与恢复测试。本小节将主要介绍MySQL的备份与恢复。
- 1. 完全恢复 MySQL 中,逻辑备份的完全恢复相对比较简单,一般包含两个步骤:恢复最新的全备文件shell> mysql -uroot -p < backup.sql恢复日志文件shell> mysqlbinlog binlog-file | mysql -uroot -p实际案例:完整的mysqldump备份与恢复1. 中午12点,备份数据库[mysql@localhost ~]$ mysqldump --single-transaction -F -uroot -p --databases tempdb > /tmp/db_tempdb.sqlEnter password: [mysql@localhost ~]$ ls -lrt db_tempdb.sql -rw-r--r-- 1 mysql mysql 19602842 Jul 23 12:01 db_tempdb.sql参数 --single-transaction 表示给 InnoDB 表生成快照,保持数据一致性参数 -F 表示生成一个新的日志文件此时表 customer 的数据如下:mysql> select * from customer;+----+-----------+------------+------------+--------+---------+| id | last_name | first_name | birth_date | gender | balance |+----+-----------+------------+------------+--------+---------+| 1 | 111 | 111 | 1998-01-25 | 1 | 10 || 2 | 222 | 222 | 2020-07-15 | 1 | 20 |+----+-----------+------------+------------+--------+---------+2 rows in set (0.00 sec)2. 13点,表 customer 插入新的数据:mysql> insert into customer(id,last_name,first_name,birth_date,gender,balance) values(3,333,333,'2020-08-10',1,30);Query OK, 1 row affected (0.00 sec)mysql> insert into customer(id,last_name,first_name,birth_date,gender,balance) values(4,444,444,'2020-09-10',1,40);Query OK, 1 row affected (0.00 sec)3. 14点,数据库故障,需要恢复数据:[mysql@localhost ~]$ mysql -uroot -p tempdb < /tmp/db_tempdb.sqlEnter password: 恢复后表 customer 的数据如下:mysql> select * from customer;+----+-----------+------------+------------+--------+---------+| id | last_name | first_name | birth_date | gender | balance |+----+-----------+------------+------------+--------+---------+| 1 | 111 | 111 | 1998-01-25 | 1 | 10 || 2 | 222 | 222 | 2020-07-15 | 1 | 20 |+----+-----------+------------+------------+--------+---------+2 rows in set (0.00 sec)4. 从 binlog 日志恢复 12 点备份以来的数据(mysql-bin.000021 为 12 点备份后产生的新的 binlog 日志):[mysql@localhost ~]$ mysqlbinlog mysql-bin.000021 | mysql -uroot -p tempdbEnter password: 恢复日志后,表 customer 的数据如下:mysql> select * from customer;+----+-----------+------------+------------+--------+---------+| id | last_name | first_name | birth_date | gender | balance |+----+-----------+------------+------------+--------+---------+| 1 | 111 | 111 | 1998-01-25 | 1 | 10 || 2 | 222 | 222 | 2020-07-15 | 1 | 20 || 3 | 333 | 333 | 2020-08-10 | 1 | 30 || 4 | 444 | 444 | 2020-09-10 | 1 | 40 |+----+-----------+------------+------------+--------+---------+4 rows in set (0.00 sec)表 customer 的数据全部恢复。
- 3. 备份方案的设计 将RPO和RTO定义清楚,可以更好地指导备份策略。一般来说,能承受的数据丢失越多,备份就越简单。一个好的备份方案,需要考量以下几点:对于较大数据库(个人经验是整个数据文件大于50GB),物理备份是必须的,备份工具Percona XtraBackup和MySQL Enterprise Backup是比较好的选择。对于较小的数据库,逻辑备份就可以满足备份需求,备份工具mysqldump是比较好的选择;确保MySQL的log-bin选项是打开的,有了binlog,MySQL才能做完整的恢复、基于时间点的恢复、以及基于位置的恢复;备份二进制日志,用于故障时间点的恢复;在存储资源许可的条件下,保留足够多的备份集;定期从备份中进行恢复测试;需确保备份文件是有效的,是可以恢复的;通过恢复演练,测算恢复锁需要的实际时间,以及所需要的资源,如CPU、磁盘空间、内存、网络等。
- 2. 不完全恢复 逻辑恢复中,mysqlbinlog 的不完全恢复方法,同样适用于物理备份的不完全恢复。1.13 点,运维人员误删除表 customer,可以用备份和 binlog 日志恢复到故障前(中午12点,物理备份数据库)从备份文件目录找到 binlog 位置文件 xtrabackup_binlog_info,查看备份结束时 binlog 的位置:[root@localhost ~]# cd /mysql/dbbackup[root@localhost ~]# ls -l-rw-r----- 1 root root 433 Aug 24 12:11 backup-my.cnf-rw-r----- 1 root root 42884 Aug 24 12:11 ib_buffer_pool-rw-r----- 1 root root 104857600 Aug 24 12:11 ibdata1-rw-r----- 1 root root 1048576000 Aug 24 12:11 ib_logfile0-rw-r----- 1 root root 1048576000 Aug 24 12:11 ib_logfile1-rw-r----- 1 root root 1048576000 Aug 24 12:11 ib_logfile2-rw-r----- 1 root root 12582912 Aug 24 12:11 ibtmp1drwxr-x--- 2 root root 4096 Aug 24 12:11 mysqldrwxr-x--- 2 root root 4096 Aug 24 12:11 performance_schemadrwxr-x--- 2 root root 12288 Aug 24 12:11 sysdrwxr-x--- 2 root root 4096 Aug 24 12:11 tempdb-rw-r----- 1 root root 166 Aug 24 12:11 xtrabackup_binlog_info-rw-r--r-- 1 root root 21 Aug 24 12:11 xtrabackup_binlog_pos_innodb-rw-r----- 1 root root 121 Aug 24 12:11 xtrabackup_checkpoints-rw-r----- 1 root root 703 Aug 24 12:11 xtrabackup_info-rw-r----- 1 root root 8388608 Aug 24 12:11 xtrabackup_logfile[root@localhost ~]# cat xtrabackup_binlog_info mysql-bin.000022 190查看当前的 binlog 文件mysql> show master logs;+------------------+-----------+| Log_name | File_size |+------------------+-----------+| mysql-bin.000018 | 245704317 || mysql-bin.000019 | 1078 || mysql-bin.000020 | 781 || mysql-bin.000021 | 483 || mysql-bin.000022 | 757 || mysql-bin.000023 | 190 |+------------------+-----------+6 rows in set (0.00 sec)恢复备份文件(参考完全备份步骤),然后使用 binlog 日志跳过故障时间点,完成恢复-- 恢复备份文件(参考完全备份步骤)完全恢复-- 使用binlog日志恢复到故障前[mysql@localhost ~]$ mysqlbinlog --start-position="190" --stop-datetime="2020-08-24 12:59:59" mysql-bin.000022 mysql-bin.000023 | mysql -uroot -p tempdbEnter password:-- 使用binlog日志跳过故障时间点[mysql@localhost ~]$ mysqlbinlog --start-datetime="2020-08-24 13:01:00" mysql-bin.000022 mysql-bin.000023 | mysql -uroot -p tempdbEnter password:
- 2.1 基于时间点恢复 以下是基于时间点恢复的操作步骤:1. 13点,运维人员误删除表 customer,可以用备份和 binlog 日志恢复到故障前(中午 12 点,备份数据库)[mysql@localhost ~]$ mysql -uroot -p tempdb < /tmp/db_tempdb.sqlEnter password: [mysql@localhost ~]$ mysqlbinlog --stop-datetime="2020-07-23 11:59:59" mysql-bin.000021 | mysql -uroot -p tempdbEnter password:2. 跳过故障时间点,继续使用后面的binlog日志完成恢复。[mysql@localhost ~]$ mysqlbinlog --start-datetime="2020-07-23 12:01:00" mysql-bin.000021 | mysql -uroot -p tempdbEnter password:基于时间的恢复,稍显粗糙,因为同一时间点可能会有很多条 sql 在执行,那就会跳过一些正常执行的sql。一般我们会考虑使用更为精确的基于位置的恢复。
- 1. 完全恢复 MySQL 中,物理备份的完全恢复相对比较简单,下面来看个案例:实际案例:全量备份恢复恢复数据一致性, 通过回滚未提交的事务及同步已经提交的事务至数据文件,使用得数据文件处于一致性状态。 innobackupex 通常还可以使用 --user-memory 选项来指定其可以使用的内存的大小,如果有足够的内存空间可用,可以多划分一些内存给 prepare 的过程,以提高其完成备份的速度。[root@localhost ~]# innobackupex --apply-log /mysql/dbbackup/200824 06:29:44 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!".innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)xtrabackup: cd to /mysql/dbbackup/xtrabackup: This target seems to be not prepared yet.InnoDB: Number of pools: 1xtrabackup: xtrabackup_logfile detected: size=8388608, start_lsn=(14533834254)......InnoDB: 5.7.13 started; log sequence number 14533834773xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: FTS optimize thread exiting.InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 14533834792200824 06:30:35 completed OK!恢复备份文件至数据目录:[root@localhost ~]# service mysqld stopShutting down MySQL.... SUCCESS![root@localhost ~]# mv /mysql/data/ /mysql/data_bak[root@localhost ~]# mkdir /mysql/data[root@localhost ~]# innobackupex --default-file=/etc/my.cnf --copy-back --rsync /mysql/dbbackup/200824 06:44:20 innobackupex: Starting the copy-back operationIMPORTANT: Please check that the copy-back run completes successfully. At the end of a successful copy-back run innobackupex prints "completed OK!".innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)200824 06:44:20 [01] Copying ib_logfile0 to /mysql/data/ib_logfile0200824 06:44:28 [01] ...done......200824 06:44:59 [01] Creating directory /mysql/data/2020-09-01_06-42-14200824 06:44:59 [01] ...done.200901 06:44:59 completed OK![root@localhost ~]# chown -R mysql:mysql /mysql/data[root@localhost ~]# service mysqld startStarting MySQL.. SUCCESS! 恢复后检查数据一致性:mysql> use tempdbDatabase changedmysql> select * from customer;+----+-----------+------------+------------+--------+---------+| id | last_name | first_name | birth_date | gender | balance |+----+-----------+------------+------------+--------+---------+| 1 | 111 | 111 | NULL | 1 | 10 || 2 | 222 | 222 | 2020-07-15 | 1 | 20 |+----+-----------+------------+------------+--------+---------+2 rows in set (0.01 sec)
mysql数据库备份恢复相关搜索
-
mac osx
machine_start
macox
magellan
malloc
manifest
manifest文件
map
map 遍历
mapreduce编程
maps google com
margin
margin bottom
margin left
margin right
margin top
marginbottom
marginheight
marginleft
margintop