您好,登錄后才能下訂單哦!
這篇文章主要講解了“MySQL怎么全量、增量備份與恢復(fù)數(shù)據(jù)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“MySQL怎么全量、增量備份與恢復(fù)數(shù)據(jù)”吧!
1、在生產(chǎn)環(huán)境中,數(shù)據(jù)的安全性是至關(guān)重要的,任何數(shù)據(jù)的丟失都可能產(chǎn)生嚴(yán)重的后果
2、造成數(shù)據(jù)丟失的原因
程序錯誤
人為錯誤
計算機失敗
磁盤失敗
災(zāi)難和偷竊
從物理與邏輯的角度,備份可分為:
1、物理備份:對數(shù)據(jù)庫操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、日志文件等)的備份
物理備份又可以分為脫機備份(冷備份)和聯(lián)機備份(熱備份):
冷備份:是在關(guān)閉數(shù)據(jù)庫的時候進行的
熱備份:數(shù)據(jù)庫處于運行狀態(tài),這種備份方法依賴于數(shù)據(jù)庫的日志文件
2、邏輯備份:對數(shù)據(jù)庫邏輯組件(如表等數(shù)據(jù)庫對象)的備份
從數(shù)據(jù)庫的備份策略角度, 備份可分為:
完全備份:每次對數(shù)據(jù)進行完整的備份
差異備份:備份那些自從上次完全備份之后被修改過的文件
增量備份:只有那些在.上次完全備份或者增量備份后被修改的文件才會被備份
注意:差異與增量相輔相成
1、完全備份是對整個數(shù)據(jù)庫的備份、數(shù)據(jù)庫結(jié)構(gòu)和文件結(jié)構(gòu)的備份 2、完全備份保存的是備份完成時刻的數(shù)據(jù)庫 3、完全備份是增量備份的基礎(chǔ) (1)完全備份的優(yōu)點 ●備份與恢復(fù)操作簡單方便 (2)完全備份的缺點 ●數(shù)據(jù)存在大量的重復(fù) ●占用大量的備份空間 ●備份與恢復(fù)時間長
1、MySQL數(shù)據(jù)庫的備份可以采用用多種方式 ●直接打包數(shù)據(jù)庫文件夾,如/usr/local/mysql/data ●使用專用備份工具mysqldump 2、mysqldump命令 ●MySQL自帶的備份工具,相當(dāng)方便對MySQL進行備份 ●通過該命令工具可以將指定的庫、表或全部的庫導(dǎo)出為SQL腳本,在需要恢復(fù)時可進行數(shù)據(jù)恢復(fù) 3、mysqldump命令對單個庫進行完全備份 mysqldump -u用戶名-p [密碼] [選項] [數(shù)據(jù)庫名] > /備份路徑/備份文件名 單庫備份例子 mysqldump -u root -p auth > /backup/auth.sql mysqldump -u root -p mysql > /bakcup/mysql.sql 4、mysqldump命令對多個庫進行完全備份 mysqldump -u 用戶名 -p [密碼] [選項] --databases 庫名1 [庫名2]... >/備份路徑/備份文件名 多庫備份例子 mysqldump -u root -p --databases autth mysql > /backup/databases-auth-mysql.sql 5、對所有庫進行完全備份 mysqldump -u用戶名-p [密碼] [選項] --all-databases > /備份路徑/備份文件名 所有庫備份例子 mysqldump -u root -p --opt --all-databases > /backup/all-data.sql
1、在實際生產(chǎn)環(huán)境中,存在對某個特定表的維護操作,此時mysqldump同樣發(fā)揮重大作用 2、使用mysqldump備份表的操作 mysqldump -u 用戶名 -p [密碼] [選項] 數(shù)據(jù)庫名 表名 > /備份路徑/備份文件名 備份表的例子 mysqldump -u root -p mysql user > /backup/mysql-user.sql 3、使用mysqldump備份表結(jié)構(gòu)的操作 mysqldump -u 用戶名 -p [密碼] [選項] -d 數(shù)據(jù)庫名 表名 > /備份路徑/備份文件名 備份表結(jié)構(gòu)的例子 mysqldump -u root -p mysql -d user > /backup/mysql-user.sql
1、使用mysqldump命令導(dǎo)出的SQL備份腳本,在進行數(shù)據(jù)恢復(fù)時可使用以下方法導(dǎo)入 ●source命令 數(shù)據(jù)庫模式中運行 ●mysq|命令 Linux模式中運行 2、使用source恢復(fù)數(shù)據(jù)庫的步驟 ●登錄到MySQL數(shù)據(jù)庫 ●執(zhí)行source備份sq|腳本的路徑(絕對路徑) source 恢復(fù)例子 MySQL [(none)] > source /backup/all-data.sql 3、使用mysq|命令恢復(fù)數(shù)據(jù) mysql -u用戶名-p [密碼] <庫備份腳本的路徑 mysql命令恢復(fù)例子 mysql -u root -p < /backup/all-data.sql
1、恢復(fù)表時同樣可以使用source或者mysql命令進行 2、source恢復(fù)表的操作與恢復(fù)庫的操作相同 3、當(dāng)備份文件中只包含表的備份,而不包括創(chuàng)建庫的語句時,必須指定庫名,且目標(biāo)庫必須存在 mysql -u用戶名-p [密碼] < 表備份腳本的路徑 mysql -u root -p mysql < /backup/mysql-user.sql 4、在生產(chǎn)環(huán)境中,可以使用shell腳本自動實現(xiàn)定期備份
1、定期實施備份,制定備份計劃或者策略,并嚴(yán)格遵守 2、除了進行完全備份,開啟MySQL服務(wù)器的日志功能是很重要的 ●完全備份加上日志,可以對MySQL進行最大化還原 MySQL-bin:MySQL數(shù)據(jù)庫的二進制日志,用于記錄用戶對數(shù)據(jù)庫操作的SQL語句((除了數(shù)據(jù)查詢語句)信息。可以使用mysqlbin命令查看二進制日志的內(nèi)容 3、使用統(tǒng)一的和易理解的備份文件名稱 ●不要使用backup1、backup2等這樣沒有意義的名字 ●推薦使用庫名或者表名加上時間的命名規(guī)則
1、使用mysqldump進行完全備份的存在的問題 ●備份數(shù)據(jù)中有重復(fù)數(shù)據(jù) ●備份時間與恢復(fù)時間長 2、增量備份就是備份自上一次備份之后增加或變化的文件或者內(nèi)容 3、增量備份的特點 ●沒有重復(fù)數(shù)據(jù),備份量不大,時間短 ●恢復(fù)麻煩:需要上次完全備份及完全備份之后所有的增量備份才能恢復(fù),而且要對所有增量備份進行逐個反推恢復(fù) 4、MySQL沒有提供直接的增量備份方法 5、可以通過MySQL提供的二進制日志(binary logs)間接實現(xiàn)增量備份 6、MySQL二進制日志對備份的意義 ●二進制日志保存了所有更新或者可能更新數(shù)據(jù)庫的操作 ●二進制日志在啟動MySQL服務(wù)器后開始記錄,并在文件達到max_ binlog_size所設(shè)置的大小或者接收到flush logs命令后重新創(chuàng)建新的日志文件 ●只需定時執(zhí)行flush logs方法重新創(chuàng)建新的日志,生成二進制文件序列,并及時把這些舊的日志保存到安全的地方就完成了一個時間段的增量備份 7、一般恢復(fù) 添加數(shù)據(jù)——進行完全備份——錄入新的數(shù)據(jù)——進行增量備份——模擬故障——恢復(fù)操作 8、基于位置回復(fù) 就是將某個起始時間的二進制日志導(dǎo)入數(shù)據(jù)庫中,從而跳過某個發(fā)生錯誤的時間點實現(xiàn)數(shù)據(jù)的恢復(fù) 9、基于時間點恢復(fù) 使用基于時間點的恢復(fù),可能會出現(xiàn)在一個時間點里既同時存在正確的操作又存在錯誤的操作,所以我們需要一種更為精確的恢復(fù)方式 10、增量恢復(fù)的方法 (1)一般恢復(fù) mysqlbinlog [--no-defaults]增量備份文件 | mysql -u用戶名 -p (2)基于位置的恢復(fù) ●恢復(fù)數(shù)據(jù)到指定位置 mysqlbinlog --stop-position=操作'id' 1進制日志 | mysql -u用戶名 -p 密碼 ●從指定的位置開始恢復(fù)數(shù)據(jù) mysqlbinlog --start-position=操作'id'二進制日志 | mysql -u用戶名 -p 密碼 (3)基于時間點的恢復(fù) ●從日志開頭截止到某個時間點的恢復(fù) mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小時:分鐘:秒'二進制日志 | mysql -u用戶名 -p 密碼 ●從某個時間點到日志結(jié)尾的恢復(fù) mysqlbinlog [--no defaults] --start-datetime='年-月-日 小時:分鐘:秒'二進制日志 | mysql -u用戶名 -p 密碼 ●從某個時間點到某個時間點的恢復(fù) mysqlbinlog [--no defaults] --start-datetime='年-月-日 小時:分鐘:秒' --stop-datetime='年-月-日 小時:分鐘:秒'二進制日志 | mysql -u用戶名 -p 密碼 查看二進制日志文件(解碼) mysqlbinlog --no-defaults --base64-output=decode-rows -V mysql-bin.000002 > /opt/ bak. txt
1,進入數(shù)據(jù)庫,創(chuàng)建表,插入表數(shù)據(jù)
[root@master2 ~]# mysql -uroot -p ##進入數(shù)據(jù)庫 Enter password: mysql> create database school; ##創(chuàng)建數(shù)據(jù)庫 Query OK, 1 row affected (0.01 sec) mysql> use school; ##使用數(shù)據(jù)庫 Database changed mysql> create table info( ##創(chuàng)建表 -> id int(3) not null primary key auto_increment, -> name varchar(10) not null, -> score decimal(4,1) not null); Query OK, 0 rows affected (0.02 sec) mysql> desc info; ##查看表結(jié)構(gòu) +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int(3) | NO | PRI | NULL | auto_increment | | name | varchar(10) | NO | | NULL | | | score | decimal(4,1) | NO | | NULL | | +-------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> insert into info (name,score) values ('stu01',88),('stu02',77); ##插入表數(shù)據(jù) Query OK, 2 rows affected (0.02 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from info; ##查看表內(nèi)容 +----+-------+-------+ | id | name | score | +----+-------+-------+ | 1 | stu01 | 88.0 | | 2 | stu02 | 77.0 | +----+-------+-------+ 2 rows in set (0.01 sec) mysql> select * from info limit 1; ##只顯示表中的前1行 +----+-------+-------+ | id | name | score | +----+-------+-------+ | 1 | stu01 | 88.0 | +----+-------+-------+ 1 row in set (0.00 sec)
2,對數(shù)據(jù)庫進行物理的完全備份
[root@master2 ~]# cd /usr/local/mysql/data/ ##切換到數(shù)據(jù)庫的數(shù)據(jù)目錄下 [root@master2 data]# ls auto.cnf ibdata1 ib_logfile1 mysql school test ib_buffer_pool ib_logfile0 ibtmp1 performance_schema sys [root@master2 data]# cd school/ [root@master2 school]# ls ##數(shù)據(jù)中的文件 db.opt info.frm info.ibd [root@master2 school]# cd .. [root@master2 data]# tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/ ##用xz格式壓縮 [root@master2 data]# cd /opt/ [root@master2 opt]# ls mysql-2019-11-26.tar.xz mysql-5.7.20 rh
3,對單個數(shù)據(jù)庫進行邏輯上的備份
[root@master2 opt]# mysqldump -uroot -p school > /opt/school.sql ##邏輯備份單個數(shù)據(jù)庫 Enter password: [root@master2 opt]# ls mysql-2019-11-26.tar.xz mysql-5.7.20 rh school.sql [root@master2 opt]# vim school.sql ##查看備份數(shù)據(jù)庫腳本 ... CREATE TABLE `info` ( `id` int(3) NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL, `score` decimal(4,1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; ... LOCK TABLES `info` WRITE; /*!40000 ALTER TABLE `info` DISABLE KEYS */; INSERT INTO `info` VALUES (1,'stu01',88.0),(2,'stu02',77.0);
4,對多個數(shù)據(jù)庫進行備份
[root@master2 opt]# mysqldump -uroot -p --databases school mysql > /opt/db_school_mysql.sql ##備份多個數(shù)據(jù)庫 Enter password: [root@master2 opt]# ls db_school_mysql.sql mysql-2019-11-26.tar.xz mysql-5.7.20 rh school.sql
5,對數(shù)據(jù)庫進行完全備份
[root@master2 opt]# mysqldump -uroot -p --opt --all-databases > /opt/all.sql ##完全備份 Enter password: [root@master2 opt]# ls all.sql mysql-2019-11-26.tar.xz rh db_school_mysql.sql mysql-5.7.20 school.sql
6,對數(shù)據(jù)庫中的表進行備份
[root@master2 opt]# mysqldump -uroot -p school info > /opt/school_info.sql ##對數(shù)據(jù)庫中的表進行備份 Enter password: [root@master2 opt]# ls all.sql mysql-2019-11-26.tar.xz rh school.sql db_school_mysql.sql mysql-5.7.20 school_info.sql
7,對數(shù)據(jù)庫中的表結(jié)構(gòu)進行備份
[root@master2 opt]# mysqldump -uroot -p -d school info > /opt/school_info_desc.sql ##對表結(jié)構(gòu)進行備份 Enter password: [root@master2 opt]# ls all.sql mysql-5.7.20 school_info.sql db_school_mysql.sql rh school.sql mysql-2019-11-26.tar.xz school_info_desc.sql
8,基于腳本恢復(fù)數(shù)據(jù)庫
[root@master2 opt]# mysql -uroot -p ##進入數(shù)據(jù)庫 Enter password: mysql> show databases; ##查看數(shù)據(jù)庫 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | school | | sys | | test | +--------------------+ 6 rows in set (0.00 sec) mysql> use school; ##使用數(shù)據(jù)庫 Database changed mysql> show tables; ##查看表 +------------------+ | Tables_in_school | +------------------+ | info | +------------------+ 1 row in set (0.00 sec) mysql> drop table info; ##刪除表 Query OK, 0 rows affected (0.01 sec) mysql> show tables; ###查看表 Empty set (0.00 sec) mysql> source /opt/school.sql ##恢復(fù)數(shù)據(jù)庫腳本文件 mysql> show tables; ##查看表 +------------------+ | Tables_in_school | +------------------+ | info | +------------------+ 1 row in set (0.00 sec)
9,基于外部MySQL命令恢復(fù)數(shù)據(jù)庫
mysql> drop table info; ##刪除表 Query OK, 0 rows affected (0.01 sec) mysql> show tables; ##查看表 Empty set (0.00 sec) mysql> quit ##退出 Bye [root@master2 opt]# mysql -uroot -p123123 school < /opt/school.sql ##利用mysql命令進行恢復(fù) mysql: [Warning] Using a password on the command line interface can be insecure. [root@master2 opt]# mysql -uroot -p123123 ##進入數(shù)據(jù)庫 mysql: [Warning] Using a password on the command line interface can be insecure. mysql> use school; ##使用數(shù)據(jù)庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; ##查看表 +------------------+ | Tables_in_school | +------------------+ | info | +------------------+ 1 row in set (0.00 sec)
1,開啟二進制日志文件
[root@master2 opt]# vim /etc/my.cnf ##開啟二進制日志文件 [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysql.pid socket = /usr/local/mysql/mysql.sock log-bin=mysql-bin ##開啟二進制日志文件 server-id = 1 [root@master2 opt]# systemctl restart mysqld.service ##重啟mysql服務(wù) [root@master2 opt]# cd /usr/local/mysql/data/ ##切換到mysql站點 [root@master2 data]# ls ##查看二進制日志文件 auto.cnf ib_logfile0 mysql performance_schema test ib_buffer_pool ib_logfile1 mysql-bin.000001 school ibdata1 ibtmp1 mysql-bin.index sys
2,進行完全備份
[root@master2 data]# mysqldump -uroot -p123123 school > /opt/school.sql ##一次完全備份 mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@master2 data]# ls auto.cnf ib_logfile0 mysql performance_schema test ib_buffer_pool ib_logfile1 mysql-bin.000001 school ibdata1 ibtmp1 mysql-bin.index sys [root@master2 data]# mysqladmin -uroot -p123123 flush-logs ##刷新二進制日志文件 mysqladmin: [Warning] Using a password on the command line interface can be insecure. [root@master2 data]# ls ##生成新的二進制日志文件,接下來的操作會保存在mysql-bin.000002中 auto.cnf ib_logfile0 mysql mysql-bin.index sys ib_buffer_pool ib_logfile1 mysql-bin.000001 performance_schema test ibdata1 ibtmp1 mysql-bin.000002 school
3,進入數(shù)據(jù)庫,模擬誤操作
[root@master2 data]# mysql -uroot -p123123 ##進入數(shù)據(jù)庫 mysql: [Warning] Using a password on the command line interface can be insecure. mysql> use school; ##使用數(shù)據(jù)庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from info; ##查看表 +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | +----+------+-------+ 2 rows in set (0.00 sec) mysql> insert into info (name,score) values ('by01',66); ##正確操作 Query OK, 1 row affected (0.00 sec) mysql> select * from info; +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | | 3 | by01 | 66.0 | +----+------+-------+ 3 rows in set (0.00 sec) mysql> delete from info where name='st01'; ##錯誤操作 Query OK, 1 row affected (0.00 sec) mysql> insert into info (name,score) values ('by02',99); ##正確操作 Query OK, 1 row affected (0.00 sec) mysql> select * from info; +----+------+-------+ | id | name | score | +----+------+-------+ | 2 | st02 | 77.0 | | 3 | by01 | 66.0 | | 4 | by02 | 99.0 | +----+------+-------+ 3 rows in set (0.00 sec) [root@master2 data]# mysqladmin -uroot -p123123 flush-logs ##刷新二進制日志文件 mysqladmin: [Warning] Using a password on the command line interface can be insecure. [root@master2 data]# mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 > /opt/bak.txt ##用64位解碼器查看二進制日志文件,并生成一個文件 [root@master2 data]# cd /opt/ [root@master2 opt]# ls bak.txt mysql-5.7.20 rh school.sql [root@master2 opt]# vim bak.txt ##查看二進制日志文件 #at 1084 #191127 20:14:01 server id 1 end_log_pos 1132 CRC32 0xdcc90eb5 Write_rows: table id 221 flags: STMT_END_F ###INSERT INTO `school`.`info` ##第一次正確操作的時間和位置 ###SET ###@1=3 ###@2='by01' ###@3=66.0 ... #at 1302 ##停止位置點 #191127 20:14:46 server id 1 end_log_pos 1357 CRC32 0x6648509a Table_map: `school`.`info` mapped to number 221 #at 1357 #191127 20:14:46 server id 1 end_log_pos 1405 CRC32 0x1eeb752b Delete_rows: table id 221 flags: STMT_END_F ###DELETE FROM `school`.`info` ##第二次執(zhí)行錯誤操作的時間和位置191127 20:14:46 ###WHERE ###@1=1 ###@2='st01' ###@3=88.0 #at 1405 ##開始位置點 #191127 20:14:46 server id 1 end_log_pos 1436 CRC32 0xf1c8d903 Xid = 54 ... #at 1630 #191127 20:15:16 server id 1 end_log_pos 1678 CRC32 0x08d9b0f4 Write_rows: table id 221 flags: STMT_END_F ###INSERT INTO `school`.`info` ##第二次正確操作的時間和位置191127 20:15:16 ###SET ###@1=4 ###@2='by02' ###@3=99.0
4,基于時間點進行斷點恢復(fù)
[root@master2 opt]# mysql -uroot -p123123 ##進入數(shù)據(jù)庫 mysql: [Warning] Using a password on the command line interface can be insecure. mysql> use school; ##使用數(shù)據(jù)庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> drop table info; ##刪除數(shù)據(jù)庫 Query OK, 0 rows affected (0.01 sec) mysql> select * from info; ##查看表 ERROR 1146 (42S02): Table 'school.info' doesn't exist mysql> source /opt/school.sql ##恢復(fù)完全備份數(shù)據(jù)庫腳本 ... mysql> show tables; ##查看表 +------------------+ | Tables_in_school | +------------------+ | info | +------------------+ 1 row in set (0.00 sec) mysql> select * from info; ##查看表數(shù)據(jù) +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | +----+------+-------+ 2 rows in set (0.00 sec) [root@master2 opt]# mysqlbinlog --no-defaults --stop-datetime='2019-11-27 20:14:46' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p123123 ##恢復(fù)bin.000002中前一個正確的執(zhí)行語句(從第二個錯誤語句時間點停止) mysql: [Warning] Using a password on the command line interface can be insecure. [root@master2 opt]# mysql -uroot -p123123 ##進入數(shù)據(jù)庫 mysql: [Warning] Using a password on the command line interface can be insecure. mysql> use school; ##使用數(shù)據(jù)庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from info; ##查看表數(shù)據(jù),恢復(fù)了第一次正確操作 +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | | 3 | by01 | 66.0 | +----+------+-------+ 3 rows in set (0.00 sec) [root@master2 opt]# mysqlbinlog --no-defaults --start-datetime='2019-11-27 20:15:16' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p123123 ##跳過錯誤節(jié)點,恢復(fù)最后一個正確的操作(從最后一個正確的操作時間點開始) mysql: [Warning] Using a password on the command line interface can be insecure. [root@master2 opt]# mysql -uroot -p123123 ##進入數(shù)據(jù)庫 mysql: [Warning] Using a password on the command line interface can be insecure. mysql> use school; ##使用數(shù)據(jù)庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from info; ##查看表數(shù)據(jù),恢復(fù)了第二次正確操作,跳過了錯誤的操作 +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | | 3 | by01 | 66.0 | | 4 | by02 | 99.0 | +----+------+-------+ 4 rows in set (0.00 sec)
5,基于位置點進行斷點恢復(fù)
mysql> delete from info where name='by01'; ##為實驗方便直接刪除 Query OK, 1 row affected (0.01 sec) mysql> delete from info where name='by02'; ##刪除 Query OK, 1 row affected (0.00 sec) mysql> select * from info; ##完全備份的初始狀態(tài) +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | +----+------+-------+ 2 rows in set (0.00 sec) mysql> quit Bye [root@master2 opt]# mysqlbinlog --no-defaults --stop-position='1302' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p123123 ##跳過錯誤操作的位置點從上一個位置點開始 [root@master2 opt]# mysql -uroot -p123123 ##進入數(shù)據(jù)庫 mysql: [Warning] Using a password on the command line interface can be insecure. mysql> use school; ##使用數(shù)據(jù)庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from info; ##查看表數(shù)據(jù),恢復(fù)了第一次正確的操作 +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | | 3 | by01 | 66.0 | +----+------+-------+ 3 rows in set (0.00 sec) mysql> quit Bye [root@master2 opt]# mysqlbinlog --no-defaults --start-position='1405' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p123123 ##從錯誤的位置后一個位置點開始,跳過錯誤操作的位置點 [root@master2 opt]# mysql -uroot -p123123 ##進入數(shù)據(jù)庫 mysql: [Warning] Using a password on the command line interface can be insecure. mysql> use school; ##使用數(shù)據(jù)庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from info; ##查看表數(shù)據(jù),跳過錯誤操作,恢復(fù)第二次正確操作數(shù)據(jù) +----+------+-------+ | id | name | score | +----+------+-------+ | 1 | st01 | 88.0 | | 2 | st02 | 77.0 | | 3 | by01 | 66.0 | | 4 | by02 | 99.0 | +----+------+-------+ 4 rows in set (0.00 sec)
6,對于增量備份全部恢復(fù)
[root@master2 opt]# mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p123123 ##全部增量恢復(fù)
感謝各位的閱讀,以上就是“MySQL怎么全量、增量備份與恢復(fù)數(shù)據(jù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對MySQL怎么全量、增量備份與恢復(fù)數(shù)據(jù)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。