mysql命令列備份方法

2021-10-04 16:34:35 字數 3696 閱讀 7282

一、mysql備份

1、備份命令

格式:mysqldump -h主機ip -p埠 -u使用者名稱 -p密碼 --database 資料庫名 > 檔名.sql

# 本地備份可以不新增埠和主機ip,username、passward是資料庫使用者名稱和密碼

mysqldump -h *.*.*.* -p 3306 -u username -p password --database mysql > /data/backup/mysql.sql

2、備份壓縮

格式:mysqldump -h主機ip -p埠 -u使用者名稱 -p密碼 --database 資料庫名 | gzip > 檔名.sql.gz

# 匯出的資料有可能比較大,不好備份到遠端,這時候就需要進行壓縮

mysqldump -h *.*.*.* -p 3306 -u username -p password --database mysql | gzip > /data/backup/mysql.sql.gz

3、備份同個庫多個表

格式:mysqldump -h主機ip -p埠 -u使用者名稱 -p密碼 --database 資料庫名 表1 表2 .... > 檔名.sql

mysqldump -h *.*.*.* -p 3306 -u username -p password mysql1 mysql2 mysql3> /data/backup/mysql_db.sql
4、同時備份多個庫

格式:mysqldump -h主機ip -p埠 -u使用者名稱 -p密碼 --databases 資料庫名1 資料庫名2 資料庫名3 > 檔名.sql

mysqldump -h *.*.*.* -p 3306 -u username -p password --databases mysql1 mysql2 mysql3 > /data/backup/mysql_db.sql
5、備份例項上所有的資料庫

格式:mysqldump -h主機ip -p埠 -u使用者名稱 -p密碼 --all-databases > 檔名.sql

mysqldump -h *.*.*.* -p 3306 -u username -p password --all-databases > /data/backup/mysql_db.sql
6、備份資料出帶刪除資料庫或者表的sql備份

格式:mysqldump -h主機ip -p埠 -u使用者名稱 -p密碼 --add-drop-table --add-drop-database 資料庫名 > 檔名.sql 

mysqldump -h *.*.*.* -p 3306 -u username -p password --add-drop-table --add-drop-database mysql > /data/backup/mysql_db.sql
7、備份資料庫結構,不備份資料

格式:mysqldump -h主機ip -p埠 -u使用者名稱 -p密碼 --no-data 資料庫名1 資料庫名2 資料庫名3 > 檔名.sql

mysqldump -h *.*.*.* -p 3306 -u username -p password --no-data –databases mysql1 mysql2 mysql3 > /data/backup/structure_db.sql
8、還原mysql資料庫的命令

# database為資料庫名

mysql -h *.*.*.* -u username -p password database < backupfile.sql

9、還原壓縮的mysql資料庫

# database為資料庫名

gunzip < backupfile.sql.gz | mysql -u username -p password database

10、將資料庫轉移到新伺服器

# database為資料庫名

mysqldump -u username -p password database | mysql –host=*.*.*.* -c database

11、--master-data 和--single-transaction

在mysqldump中使用--master-data=2,會記錄binlog檔案和position的資訊 。

--single-transaction會將隔離級別設定成repeatable-commited。

12、匯入資料庫

常用source命令,用use進入到某個資料庫,mysql>source d:\test.sql,後面的引數為指令碼檔案。

13、檢視binlog日誌

檢視binlog日誌可用命令 mysqlbinlog  binlog日誌名稱|more

14、general_log

general_log記錄資料庫的任何操作,檢視general_log 的狀態和位置可以用命令show variables like "general_log%"  ,開啟general_log可以用命令set global general_log=on

二、增量備份

1、首先做一次完整備份:

# 這時候就會得到乙個全備檔案test.sql

mysqldump -h *.*.*.* -u username -p passward -p 3310 --single-transaction --master-data=2 test>test.sql

在sql檔案中我們會看到:

-- 是指備份後所有的更改將會儲存到bin-log.000002二進位制檔案中。

change master to master_log_file='bin-log.000002', master_log_pos=107;

2、在test庫的t_student表中增加兩條記錄,然後執行flush logs命令。

這時將會產生乙個新的二進位制日誌檔案bin-log.000003,bin-log.000002則儲存了全備過後的所有更改,既增加記錄的操作也儲存在了bin-log.00002中。

3、再在test庫中的a表中增加兩條記錄,然後誤刪除t_student表和a表。

a中增加記錄的操作和刪除表a和t_student的操作都記錄在bin-log.000003中。

1、首先匯入全備資料

# 也可以直接在mysql命令列下面用source匯入

mysql -h *.*.*.* -u username -p passward -p 3310 < test.sql

2、恢復bin-log.000002

mysqlbinlog bin-log.000002 |mysql -h *.*.*.* -u username -p passward -p 3310
3、恢復部分 bin-log.000003

在general_log中找到誤刪除的時間點,然後更加對應的時間點到bin-log.000003中找到相應的position點,需要恢復到誤刪除的前面乙個position點。

可以用如下引數來控制binlog的區間

--start-position 開始點 --stop-position 結束點

--start-date 開始時間  --stop-date  結束時間

找到恢復點後,既可以開始恢復。

mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h *.*.*.* -u username -p passward -p 3310

mysql 命令列下備份及還原

1 以gzip格式壓縮備份,並以日期為檔名.備份 mysqldump hhostname uusername ppassword databasename gzip databasename date y m d sql.gz 還原 gzip d databasename date y m d sq...

mysql 命令列 回車 mysql命令列操作

顯示資料庫 show databases 當前資料庫 select database 顯示表show tables 更改表名稱 alter table 原表名 rename 新錶名 rename table 原表名 to 新錶名 檢視系統支援的引擎 show engines 檢視表的引擎 show ...

命令列 mysql 語句 MySQL命令列語句學習

1 mysql root 進入資料庫 2 help h 幫助 3 show databases 展示已經安裝的庫 4 create database 建立新的資料庫 5 drop database 刪除資料庫 6 use 使用資料庫 7 create table user id int,userna...