mysql備份相關

1linux下mysql導出文件  備份mysql數據庫的命令
mysqldump -h主機名 -u用戶名 -p密碼 數據庫名字 > 備份的數據庫名字.sql
例如:mysqldump  -uroot -p1234 springboot   >/tmp/springboot.sql

僅僅備份數據庫結構(不帶表數據)
mysqldump --no-data -h主機名 -u用戶名 -p密碼  數據庫名字 > 備份數據庫名字.sql

直接將mysql數據庫壓縮備份
mysqldump -h主機名 -u用戶名 -p密碼 數據庫名字  | gzip >備份的數據庫名字.sql.gz

只備份某些表
mysqldump -h主機名 -u用戶名 -p密碼 數據庫名字 數據庫表名1 數據庫其餘表名2 > 備份數據庫名字.sql

同時備份多個mysql數據庫
mysqldump -h主機名 -u用戶名 -p密碼 --databases 須要備份的數據庫名字1 須要備份的數據庫名字2  > 備份數據庫名字.sql

備份服務器上全部數據庫
mysqldump --all-databases -h主機名 -u用戶名 -p密碼 > 備份數據庫名字.sql

跨主機備份
mysqldump備份 -u帳號 -p密碼 須要恢復的數據庫名字 | mysql還原 -u帳號 -p密碼 --host=192.168.199.100 -C 須要恢復的數據庫名字
mysqldump -uroot -p1234 springboot |mysql -uroot -proot --host=192.168.196.133 -C springboot  #將當前環境的springboot庫備份到133機器上

mysqldump全量備份+mysqlbinlog二進制日誌增量備份
從mysqldump備份文件恢復數據會丟失掉從備份點開始的更新數據,因此還須要結合mysqlbinlog二進制日誌增量備份。確保my.ini或者my.cnf中包含下面的配置以啓用二進制日誌,或者mysqld ---log-bin
[mysqld]
log-bin=mysql-bin

 mysqldump命令必須帶上--flush-logs選項以生成新的二進制日誌文件:mysql

mysqldump --single-transaction --flush-logs --master-data=2 > backup.sql

--single-transaction :表示支持事務,可是隻針對Inodb
--flush-logs:刷新日誌
-- master-data

     mysqldump導出數據時,當這個參數的值爲1的時候,mysqldump出來的文件就會包括CHANGE MASTER TO這個語句,CHANGE MASTER TO後面緊接着就是file和position的記錄,在slave上導入數據時就會執行這   個語句,salve就會根據指定這個文件位置從master端複製binlog。默認狀況下這個值是1
當這個值是2的時候,chang master to也是會寫到dump文件裏面去的,可是這個語句是被註釋的狀態。

  這樣生成的增量二進制日誌文件好比爲mysql-bin.000003,那麼恢復數據時以下:
linux

shell> mysql -uroot -pPwd < backup_sunday_1_PM.sql
shell> mysqlbinlog mysql-bin.000003 | mysql -uroot -pPwd

2linux下msyql還原文件

數據庫還原方式1
 mysql -h主機名 -u用戶名 -p密碼 須要恢復的數據庫名字  < 已備份的數據庫名字(見上).sql 

例子:mysql -uroot -proot springboot < springboot.sqlspring

注意:須要回覆的數據庫名字,必須保證在須要恢復的數據庫主機上面有個空庫或者庫名。sql

優化方式:(因爲導出的sql文件,含數據庫建立語句)shell

 mysql -h主機名 -u用戶名 -p密碼 < 已備份的數據庫名字(見上).sql 


數據庫還原方式2
mysql -uroot -proot
mysql>source /tmp/springboot.sql
注意:生成的sql文件中有,建庫語句,因此能夠直接導入

還原壓縮的mysql數據庫
gunzip < 剛開始備份集中的數據庫名字.sql.gz | mysql -u用戶名字 -p用戶密碼 須要恢復的數據庫名字


3其餘

mysqldump導出時報2002 套接字錯誤

在執行mysqldump命令時候報以下錯誤:
[root@localhost ~]#  mysqldump -uroot -p -d test> test.sql   
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

找到正確的套接字的路徑: 
[root@localhost ~]#  netstat -ln | grep mysql                                   
unix  2      [ ACC ]     STREAM     LISTENING     70442911 /MysqlData/base/mysql/mysql.sock

再運行dump命令:
[root@localhost ~]# mysqldump --sock=/MysqlData/base/mysql/mysql.sock -uroot -p -d test> test.sql   
Warning: Using unique option prefix sock instead of socket is deprecated and will be removed in a future release. Please use the full name instead.

Enter password: 數據庫

執行成功,但有警告信息,提示使用sock前輟將在後繼版本中可能再也不支持,請使用全名springboot

將--sock 換成--socket將再也不有問題:服務器

[root@localhost ~]# mysqldump --socket=/MysqlData/base/mysql/mysql.sock -uroot -p -d test> test.sql   socket


4參考:mysqldump參數大全:

相關文章
相關標籤/搜索