本文目錄一覽:
- 1、mysql 數據備份
- 2、mysql備份方式有哪些
- 3、mysql備份問題,mysql版本5.7.2
- 4、詳解Mysql自動備份與恢復的幾種方法(圖文教
- 5、mysql如何備份數據
- 6、Linux下安裝Mysql多實例作為數據備份伺服器實現多主到一從多實例的備份
mysql 數據備份
使用直接拷貝的方法備份時,尤其要注意表沒有被使用,應該對錶進行讀鎖定或停止MySQL服務。備份一個表,需要三個文件:
對於MyISAM表:
tbl_name.frm 表的描述文件
tbl_name.MYD 表的數據文件
tbl_name.MYI 表的索引文件
對於ISAM表:
tbl_name.frm 表的描述文件
tbl_name.ISD 表的數據文件
tbl_name.ISM 表的索引文件
對於MyISAM表,你可以從運行在不同硬體系統的伺服器之間複製文件,例如,SUN伺服器和INTEL PC機之間。
當 然,這只是備份一個數據表,在很多情況下我們需要備份完整的資料庫,這個時候同樣可以直接複製資料庫文件夾即可完成備份;若想再省點兒事,把整個資料庫目 錄「data」複製也可以,但是在還原數據時要注意,只能一個一個地還原資料庫,因為該目錄下有mysql運行時的配置文件,若正在運行的mysql配置 信息遭到還原破壞,整個mysql服務就會無法啟動。
SELECT INTO OUTFILE和MYSQLDUMP備份數據:
MySQLdump工具可以把整個資料庫裝載到一個單獨的文本文件中。這個文件包含所有重建資料庫和表的SQL命令。這個命令取得所有的模式 (Schema)並且將其轉換成DDL語法(CREATE語句,即資料庫定義語句),還取得所有的數據,並且為這些數據創建INSERT語句。所有的東西 都被包含到了一個文本文件中。這個文本文件可以用一個簡單的批處理和一個合適SQL語句導回到MySQL中。這個工具令人難以置信地簡單而快速。
有3種方式來調用mysqldump
選擇一個資料庫或一個數據表備份到一個文件:
/bin mysqldump [options] db_name [tables] filename.txt
選擇多個資料庫備份到一個文件:
/bin mysqldump [options] –database DB1 [DB2 DB3…] filename.txt
所有資料庫備份到一個文件:
/bin mysqldump [options] –all–database filename.txt
Option選擇:
–help,-?
顯示幫助消息並退出。
–add-drop-table
這個選項將會在每一個表的前面加上DROP TABLE IF EXISTS語句,這樣可以保證導回MySQL資料庫的時候不會出錯,因為每次導回的時候,都會首先檢查表是否存在,存在就刪除
–add-locks
這個選項會在INSERT語句中捆上一個LOCK TABLE和UNLOCK TABLE語句。這就防止在這些記錄被再次導入資料庫時其他用戶對錶進行的操作
-c or –complete_insert
這個選項使得MySQLdump命令給每一個產生INSERT語句加上列(field)的名字。當把數據導出導另外一個資料庫時這個選項很有用。
–delayed-insert 在INSERT命令中加入DELAY選項
-F or –flush-logs 使用這個選項,在執行導出之前將會刷新MySQL伺服器的log.
-f or –force 使用這個選項,即使有錯誤發生,仍然繼續導出
–full 這個選項把附加信息也加到CREATE TABLE的語句中
-l or –lock-tables 使用這個選項,導出表的時候伺服器將會給表加鎖。
-t or –no-create- info
這個選項使的MySQLdump命令不創建CREATE TABLE語句,這個選項在您只需要數據而不需要DDL(資料庫定義語句)時很方便。
-d or –no-data 這個選項使的MySQLdump命令不創建INSERT語句。
在您只需要DDL語句時,可以使用這個選項。
–opt 此選項將打開所有會提高文件導出速度和創造一個可以更快導入的文件的選項。
-q or –quick 這個選項使得MySQL不會把整個導出的內容讀入內存再執行導出,而是在讀到的時候就寫入導文件中。
-T path or –tab = path
這 個選項將會將資料庫中每一個表創建兩個文件,一個文件包含DDL語句或者表創建語句,另一個文件包含數據。DDL文件被命名為 table_name.sql,數據文件被命名為table_name.txt。該參數的path為存放目錄,而且該目錄必須已經存在。 如:/binmysqldump –uroot –p –tab=d:\\ mydata
-w “WHERE Clause” or –where = “Where clause ” 篩選將要放到導出文件的數據。
下面來看幾組mysqldump命令案例:
將資料庫mydata的內容備份到mydata.txt文件中:
/binMySQLdump –uroot -p mydata d:\\mydata.txt
將mydata資料庫中的users表的內容備份到d:\\users.txt:
/binMySQLdump –uroot -p mydata users d:\\users.txt
將mydata資料庫中的users表username值為「feihu」的數據備份到d:\\users.txt:
/binMySQLdump –uroot -p –where=」username=』feihu』」 mydata users d:\\users.txt;
將mydata資料庫以及內部表的創建結構(DDL)備份到d:\\users.txt:
/binMySQLdump –uroot –p -d mydata d:\\mydata.txt
將mydata和mydata2資料庫同時備份到d:\\users.txt:
/bin MySQLdump –uroot –p -d mydata mydata2 d:\\mydata.txt
將所有數據備份到一個資料庫,命令怎麼寫呢???
schema: 模式The set of statements, expressed in data definition language, that completely describe the structure of a data base.(一組以數據定義語言來表達的語句集,該語句集完整地描述了資料庫的結構。)
當需要將還原備份數據時,使用如下語句:
/binmysql –uroot –p mydata d:\\mydata.txt;
注意使用「」符號,導入數據。還可以使用source命令執行文件中的腳本來還原數據,如:
Mysqlsource d:\mydata.txt;
LOAD DATA INFILE和MYSQLIMPORT恢複數據
關於load data infile語句的使用已經在別一節講述過了,詳細請參考「使用LOAD DATA和INSERT語句導入Mysql數據」。如果你僅僅恢複數據, mysqlimport完全是與LOAD DATA 語句對應的,讀者可以任意選擇一個去實現。
MySQLimport位於MySQL/bin目錄中,是MySQL的一個載入(或者說導入)數據的一個非常有效的工具。這是一個命令行工具。有兩個參數 以及大量的選項可供選擇。這個工具把一個文本文件(textfile)導入到你指定的資料庫和表中。比方說我們要從文件users.txt中把數據導入到 資料庫mydata中的表users中:
/binmysqlimport –uroot –p mydata d:\users.txt
注意:這裡users.txt是我們要導入數據的文本文件,而mydata是我們要操作的資料庫,資料庫中的表名是users,這裡文本文件的數據格式必須與users表中的記錄格式一致,否則MySQLimport命令將會出錯。
其中表的名字是導入文件的第一個句號(.)前面文件字元串,另外一個例子:MySQLimport mydata users.2009.10.txt;那麼我們將把文件中的內容導入到資料庫mydata 中的users表中。
上面的例子中,都只用到兩個參數,並沒有用到更多的選項,下面介紹MySQLimport的選項
-d or –delete 新數據導入數據表中之前刪除數據數據表中的所有信息
-f or –force 不管是否遇到錯誤,MySQLimport將強制繼續插入數據
-i or –ignore MySQLimport跳過或者忽略那些有相同唯一關鍵字的行, 導入文件中的數據將被忽略。
-l or -lock-tables 數據被插入之前鎖住表,這樣就防止了,你在更新資料庫時,用戶的查詢和更新受到影響。
-r or -replace 這個選項與-i選項的作用相反;此選項將替代表中有相同唯一關鍵字的記錄。
–fields-enclosed-by= char 指定文本文件中數據的記錄時以什麼括起的, 很多情況下數據以雙引號括起。 默認的情況下數據是沒有被字元括起的。
–fields-terminated-by=char 指定各個數據的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數據之間的分隔符。默認的分隔符是跳格符(Tab)
–lines-terminated-by=str 此選項指定文本文件中行與行之間數據的分隔字元串或者字元。 默認的情況下MySQLimport以newline為行分隔符。您可以選擇用一個字元串來替代一個單個的字元:一個新行或者一個回車。
MySQLimport命令常用的選項還有-v 顯示版本(version),-p 提示輸入密碼(password)等。
如果,我們要導入一個文件(Orders.txt)中行的記錄格式是這樣的:
“1”, “ORD89876”, “1 Dozen Roses”, “19991226”
我們的任務是要把這個文件裡面的數據導入到資料庫mydata中的表格Orders中,我們使用這個命令:
/BinMySQLimport -uroot–prl –fields-enclosed-by=” –fields-terminated-by=, mydata Orders.txt
比如我們要插入一些數據,使用包含下面文本的文件(文件名為New_Data.sql,當然我們也可以取名為New_Data.txt及任何其他的合法名字,並不一定要以後綴sql結尾):
USE mydata; INSERT INTO Orders (Orders_ID, username) VALUES(1, “Block”); INSERT INTO Orders (Orders_ID, username) VALUES(2, “Newton”); INSERT INTO Orders (Orders_ID, username) VALUES(3, “Simmons”);
注意上面的這些句子的語法都必須是正確的,並且每個句子以分號結束。上面的USE命令選擇資料庫,INSERT命令插入數據。
然後運行下面的命令:
/binmysql –uroot –p mydata d:\New_Data.txt;
接著按提示輸入密碼,如果上面的文件中的語句沒有錯誤,那麼這些數據就被導入到了資料庫中。
mysql備份方式有哪些
資料庫最直接的備份方法就是使用自帶的mysqldump命令進行備份。
1、 mysqldump命令備份數據
在MySQL中提供了命令行導出資料庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現資料庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p –databases 資料庫1 資料庫2 xxx.sql
2、 mysqldump常用操作實例
2.1備份全部資料庫的數據和結構
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.2備份全部資料庫的結構(加 -d 參數)
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
2.3 備份全部資料庫的數據(加 -t 參數)
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
2.4 備份單個資料庫的數據和結構(,資料庫名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
2.5 備份單個資料庫的結構
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
2.6 備份單個資料庫的數據
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2
2.7 備份多個表的數據和結構(數據,結構的單獨備份方法與上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
2.8 一次備份多個資料庫
mysqldump -uroot -p123456 –databases db1 db2 /data/mysqlDump/mydb.sql
mysql備份問題,mysql版本5.7.2
1. mysqldump: 最早,也是最成熟的邏輯備份工具,是 MySQL 原生的用來備份整個資料庫實例、單個資料庫、單張表的邏輯備份工具, 上手簡單,學習成本幾乎為 0。備份簡單,恢復也簡單。
比如導出單個資料庫 ytt: mysqldump ytt /tmp/ytt.sql;
恢復也非常簡單:mysql /tmp/ytt.sql
缺點是備份速度慢。在整個備份過程中,是單線程運行;備份出來的數據集要恢復的話同樣也是單線程運行,恢復速度也慢。除非對同一時刻的所有表單獨備份出來,自己寫額外腳本進行多線程恢復。
2. mysqlpump:MySQL 5.7 GA 後推出的 mysqldump工具的增強版。可以對同一個數據集多個線程並發備份,備份速度很快。
其他缺點和 mysqldump 一樣。
3. MySQL Shell UTIL 對象附帶的備份工具:隨 MySQL 8.0.21 最新版本捆綁發布,自帶多線程備份以及多線程恢復功能, 可以直接替代 mysqldump/mysqlpump。
dump_instance/dumpInstance 用來多線程備份 MySQL 整個單機實例
dump_schemas/dumpSchemas 用來多線程備份 MySQL 單個資料庫
load_dump/loadDump 用來多線程恢復之前兩個工具導出的數據集文件
詳解Mysql自動備份與恢復的幾種方法(圖文教
備份方案一: 通過 mysqldump命令,直接生成一個完整的 .sql 文件
Step 1: 創建一個批處理
(說明:root 是mysql默認用戶名, aaaaaa 是mysql密碼, bugtracker 是資料庫名)
————mySql_backup.bat————————————————————————————–
d:
cd D:/AppServ/MySQL/bin
mysqldump -uroot -paaaaaa bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker_back.sql
exit
Step 2: 創建一個計劃任務
“Start” — “Control Panel” — “Administrative Tools” — “Task Scheduler”
“Create A Basic Task” — — “Daily” (注意設置後面的 時 分 秒) — —- “Start a Program” — “Browser” (定位選擇到你剛才創建的批處理mySql_backup.bat) — — “Finish”
對應的還原方法
創建一個處理:
———-mySql_restore.bat——-
d:
cd D:/AppServ/MySQL/bin
mysql -uroot -paaaaaa bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker_back.sql
exit
雙擊它即可自動執行還原
備份方案二: 通過 xcopy 命令,直接把Mysql 的 data 目錄下的對應的資料庫全部的文件全部 copy 出來
創建批處理:
xcopy D:/AppServ/MySQL/data/bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker/ /e /h /d /y /r /v /f /k
exit
對應的還原方法
把 E:/DataBase/Mysql_bugtracker_backup 目錄下的 bugtracker文件夾 直接 copy 到 D:/AppServ/MySQL/data 目錄下,把這個目錄的bugtracker文件夾 全部履蓋掉
備份方案三:安裝Navicat For MySql 工具,通過它的 Schedule 功能設置自動備份
Schedule — New Batch Job
在新彈出的頁面中 選擇你的 DB (eg: bugtracker ),然後在右邊面板(Available Jobs)中你會看到「Backup bugtracker」,雙擊它,它會出現在下邊面板—
對應的還原方法:
找到上述目錄下對應的最新的 .psc 文件,然後通過Navicat For Mysql 工具還原
mysql如何備份數據
1.1、 mysqldump命令備份數據
在MySQL中提供了命令行導出資料庫數據以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現資料庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p –databases 資料庫1 資料庫2 xxx.sql
1.2、 mysqldump常用操作實例
1.備份全部資料庫的數據和結構
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.備份全部資料庫的結構(加 -d 參數)
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
3.備份全部資料庫的數據(加 -t 參數)
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
4.備份單個資料庫的數據和結構(,資料庫名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
5.備份單個資料庫的結構
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
6.備份單個資料庫的數據
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql
7.備份多個表的數據和結構(數據,結構的單獨備份方法與上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
8.一次備份多個資料庫
mysqldump -uroot -p123456 –databases db1 db2 /data/mysqlDump/mydb.sql
Linux下安裝Mysql多實例作為數據備份伺服器實現多主到一從多實例的備份
1、從MYSQL官方下載MYSQL的源碼版本【一定要是源碼版本】
2、按以下代碼鍵入LINUX命令行
複製代碼
代碼如下:
[注]
添加mysql組和用戶
#groupadd
mysql
#useradd
-g
mysql
mysql
[注]
解包到/usr/local
#
tar
-xzf
mysql-standard-4.1.9-pc-linux-gnu-i686.tar.gz
-C
/usr/local
[注]
建立軟鏈接,方便操作(此處給此連接命名為mysql001,也可為其它的名字)
#cd
/usr/local
#ln
-s
mysql-standard-5.0.15-linux-i686-glibc23
mysql001
#cd
mysql001
#scripts/mysql_install_db
#chown
-R
root
.
#chown
-R
mysql
data
#chgrp
-R
mysql
.
[注]
複製data,以供單版本多實例分配
#cp
-a
data
data_1
#cp
-a
data
data_2
[注]
添加多實例配置文件
#cd
/usr/local/mysql001/bin
#cat
my_multi.cnf
[注]
以下是my_multi.cnf的配置信息,可依此複製
[mysqld_multi]
mysqld
=
/usr/local/mysql001/bin/mysqld_safe
mysqladmin
=
/usr/local/mysql001/bin/mysqladmin
user
=
root
password
=
root
[mysqld1]
socket
=
/tmp/mysql_001.sock
port
=
3301
pid-file
=
/usr/local/mysql001/data_1/hostname.pid
datadir
=
/usr/local/mysql001/data_1
log
=
/usr/local/mysql001/data_1/hostname.log
user
=
mysql
#
slave
setting
server-id
=
2
master-host
=
192.168.1.85
master-port
=
3306
master-user
=
backup
master-password
=
123456
replicate-do-db
=
gs_database
replicate-do-db
=
gs_log
master-connect-retry=30
[mysqld2]
socket
=
/tmp/mysql_5_2.sock
port
=
3302
pid-file
=
/usr/local/mysql001/data_2/hostname.pid
datadir
=
/usr/local/mysql001/data_2
log
=
/usr/local/mysql001/data_2/hostname.log
user
=
mysql
#
slave
setting
server-id
=
3
master-host
=
192.168.1.69
master-port
=
3306
master-user
=
backup
master-password
=
123
replicate-do-db
=
gs_databaes
replicate-do-db
=
gs_log
master-connect-retry=30
CTRL+D退出。
複製代碼
代碼如下:
#vi
/etc/profile
#
添加系統環境變數。
export
MYSQL_HOME=/usr/local/mysql001/bin
export
PATH=$PATH:$MYSQL_HOME
重啟系統讓環境變數生效。
添加至開機自動啟動【此處可不添加,依個人情況決定是否需要設置開機自動啟動】
複製代碼
代碼如下:
vi
/etc/rc.local
#
添加
mysqld_multi
–defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf
start
1,2
3、其它一些技巧
#
訪問某個實例:
mysql
-u
root
-S
/tmp/mysql_5_1.sock
-p
#
設置各個實例密碼:
mysqladmin
-u
root
password
‘root’
-S
/tmp/mysql_5_1.sock
#
手動啟動各個實例:
mysqld_multi
–defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf
start
1,2
#
停止各個實例:
mysqld_multi
–defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf
stop
1,2
#
參考文章
由於第一次接觸LINUX,花了三天時間才算有所成就,發出來希望可以給大夥帶來方便
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/229200.html