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命令時候報以下錯誤:
[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參數大全: