【Mysql】恢復slave上某幾張表的方法
主庫一直模擬插入資料
1.關閉slave 複製程式
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
2.主庫備份需要恢復的表
3.恢復從庫到指定的點
mysql> start slave until master_log_file='on.000001',master_log_pos=38848;
Query OK, 0 rows affected, 1 warning (0.00 sec)
------這一步主要是為了同步斷開slave到備份完表這一段時間內其它表產生的資料
直到slq-thread為no,這期間的錯誤一律跳過即可,可用如下命令
stop slave;set global sql_slave_skip_counter=1;start slave;
4 在slave機器上匯入備份檔案
[root@node2 ~]# mysql -uroot -pESBecs00 hd<test2.sq
5開啟同步即可
</test2.sq
<test2.sq
<test2.sq
具體步驟如下:
</test2.sq
-
[root@node1 ~]# vi tt.sh
-
#!/bin/bash
-
for ((i=1;i<=1000;i++))
-
do
-
mysql -uroot -pESBecs00 -e "insert into test1 values($i,'chen$i')" hd
-
mysql -uroot -pESBecs00 -e "insert into test2 values($i,'chen$i')" hd
-
sleep 0.5
- done
1.關閉slave 複製程式
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
2.主庫備份需要恢復的表
-
[root@node1 ~]# mysqldump -uroot -pESBecs00 --master-data=2 hd test2 >test2.sql
-
[root@node1 ~]# more test2.sql
-
-- MySQL dump 10.13 Distrib 5.5.50, for Linux (i686)
-
--
-
-- Host: localhost Database: hd
-
-- ------------------------------------------------------
-
-- Server version 5.5.50-log
-
-
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-
/*!40101 SET NAMES utf8 */;
-
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-
/*!40103 SET TIME_ZONE='+00:00' */;
-
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
-
--
-
-- Position to start replication or point-in-time recovery from
-
--
-
-
-- CHANGE MASTER TO MASTER_LOG_FILE='on.000001', MASTER_LOG_POS=38848; --一定要開啟master-data幾下備份點資訊
-
-
--
-
-- Table structure for table `test2`
- --
3.恢復從庫到指定的點
mysql> start slave until master_log_file='on.000001',master_log_pos=38848;
Query OK, 0 rows affected, 1 warning (0.00 sec)
------這一步主要是為了同步斷開slave到備份完表這一段時間內其它表產生的資料
直到slq-thread為no,這期間的錯誤一律跳過即可,可用如下命令
stop slave;set global sql_slave_skip_counter=1;start slave;
4 在slave機器上匯入備份檔案
[root@node2 ~]# mysql -uroot -pESBecs00 hd<test2.sq
5開啟同步即可
點選(此處)摺疊或開啟
-
mysql> start slave;
-
Query OK, 0 rows affected (0.00 sec)
-
-
mysql> show slave status\G;
-
*************************** 1. row ***************************
-
Slave_IO_State: Waiting for master to send event
-
Master_Host: 192.168.6.114
-
Master_User: repl
-
Master_Port: 3306
-
Connect_Retry: 60
-
Master_Log_File: on.000001
-
Read_Master_Log_Pos: 137848
-
Relay_Log_File: mysqld-relay-bin.000003
-
Relay_Log_Pos: 123785
-
Relay_Master_Log_File: on.000001
-
Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
</test2.sq
<test2.sq
GTID模式下參考:</test2.sq
<test2.sq- c.新的until條件
-
5.6提供了新的util condition,可以根據GTID來決定備庫複製執行到的位置
-
SQL_BEFORE_GTIDS:在指定的GTID之前停止複製
-
SQL_AFTER_GTIDS :在指定的GTID之後停止複製
-
判斷函式為Relay_log_info::is_until_satisfied
- 詳細文件見: http://dev.mysql.com/doc/refman/5.6/en/start-slave.html
具體步驟如下:
- 1 模擬指令碼寫入---同上
- 2 stop slave
- 3 mysqldump test2 幾下gtid的資訊SET @@GLOBAL.GTID_PURGED='8a0d06d7-91cb-11e5-843b-00163ec09859:1-1973';
-
4 start slave until SQL_after_GTIDS='8a0d06d7-91cb-11e5-843b-00163ec09859:1-1973';
-
Slave_IO_Running: Yes
Slave_SQL_Running: No
-
Retrieved_Gtid_Set: 6c8a10ed8a0d06d7-91cb-11e5-843b-00163ec09859:3931
- Executed_Gtid_Set: 6c8a10ed8a0d06d7-91cb-11e5-843b-00163ec09859:1-1973 ---就是到這個點時,slave_sql執行緒會關閉
- Auto_Position: 1
-
Slave_IO_Running: Yes
- 5 匯入 備份的test2檔案(註釋掉gtid那行)
-
- 6 start slave
- 檢查
- (root@127.0.0.1) [gggg]> select * from test1
- 。。。
- 。。。
-
| 379 | chen379 |
+-----+---------+
379 rows in set (0.00 sec) ---數量一致,資料未丟失
- (root@127.0.0.1) [gggg]> select * from test1
-
| 406 | chen406 |
+-----+---------+
406 rows in set (0.00 sec) ---數量一致,資料未丟失
</test2.sq
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2121676/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從MySQL全庫備份中恢復某個庫和某張表MySql
- 如何從MySQL全庫備份的dump檔案中恢復某張表和表結構MySql
- 從全備份的SQL語句中恢復某張表 [原創]SQL
- mysql 恢復(one)資料庫及單張表MySql資料庫
- 恢復MySQL InnoDB表結構的方法MySql
- MySQL中使用undrop來恢復drop的表(上)MySql
- MySQL備份和恢復資料表的方法MySql
- mysql恢復drop表MySql
- mysqldump 備份單張表和恢復MySql
- SQLSERVER查詢某個資料庫有幾張表SQLServer資料庫
- Mysql的幾種備份與恢復MySql
- 【MySQL】恢復誤操作的方法MySql
- 獲取某張表的表結構
- MYSQL 匯出資料庫中某張表的部分數…MySql資料庫
- 恢復Oracle表空間的方法Oracle
- mysql 從 frm 檔案恢復 table 表結構的3種方法MySql
- 查詢mysql某張表中的所有資料(欄位)型別MySql型別
- truncate表後恢復方法總結
- 解密MySQL備份恢復的4種方法解密MySql
- MySQL兩種不完全恢復的方法MySql
- MySQL通過Binlog恢復刪除的表MySql
- mysqldump 備份匯出資料排除某張表或多張表MySql
- 利用mysql slave 修復master MyISAM tableMySqlAST
- oracle恢復表delete/truncate/drop的方法總結Oracledelete
- 【Mysql】Mysql從frm檔案裡恢復表結構MySql
- MySQL備份和恢復方法彙總MySql
- 【儲存資料恢復】某品牌EqualLogic系列儲存介紹和資料恢復方法資料恢復
- MySQL異常恢復之無主鍵情況下innodb資料恢復的方法MySql資料恢復
- 資料庫崩潰恢復表結構的方法資料庫
- goldengate 過濾對某張表的複製操作Go
- mysql怎麼複製一張表的資料到另一張表MySql
- MySQL備份和恢復具體實施(上)MySql
- MySql的Master/SlaveMySqlAST
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- mysql無備份恢復-獨立表空間MySql
- MySQL Slave延遲很大優化方法MySql優化
- Mysql cluster slave server的自動檢測與修復MySqlServer
- 列出Server上5張最大的表Server