mySQL配置文件、備份與恢復

来源:https://www.cnblogs.com/lynk/archive/2019/02/21/10413075.html
-Advertisement-
Play Games

mysql配置文件 mysql的配置文件為/etc/my.cnf 配置文件查找次序:若在多個配置文件中均有設定,則最後找到的最終生效 mysql常用配置文件參數: 參數 |說明 : |: port = 3306 | 設置監聽埠 socket = /tmp/mysql.sock | 指定套接字文件位 ...


mysql配置文件

mysql的配置文件為/etc/my.cnf

配置文件查找次序:若在多個配置文件中均有設定,則最後找到的最終生效

/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf

mysql常用配置文件參數:

參數 說明
port = 3306 設置監聽埠
socket = /tmp/mysql.sock 指定套接字文件位置
basedir = /usr/local/mysql 指定MySQL的安裝路徑
datadir = /data/mysql 指定MySQL的數據存放路徑
pid-file = /data/mysql/mysql.pid 指定進程ID文件存放路徑
user = mysql 指定MySQL以什麼用戶的身份提供服務
skip-name-resolve 禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。若開啟該選項,則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求

mysql資料庫備份

資料庫常用備份方案

資料庫備份方案:

  • 全量備份:全量備份就是指對某一個時間點上的所有數據或應用進行的一個完全拷貝。
    • 數據恢復快。
    • 備份時間長
  • 增量備份:增量備份是指在一次全備份或上一次增量備份後,以後每次的備份只需備份與前一次相比增加和者被修改的文件。這就意味著,第一次增量備份的對象是進行全備後所產生的增加和修改的文件;第二次增量備份的對象是進行第一次增量備份後所產生的增加和修改的文件,如此類推。
    • 沒有重覆的備份數據
    • 備份時間短
    • 恢複數據時必須按一定的順序進行
  • 差異備份:備份上一次的完全備份後發生變化的所有文件。差異備份是指在一次全備份後到進行差異備份的這段時間內對那些增加或者修改文件的備份。在進行恢復時,我們只需對第一次全量備份和最後一次差異備份進行恢復。

mysql備份工具mysqldump

語法:

mysqldump [OPTIONS] database [tables ...]
mysqldump [OPTIONS] --all-databases [OPTIONS]
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

常用選項:

-uUSERNAME 指定資料庫用戶名
-hHOST     指定伺服器主機,請使用ip地址
-pPASSWORD 指定資料庫用戶的密碼
-P#        指定資料庫監聽的埠,這裡的#需用實際的埠號代替,如-P3
mysql> show tables;
+----------------+
| Tables_in_lynk |
+----------------+
| armor          |
| mastersword    |
+----------------+
2 rows in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lynk               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> use lynk
Database changed
mysql> show tables;
+----------------+
| Tables_in_lynk |
+----------------+
| armor          |
| mastersword    |
+----------------+
2 rows in set (0.00 sec)

#全備
[root@lynk ~]# mysqldump -uroot -p -h127.0.0.1 --all-databases > all-201902211531.sql
Enter password: 
[root@lynk ~]# ls
all-201902211531.sql  anaconda-ks.cfg

#備份lynk庫的mastersword和armor表
[root@lynk ~]# mysqldump -uroot -p -h127.0.0.1 lynk mastersword armor > table-201902211533.sql
Enter password: 
[root@lynk ~]# ls
all-201902211531.sql  anaconda-ks.cfg  table-201902211533.sql

#備份lynk庫
[root@lynk ~]# mysqldump -uroot -p -h127.0.0.1 --databases lynk > lynk-201902211536.sql
Enter password: 
[root@lynk ~]# ls
all-201902211531.sql  anaconda-ks.cfg  lynk-201902211536.sql  table-201902211533.sql

數據恢復

#模擬誤刪資料庫
mysql> drop database lynk;
Query OK, 2 rows affected (0.03 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

#恢復lynk資料庫
[root@lynk ~]# mysql -uroot -p -h127.0.0.1 < all-201902211531.sql 
Enter password: 
[root@lynk ~]# mysql -uroot -p
Enter password: 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lynk               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

#恢復表
mysql> use lynk
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> source table-201902211533.sql
Query OK, 0 rows affected (0.00 sec)
···
mysql> show tables;
+----------------+
| Tables_in_lynk |
+----------------+
| armor          |
| mastersword    |
+----------------+
2 rows in set (0.00 sec)

#模擬刪除整個資料庫
mysql> drop database lynk;
Query OK, 2 rows affected (0.04 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

#恢復整個資料庫
[root@lynk ~]# mysql -uroot -p -h127.0.0.1 < all-201902211531.sql 
Enter password: 
[root@lynk ~]# mysql -uroot -p -h127.0.0.1 -e 'show databases;'
Enter password: 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lynk               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

差異備份

差異備份與全備和增備的操作不同,
差異備份是通過記錄對資料庫的操作而進行備份還原,其優點在於可以恢復到任意狀態,而不是備份時的狀態。

#開啟mysql二進位日誌功能
[root@lynk ~]# cat >> /etc/my.cnf <<EOF
server-id=1
log-bin=mysql_bin
EOF
[root@lynk ~]# service mysqld restart

#這是我的資料庫表格
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| lynk               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> show tables from lynk;
+----------------+
| Tables_in_lynk |
+----------------+
| student        |
+----------------+
1 row in set (0.00 sec)

mysql> select * from lynk.student;
+------+-------------+------+
| id   | name        | age  |
+------+-------------+------+
|    1 | tom         |   20 |
|    2 | jerry       |   23 |
|    3 | wangqing    |   25 |
|    4 | sean        |   28 |
|    5 | zhangshan   |   26 |
|    6 | zhangshan   |   20 |
|    7 | lisi        | NULL |
|    8 | chenshuo    |   10 |
|    9 | wangwu      |    3 |
|   10 | qiuyi       |   15 |
|   11 | qiuxiaotian |   20 |
+------+-------------+------+
11 rows in set (0.00 sec)

#先對資料庫進行一次全備
[root@lynk ~]# mysqldump -uroot -plynk123~ --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > all-20190222.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@lynk ~]# ll
總用量 630088
-rw-r--r--. 1 root root    802782 2月  22 19:18 all-20190222.sql
-rw-------. 1 root root      1269 2月  18 17:34 anaconda-ks.cfg

#新增內容
mysql> use lynk
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select * from student;
+------+-------------+------+
| id   | name        | age  |
+------+-------------+------+
|    1 | tom         |   20 |
|    2 | jerry       |   23 |
|    3 | wangqing    |   25 |
|    4 | sean        |   28 |
|    5 | zhangshan   |   26 |
|    6 | zhangshan   |   20 |
|    7 | lisi        | NULL |
|    8 | chenshuo    |   10 |
|    9 | wangwu      |    3 |
|   10 | qiuyi       |   15 |
|   11 | qiuxiaotian |   20 |
+------+-------------+------+
11 rows in set (0.00 sec)

mysql> update student set age = 4 where id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from student;
+------+-------------+------+
| id   | name        | age  |
+------+-------------+------+
|    1 | tom         |    4 |
|    2 | jerry       |   23 |
|    3 | wangqing    |   25 |
|    4 | sean        |   28 |
|    5 | zhangshan   |   26 |
|    6 | zhangshan   |   20 |
|    7 | lisi        | NULL |
|    8 | chenshuo    |   10 |
|    9 | wangwu      |    3 |
|   10 | qiuyi       |   15 |
|   11 | qiuxiaotian |   20 |
+------+-------------+------+
11 rows in set (0.00 sec)

mysql差異備份恢複數據

#模擬刪庫
[root@lynk ~]# mysql -uroot -plynk123~ -e 'drop database lynk;'
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@lynk ~]# mysql -uroot -plynk123~ -e 'show databases;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

#模擬跑路ε=ε=(ノ ゚Д ゚)ノ(誤)

#刷新二進位文件來創建一個新的
[root@lynk ~]# mysqladmin -uroot -plynk123~ flush-logs
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
[root@lynk ~]# ll /opt/data
總用量 122952
-rw-r-----. 1 mysql mysql       56 2月  22 15:20 auto.cnf
-rw-r-----. 1 mysql mysql      346 2月  22 19:12 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 2月  22 19:24 ibdata1
-rw-r-----. 1 mysql mysql 50331648 2月  22 19:24 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 2月  22 15:20 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 2月  22 19:18 ibtmp1
-rw-r-----. 1 mysql mysql     8648 2月  22 19:12 localhost.localdomain.err
-rw-r-----. 1 mysql mysql     4315 2月  22 19:12 lynk.err
drwxr-x---. 2 mysql mysql     4096 2月  22 15:20 mysql
-rw-r-----. 1 mysql mysql      636 2月  22 19:26 mysql_bin.000002
-rw-r-----. 1 mysql mysql      154 2月  22 19:26 mysql_bin.000003
-rw-r-----. 1 mysql mysql       38 2月  22 19:26 mysql_bin.index
-rw-r-----. 1 mysql mysql        6 2月  22 19:12 mysql.pid
drwxr-x---. 2 mysql mysql     8192 2月  22 15:20 performance_schema
drwxr-x---. 2 mysql mysql     8192 2月  22 15:20 sys

#進行全備恢復
[root@lynk ~]# mysql -uroot -plynk123~ < all-20190222.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
#但是我們將進行過全備之後,我們的數據是處於新增內容之前的狀態
[root@lynk ~]# mysql -uroot -plynk123~ -e 'select * from lynk.student;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------+-------------+------+
| id   | name        | age  |
+------+-------------+------+
|    1 | tom         |   20 |
|    2 | jerry       |   23 |
|    3 | wangqing    |   25 |
|    4 | sean        |   28 |
|    5 | zhangshan   |   26 |
|    6 | zhangshan   |   20 |
|    7 | lisi        | NULL |
|    8 | chenshuo    |   10 |
|    9 | wangwu      |    3 |
|   10 | qiuyi       |   15 |
|   11 | qiuxiaotian |   20 |
+------+-------------+------+

#進行差備恢復
#查詢誤刪資料庫位置
mysql> show binlog events in 'mysql_bin.000002';
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| mysql_bin.000002 |   4 | Format_desc    |         1 |         123 | Server ver: 5.7.23-log, Binlog ver: 4 |
| mysql_bin.000002 | 123 | Previous_gtids |         1 |         154 |                                       |
| mysql_bin.000002 | 154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql_bin.000002 | 219 | Query          |         1 |         291 | BEGIN                                 |
| mysql_bin.000002 | 291 | Table_map      |         1 |         345 | table_id: 110 (lynk.student)          |
| mysql_bin.000002 | 345 | Update_rows    |         1 |         401 | table_id: 110 flags: STMT_END_F       |
| mysql_bin.000002 | 401 | Xid            |         1 |         432 | COMMIT /* xid=479 */                  |
| mysql_bin.000002 | 432 | Anonymous_Gtid |         1 |         497 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql_bin.000002 | 497 | Query          |         1 |         589 | drop database lynk                    |
| mysql_bin.000002 | 589 | Rotate         |         1 |         636 | mysql_bin.000003;pos=4                |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
10 rows in set (0.00 sec)
#可以看到是在位置497進行了drop操作,所以我們要從497的位置進行恢復
[root@lynk ~]# mysqlbinlog --stop-position=497 /opt/data/mysql_bin.000002 |mysql -uroot -plynk123~
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@lynk ~]# mysql -uroot -plynk123~ -e 'select * from lynk.student;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------+-------------+------+
| id   | name        | age  |
+------+-------------+------+
|    1 | tom         |    4 |
|    2 | jerry       |   23 |
|    3 | wangqing    |   25 |
|    4 | sean        |   28 |
|    5 | zhangshan   |   26 |
|    6 | zhangshan   |   20 |
|    7 | lisi        | NULL |
|    8 | chenshuo    |   10 |
|    9 | wangwu      |    3 |
|   10 | qiuyi       |   15 |
|   11 | qiuxiaotian |   20 |
+------+-------------+------+

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前邊我們介紹到Windows Server 2016-圖形化新建域用戶(一) 及 Windows Server 2016-批量新建域用戶(二) ,裡邊提到了批量通過new-aduser常見帳號,這裡簡單的對前章節內容做個補充,具體信息如下: 命令語法: 常用欄位註解: 例:創建wen帳號: ...
  • 今天在linux里修改腳本文件時,不小心非正常關閉了腳本文件,再次編輯時,每次都提示 如下錯誤: E325: 註意發現交換文件 ".bqh.sh.swp" 所有者: root 日期: Wed Feb 20 03:51:12 2019 文件名: /server/scripts/bqh.sh 修改過: ...
  • 1、curl -X POST “http://XXXXXXX”這種請求方式參數直接寫在URL裡面的,而不是body ...
  • 本周,運維告知部署的服務被掃描發現漏洞,涉及的軟體分別為 ,`ZooKeeper Elasticsearch`. 因為最近任務繁重,人力資源緊張,因此無法抽出更多時間調整代碼,添加許可權認證. 與軟體部署人員確認,上述三個軟體均為內網訪問,因此採用以下方式進行處理: (1) 設置訪問 地址,即僅允許同 ...
  • wc wc命令用於報告文本文件的一些統計計數,例如行數、單詞數、位元組數等。 語法如下。 --files0-from=F:這個選項幾乎沒見過有人使用,我也看不懂,因此就忽略掉了。 預設情況下顯示3個計數,從左往右分別是行數、單詞數和位元組數。 如果被統計的文件數大於1,那麼還會顯示一行總計。 可以通過選 ...
  • 內核版本:Linux 4.19 操作系統通過系統調用為運行於其上的進程提供服務。 那麼,在應用程式內,調用一個系統調用的流程是怎樣的呢? 我們以一個假設的系統調用 xyz() 為例,介紹一次系統調用的所有環節。 如上圖所示,系統調用執行的流程如下: ~~~ 1. 應用程式代碼調用 xyz(),該函數 ...
  • 一、Linux操作系統版本 二、背景:在項目中當我們配置好JDK環境變數、Tomcat環境變數,通過 使環境變數生效時,發現會報錯,如圖 三、解決 個人尚不知出現原因,只知道註釋掉下麵這兩行後即可使環境生效 ...
  • 一、LCD顯示圖像的過程如下: 其中,VSYNC和HSYNC是有寬度的,加上後如下: 參數解釋: HBP(Horizontal Back Porch)水平後沿:在每行或每列的象素數據開始輸出時要插入的象 素時鐘周期數 HFP(Horizontal Front Porch )水平前沿:在每行或每列的象 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...