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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...