mysql命令行備份方法


一、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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM