mysql备份相关知识
-
MySQL 备份策略浅谈MySQL备份方法有许多种,要根据业务需求来制定适合自已的方案,以前在QQ群里经常见到有朋友询问如何备份的事情,也时常会有热心的朋友答复:做主从,然后在从上备份就行了,这个方法勉强能用,可是很多朋友们的生产环境大多是单台DB,就像我所在的游戏行业,一款游戏可能开几百组服务器,做个主从,是不可能的事情,毕竟成本很重要,我就说下目前我所知道的备份方法:1,主从架构,在从上做备份。 2,对于单台服务器,如果存储引擎是innodb格式的,可以采用binlog来实时热备份,这种方式的优点:实时热备,数据完整,但需要注意磁盘空间。还有一种方法就是用xtrabackup,关于xtrabackup具体的使用方法我会在下一篇文章中说明。 3,mysqldump --single-transaction假如我们的表为事务存储引擎InnoDB表或BDB表,此选项不会干扰对表的读写。因为数据库是可以做到所读取的数据处于同一个时间点的。 4,文件系统快照(LVM)在线备份。 &nb
-
MySQL备份原理详解本文为大家介绍了MySQL备份原理,欢迎大家阅读。备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低。衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间。这篇文章主要讨论MySQL的备份方案,重点介绍几种备份方式的原理,包括文件系统快照(LVM),逻辑备份工具Mysqldump,Mydumper,以及物理备份工具Xtrabackup,同时会详细讲解几种方案的优缺点,以及可能遇到的问题。冷备份最简单的备份方式就是,关闭MySQL服务器,然后将data目录下面的所有文件进行拷贝保存,需要恢复时,则将目录拷贝到需要恢复的机器即可。这种方式确实方便,但是在生产环境中基本没什么作用。因为所有的机器都是要提供服务的,即使是Slave有时候也需要提供只读服务,所以关闭MySQL停服备份是不现实的。与冷备份相对应的一个概念是热备份,所谓热备份是在不影响MyS
-
MySQL备份与恢复之真实环境使用冷备 在上一篇文章(MySQL备份与恢复之冷备)中,我们提到了冷备。但是有个问题,我们存储的数据文件是保存在当前本地磁盘的,如果这个磁盘挂掉,那我们存储的数据不就丢失了,这样备份数据不就功亏一篑,劳而无功。所以真实环境中我们多准备几块磁盘,然后再在这些磁盘上搭建LVM,把MySQL的数据目录挂载到LVM上,这样数据就不是存储在当前磁盘上,就可以保证数据的安全性。示意图 真实环境使用冷备模拟第一步,需要提前规划好磁盘,这里做模拟,添加两磁盘 第二步,对磁盘进行分区?1234567[root@serv01 ~]# fdisk /dev/sdb[root@serv01 ~]# fdisk /dev/sdc [root@serv01 ~]# ll /dev/sd[bc]1brw-rw----. 1 root disk 8, 17 Sep 10 18:06 /dev/sdb1brw-rw----. 1 root disk
-
MySQL 备份和恢复(二)基于LVM实现几乎热备LVM(Logical Volume Management逻辑卷管理)实现几乎热备的原理:利用LVM的快照卷达到可以保存数据库在某一时刻的瞬时状态,只需把当时的快照备份出来即可。LVM的快照原理:简单的讲就是lvm对某个卷创建快照卷后,快照卷则作为原卷的另一个访问入口,当原卷的数据发生变化时,则先把原卷的内容先复制一份到快照卷,然后才会继续对原卷数据的修改,这也就是之所以快照卷的容量大小应该大于整个备份过程中数据库的变化量的原因。所以当备份完成以后,快照卷也就可以拆除了,它的作用就是在备份过程中把发生变化的数据的快照时状态先拷贝过来一个副本。用lvm对mysql备份的前提:数据文件和事务日志文件应该在同一个卷上,否则快照卷数据和事务日志时间点不一致,恢复后会引起数据库错乱。原理明白了,操作起来就比较简单了:当然要首先准备好lvm卷且保证mysql的datadir和innodb_log_group_home_dir在这个卷上/* 创建一张新表tb1,并插入一些数据以做测试 */MariaDB [hellodb
mysql备份相关课程
mysql备份相关教程
- MySQL 的物理备份 物理备份的原理通常是基于物理文件的拷贝,和逻辑备份相比,它的最大优点是备份速度更快。本小节将主要介绍 MySQL 的物理备份方法。
- MySQL 的逻辑备份 逻辑备份的最大优点是对于所有存储引擎都可以用同样的方法来备份,是目前中小型系统最常使用最简单的备份方式。本小节将主要介绍 MySQL 的逻辑备份。
- MySQL 数据库的备份与恢复 数据库的备份与恢复,一直都是DBA最为重要的工作,任何生产环境的数据库都必须有完整的备份方案与恢复测试。本小节将主要介绍MySQL的备份与恢复。
- 2. 常用的逻辑备份场景 MySQL 中,mysqldump 是常用的逻辑备份工具。以下是常用的备份场景:备份所有数据库shell> mysqldump [options] --all-databases实际案例:备份所有数据库[mysql@localhost ~]$ mysqldump -uroot -p --all-databases > /tmp/all_databases.sqlEnter password: [mysql@localhost ~]$ ls -lrt all_databases.sql-rw-r--r-- 1 mysql mysql 136106866 Jul 23 17:02 all_databases.sql备份一个或多个数据库shell> mysqldump [options] --databases db_name ...实际案例:备份数据库 tempdb[mysql@localhost ~]$ mysqldump -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 17:17 db_tempdb.sql实际案例:备份数据库 tempdb 和 test111[mysql@localhost ~]$ mysqldump -uroot -p --databases tempdb test111 > /tmp/db_tempdb_test111.sqlEnter password: [mysql@localhost ~]$ ls -lrt db_tempdb_test111.sql -rw-r--r-- 1 mysql mysql 19604085 Jul 23 17:23 db_tempdb_test111.sql备份一个或多个表shell> mysqldump [options] db_name [tbl_name ...]实际案例:备份数据库tempdb的表customer[mysql@localhost ~]$ mysqldump -uroot -p tempdb customer > /tmp/table_customer.sqlEnter password: [mysql@localhost ~]$ ls -lrt table_customer.sql -rw-r--r-- 1 mysql mysql 2512 Jul 23 17:35 table_customer.sql实际案例:备份数据库 tempdb 的表 customer 和 t1[mysql@localhost ~]$ mysqldump -uroot -p tempdb customer t1 > /tmp/table_customer_t1.sqlEnter password: [mysql@localhost ~]$ ls -lrt table_customer_t1.sql -rw-r--r-- 1 mysql mysql 3141 Jul 23 17:37 table_customer_t1.sql备份表结构-不包含数据实际案例:备份数据库 tempdbd 的表结构:[mysql@localhost ~]$ mysqldump -uroot -p --databases tempdb -d > /tmp/structure_tempdb.sqlEnter password: [mysql@localhost ~]$ ls -lrt structure_db_tempdb.sql -rw-r--r-- 1 mysql mysql 9987 Jul 23 17:40 structure_db_tempdb.sql实际案例:备份数据库tempdb表customer的表结构[mysql@localhost ~]$ mysqldump -uroot -p tempdb customer -d > /tmp/structure_table_customer.sqlEnter password: [mysql@localhost ~]$ ls -lrt structure_table_customer.sql -rw-r--r-- 1 mysql mysql 2230 Jul 23 17:48 structure_table_customer.sql
- 3. 备份方案的设计 将RPO和RTO定义清楚,可以更好地指导备份策略。一般来说,能承受的数据丢失越多,备份就越简单。一个好的备份方案,需要考量以下几点:对于较大数据库(个人经验是整个数据文件大于50GB),物理备份是必须的,备份工具Percona XtraBackup和MySQL Enterprise Backup是比较好的选择。对于较小的数据库,逻辑备份就可以满足备份需求,备份工具mysqldump是比较好的选择;确保MySQL的log-bin选项是打开的,有了binlog,MySQL才能做完整的恢复、基于时间点的恢复、以及基于位置的恢复;备份二进制日志,用于故障时间点的恢复;在存储资源许可的条件下,保留足够多的备份集;定期从备份中进行恢复测试;需确保备份文件是有效的,是可以恢复的;通过恢复演练,测算恢复锁需要的实际时间,以及所需要的资源,如CPU、磁盘空间、内存、网络等。
- 2. InnoDB 的热备 目前,比较流行的 InnoDB 存储引擎的热备工具是 Xtrabackup。 xtrabackup 是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQL、Percona server 和 MariaDB,开源免费,是目前较为受欢迎的主流备份工具 ,它能对 InnoDB 数据库和 XtraDB 存储引擎的数据库非阻塞地备份(对于 MyISAM 的备份同样需要加表锁)。Xtrabackup 优点:备份速度快,物理备份可靠;备份过程不会打断正在执行的事务(无需锁表);能够基于压缩等功能节约磁盘空间和流量;自动备份校验;还原速度快;可以流传将备份传输到另外一台机器上;在不增加服务器负载的情况备份数据。实际案例:Xtrabackup 全量备份:[root@localhost ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=MyNewPass4! --port=3306 --no-timestamp /mysql/dbbackup/200823 21:11:33 innobackupex: Starting the backup operationIMPORTANT: Please check that the backup run completes successfully. At the end of a successful backup run innobackupex prints "completed OK!".200823 21:11:33 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;port=3306;mysql_socket=/mysql/tmp/mysql.sock' as 'root' (using password: YES).200823 21:11:33 version_check Connected to MySQL server200823 21:11:33 version_check Executing a version check against the server...200823 21:11:33 version_check Done.200823 21:11:33 Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: /mysql/tmp/mysql.sock......200823 21:11:48 Finished backing up non-InnoDB tables and files200823 21:11:48 [00] Writing /mysql/dbbackup/xtrabackup_binlog_info200823 21:11:48 [00] ...done200823 21:11:48 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...xtrabackup: The latest check point (for incremental): '14533834254'xtrabackup: Stopping log copying thread..200823 21:11:48 >> log scanned up to (14533834263)200823 21:11:49 Executing UNLOCK TABLES200823 21:11:49 All tables unlocked200823 21:11:49 [00] Copying ib_buffer_pool to /mysql/dbbackup/ib_buffer_pool200823 21:11:49 [00] ...done200823 21:11:49 Backup created in directory '/mysql/dbbackup/'MySQL binlog position: filename 'mysql-bin.000022', position '190', GTID of the last change '294ae4cf-be0f-11e7-8269-fa163e665653:1-2769,a373c879-3a2c-11e8-bb78-fa163e665653:1-5,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-40:1000012-1000013'200823 21:11:49 [00] Writing /mysql/dbbackup/backup-my.cnf200823 21:11:49 [00] ...done200823 21:11:49 [00] Writing /mysql/dbbackup/xtrabackup_info200823 21:11:49 [00] ...donextrabackup: Transaction log of lsn (14533834254) to (14533834263) was copied.200823 21:11:49 completed OK!备份完成后,备份目录将产生如下文件:[root@localhost ~]$ ls -lh /mysql/dbbackup/total 101M-rw-r----- 1 root root 433 Aug 23 21:11 backup-my.cnf-rw-r----- 1 root root 42K Aug 23 21:11 ib_buffer_pool-rw-r----- 1 root root 100M Aug 23 21:11 ibdata1drwxr-x--- 2 root root 4.0K Aug 23 21:11 mysqldrwxr-x--- 2 root root 4.0K Aug 23 21:11 performance_schemadrwxr-x--- 2 root root 12K Aug 23 21:11 sysdrwxr-x--- 2 root root 4.0K Aug 23 21:11 tempdb-rw-r----- 1 root root 166 Aug 23 21:11 xtrabackup_binlog_info-rw-r----- 1 root root 121 Aug 23 21:11 xtrabackup_checkpoints-rw-r----- 1 root root 703 Aug 23 21:11 xtrabackup_info-rw-r----- 1 root root 2.5K Aug 23 21:11 xtrabackup_logfile实际案例:Xtrabackup 增量备份:在进行增量备份之前,首先要有一次全量备份,第一次增量是基于全备份,之后的增量是基于上一次的增量备份。[root@localhost ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=MyNewPass4! --port=3306 --no-timestamp /mysql/hotbackup/base-- 从xtrabackup_checkpoints文件可以看出,备份类型为全备份,lsn号从0至14533834254[root@localhost ~]# cat /mysql/hotbackup/base/xtrabackup_checkpoints backup_type = full-backupedfrom_lsn = 0to_lsn = 14533834254last_lsn = 14533834263compact = 0recover_binlog_info = 0表 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)第一次增量备份:[root@localhost ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=MyNewPass4! --port=3306 --incremental --no-timestamp /mysql/hotbackup/inc1 --incremental-basedir=/mysql/hotbackup/base-- 从xtrabackup_checkpoints文件可以看出,备份类型为增量备份,lsn号从lsn 14533834254至lsn 14533838790,14533834254为全备份的to_lsn,表示备份从lsn 14533834254以来的增量变化。[root@localhost ~]# cat /mysql/hotbackup/inc1/xtrabackup_checkpoints backup_type = incrementalfrom_lsn = 14533834254to_lsn = 14533838790last_lsn = 14533838799compact = 0recover_binlog_info = 0
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