A. 如何將mysql的一個完整資料庫全部復制到另外一個資料庫
如果從庫上表 t 數據與主庫不一致,導致復制錯誤,整個庫的數據量很大,重做從庫很慢,如何單獨恢復這張表的數據?通常認為是不能修復單表數據的,因為涉及到各表狀態不一致的問題。下面就列舉備份單表恢復到從庫會面臨的問題以及解決辦法:
場景 1
如果復制報錯後,沒有使用跳過錯誤、復制過濾等方法修復主從復制。主庫數據一直在更新,從庫數據停滯在報錯狀態(假設 GTID 為 aaaa:1-100)。
修復步驟:
在主庫上備份表 t (假設備份快照 GTID 為 aaaa:1-10000);
恢復到從庫;
啟動復制。
- CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');
- START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';
在主庫上備份表 t (假設備份快照 GTID為 aaaa:1-10000);
停止從庫復制,GTID為 aaaa:1-20000;
恢復表 t 到從庫;
啟動復制。
對表 t 加讀鎖;
在主庫上備份表 t;
停止從庫復制,恢復表 t;
啟動復制;
解鎖表 t。
這里的問題是復制起始位點是 aaaa:101,從庫上表 t 的數據狀態是領先其他表的。aaaa:101-10000 這些事務中只要有修改表 t 數據的事務,就會導致復制報錯 ,比如主鍵沖突、記錄不存在(而 aaaa:101 這個之前復制報錯的事務必定是修改表 t 的事務)
解決辦法:啟動復制時跳過 aaaa:101-10000 這些事務中修改表 t 的事務。
正確的修復步驟:
1. 在主庫上備份表 t (假設備份快照 GTID 為 aaaa:1-10000),恢復到從庫;
2. 設置復制過濾,過濾表 t:
3. 啟動復制,回放到 aaaa:10000 時停止復制(此時從庫上所有表的數據都在同一狀態,是一致的);
4. 刪除復制過濾,正常啟動復制。
注意事項:這里要用 mysqlmp --single-transaction --master-data=2,記錄備份快照對應的 GTID
場景 2
如果復制報錯後,使用跳過錯誤、復制過濾等辦法修復了主從復制。主、從庫數據一直在更新。
修復步驟:
這里的問題是復制起始位點是 aaaa:20001,aaaa:10000-20000 這些事務將不會在從庫上回放,如果這裡面有修改表 t 數據的事務,從庫上將丟失這部分數據。
解決辦法:從備份開始到啟動復制,鎖定表 t,保證 aaaa:10000-20000 中沒有修改表 t 的事務。
正確修復步驟:
如果是大表,這里可以用可傳輸表空間方式備份、恢復表,減少鎖表時間。
B. 怎樣在MySQL資料庫中導出整個資料庫
1.導出整個資料庫
mysqlmp
-u
用戶名
-p
資料庫名
>
導出的文件名
mysqlmp
-u
wcnc
-p
smgp_apps_wcnc
>
wcnc.sql
2.導出一個表
mysqlmp
-u
用戶名
-p
資料庫名
表名>
導出的文件名
mysqlmp
-u
wcnc
-p
smgp_apps_wcnc
users>
wcnc_users.sql
3.導出一個資料庫結構
mysqlmp
-u
wcnc
-p
-d
--add-drop-table
smgp_apps_wcnc
>d:wcnc_db.sql
-d
沒有數據
--add-drop-table
在每個create
語句之前增加一個drop
table
4.導入資料庫
C. mysql如何導出整個資料庫
mysql
的好用之處就是其命令行簡單明了。
mysqlmp是最快的方法。你看不懂沒關系,可以照著做。
1.打開DOS窗口
2.鍵入
mysqlmp
--user
root
--password=123456
mysql
>
d:\mysql.sql
--user
表示要你的mysql登陸用戶名
超級用戶默認為root
--password=123456
就是密碼了,你的是多少就把123456換成你的。
mysql
是資料庫名,你要導出的是什麼,就換成什麼名。
>
是重定向符
,把資料庫的內容以sql代碼的形式重定向到d:\mysql.sql文件。
知道了導出,肯定要導入:
導入方法:
1.打開DOS窗口。
2.鍵入mysql
-uroot
-p123456
mysql
<
d:\mysql.sql
就是上面的相反過程。只是形式有點差別。
很簡單吧。
D. mysql導出資料庫幾種方法
1、確保我們的資料庫已經正確的安裝在電腦上了,首先打開命令行窗口,win+R快捷鍵打開運行窗口,輸入cmd。
E. mysql如何導出資料庫
可以下載個navicat工具,用工具連接資料庫後有個導出功能,能直接導出資料庫文件,後綴格式自己選擇,一般是導出sql後綴的文本文件。
F. 怎麼從mysql 導出整個數據
在命令行下mysql的數據導出有個很好用命令mysqlmp,它的參數有一大把,可以這樣查看:
mysqlmp
最常用的:
mysqlmp -uroot -pmysql databasefoo table1 table2 > foo.sql
這樣就可以將資料庫databasefoo的表table1,table2以sql形式導入foo.sql中,其中-uroot參數表示訪問資料庫的用戶名是root,如果有密碼還需要加上-p參數
C:\Users\jack> mysqlmp -uroot -pmysql sva_rec date_drv > e:\date_drv.sql
mysql的數據導入也是相當便捷的,如:
mysql -uroot databasefoo < foo.sql
這樣就可以將foo.sql的數據全部導入資料庫databasefoo
1.導出整個資料庫
mysqlmp -u用戶名 -p密碼 資料庫名 > 導出的文件名
C:\Users\jack> mysqlmp -uroot -pmysql sva_rec > e:\sva_rec.sql
2.導出一個表,包括表結構和數據
mysqlmp -u用戶名 -p 密碼 資料庫名 表名> 導出的文件名
C:\Users\jack> mysqlmp -uroot -pmysql sva_rec date_rec_drv> e:\date_rec_drv.sql
3.導出一個資料庫結構
C:\Users\jack> mysqlmp -uroot -pmysql -d sva_rec > e:\sva_rec.sql
4.導出一個表,只有表結構
mysqlmp -u用戶名 -p 密碼 -d資料庫名 表名> 導出的文件名
C:\Users\jack> mysqlmp -uroot -pmysql -d sva_rec date_rec_drv> e:\date_rec_drv.sql
5.導入資料庫
常用source 命令
進入mysql資料庫控制台,
如mysql -u root -p
mysql>use 資料庫
然後使用source命令,後面參數為腳本文件(如這里用到的.sql)
mysql>source d:wcnc_db.sql
G. MySQL怎樣導出資料庫
打開Navicat ,在我們要到處的數據上面右擊滑鼠,然後彈出的快捷菜單上點擊「轉儲SQL 文件」,在再次彈出的子菜單項中選擇第一個「數據跟結構」。
H. 如何從mysql資料庫導出所有數據
找到mysql文件夾,裡面有個文件叫data,保存起來,到時候覆蓋在新的文件裡面就行了,不要去弄什麼輸入命令,麻煩!如圖:
I. mysql如何導出、導入資料庫和表,詳細一點
MySQL命令行導出資料庫:
1,進入MySQL目錄下的bin文件夾:cd
MySQL中到bin文件夾的目錄
如我輸入的命令行:cd
C:\Program
Files\MySQL\MySQL
Server
4.1\bin
(或者直接將windows的環境變數path中添加該目錄)
2,導出資料庫:mysqlmp
-u
用戶名
-p
資料庫名
>
導出的文件名
如我輸入的命令行:mysqlmp
-u
root
-p
news
>
news.sql
(輸入後會讓你輸入進入MySQL的密碼)
(如果導出單張表的話在資料庫名後面輸入表名即可)
3、會看到文件news.sql自動生成到bin文件下
命令行導入資料庫:
1,將要導入的.sql文件移至bin文件下,這樣的路徑比較方便
2,同上面導出的第1步
3,進入MySQL:mysql
-u
用戶名
-p
如我輸入的命令行:mysql
-u
root
-p
(輸入同樣後會讓你輸入MySQL的密碼)
4,在MySQL-Front中新建你要建的資料庫,這時是空資料庫,如新建一個名為news的目標資料庫
5,輸入:mysql>use
目標資料庫名
如我輸入的命令行:mysql>use
news;
6,導入文件:mysql>source
導入的文件名;
如我輸入的命令行:mysql>source
news.sql;
J. 命令行怎麼導出mysql資料庫
MySQL命令行導出資料庫:
1,進入MySQL目錄下的bin文件夾:cd MySQL中到bin文件夾的目錄如我輸入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin(或者直接將windows的環境變數path中添加該目錄)2,導出資料庫:mysqlmp -u 用戶名 -p 資料庫名 > 導出的文件名如我輸入的命令行:mysqlmp -u root -p news > news.sql (輸入後會讓你輸入進入MySQL的密碼)(如果導出單張表的話在資料庫名後面輸入表名即可)3、會看到文件news.sql自動生成到bin文件下
命令行導入資料庫:
1,將要導入的.sql文件移至bin文件下,這樣的路徑比較方便2,同上面導出的第1步
3,進入MySQL:mysql -u 用戶名 -p
如我輸入的命令行:mysql -u root -p (輸入同樣後會讓你輸入MySQL的密碼)4,在MySQL-Front中新建你要建的資料庫,這時是空資料庫,如新建一個名為news的目標資料庫5,輸入:mysql>use 目標資料庫名
如我輸入的命令行:mysql>use news;
6,導入文件:mysql>source 導入的文件名;
如我輸入的命令行:mysql>source news.sql;
MySQL備份和還原,都是利用mysqlmp、mysql和source命令來完成的。
1.Win32下MySQL的備份與還原
1.1 備份
開始菜單 | 運行 | cmd |利用「cd \Program Files\MySQL\MySQL Server 5.0\bin」命令進入bin文件夾 | 利用「mysqlmp -u 用戶名 -p databasename >exportfilename」導出資料庫到文件,如mysqlmp -u root -p voice>voice.sql,然後輸入密碼即可開始導出。
1.2 還原
進入MySQL Command Line Client,輸入密碼,進入到「mysql>」,輸入命令"show databases;",回車,看看有些什麼資料庫;建立你要還原的資料庫,輸入"create database voice;",回車;切換到剛建立的資料庫,輸入"use voice;",回車;導入數據,輸入"source voice.sql;",回車,開始導入,再次出現"mysql>"並且沒有提示錯誤即還原成功。
2.Linux下MySQL的備份與還原
2.1 備份
[root@localhost ~]# cd /var/lib/mysql (進入到MySQL庫目錄,根據自己的MySQL的安裝情況調整目錄)[root@localhost mysql]# mysqlmp -u root -p voice>voice.sql,輸入密碼即可。
2.2 還原
法一:
[root@localhost ~]# mysql -u root -p 回車,輸入密碼,進入MySQL的控制台"mysql>",同1.2還原。
法二:
[root@localhost ~]# cd /var/lib/mysql (進入到MySQL庫目錄,根據自己的MySQL的安裝情況調整目錄)[root@localhost mysql]# mysql -u root -p voice<voice.sql,輸入密碼即可。