天天看點

mysql資料庫運維方案

歡迎關注【無量測試之道】公衆号,

Python程式設計學習資源幹貨、

Python+Appium架構APP的UI自動化、

Python+Selenium架構Web的UI自動化、

Python+Unittest架構API自動化、

文章下方有公衆号二維碼,可直接微信掃一掃關注即可。

資料庫不僅僅是dba的工作,每一個測試人員也應該懂得基本的資料運維操作,因為資料庫是資料承載的地方并且是系統中非常重要的一部分,是以我們也需要熟練的對資料庫進行基本維護。

01、常用備份恢複指令

第1組指令:

1.1:導出所有庫

mysqldump --socket=/home/q/mysql/multi/3306/socket/mysql.sock -hlocalhost -utester -p123456 --all-databases > alldb.sql

1.2:導入所有庫

mysql -hlocalhost -utester -p123456 < alldb.sql

或者

mysql>source alldb.sql;

第2組指令:

2.1:導出某些庫

mysqldump --socket=/home/q/mysql/multi/3306/socket/mysql.sock -hlocalhost -utester -p123456  --databases testdb1 testdb2 > testdb.sql

2.2:導入某些庫

mysql-hlocalhost -utester -p123456 < testdb.sql

mysql>source testdb.sql;

第3組指令:

3.1:導出單個庫

mysqldump --socket=/home/q/mysql/multi/3306/socket/mysql.sock -hlocalhost -utester -p123456  --databases testdb1 > testdb1.sql

3.2:導入單個庫

mysql-hlocalhost -utester -p123456 < testdb1.sql

mysql>source testdb1.sql;

第4組指令: 

4.1:導出某些資料表

mysqldump --socket=/home/q/mysql/multi/3306/socket/mysql.sock -hlocalhost -utester -p123456  --databases testdb1 table1 table2 > tables.sql

4.2:導入某些資料表

mysql -uusername -ppassword testdb1 < tables.sql

mysql>source tables.sql;

02、shell腳本實作資料庫備份

#!/bin/bash  #是指此腳本使用/bin/bash來解釋執行,#!是特殊的表示符

export PATH=/bin:/usr/bin:/usr/local/bin #進行環境變更的設定

TODAY=`date +"%d%b%Y"` #擷取日期,進行變更指派

DB_BACKUP_PATH='/backup/dbbackup'  #先建立備份目錄

MYSQL_HOST='localhost' #mysql伺服器

MYSQL_PORT='3306' #mysql服務端口

MYSQL_USER='root' #mysql賬号

MYSQL_PASSWORD='123456' #mysql 密碼

DATABASE_NAME=‘db1' #指定備份的資料名稱

mkdir -p ${DB_BACKUP_PATH}/${TODAY}  #建立備份的目錄

echo "Backup started for database - ${DATABASE_NAME}" #輸出開始備份提示語

mysqldump -h ${MYSQL_HOST} \

          -P ${MYSQL_PORT} \

          -u ${MYSQL_USER} \

          -p ${MYSQL_PASSWORD} \

          ${DATABASE_NAME} | gzip > ${DB_BACKUP_PATH}/${TODAY}/${DATABASE_NAME}-${TODAY}.sql.gz  #執行備份并壓縮

if [ $? -eq 0 ]; then #判斷mysqldump是否成功

  echo "Database backup successfully completed" #輸出成功的提示語

else

  echo "Error found during backup" #輸出失敗的提示語

fi

03、使用mysqlbinlog恢複資料

binlog配置:

在MySQL配置檔案my.cnf檔案中的mysqld節中添加下面的配置檔案:

[mysqld]

#設定日志格式

binlog_format = mixed

#設定日志路徑,注意路徑需要mysql使用者有寫權限

log-bin = /data/mysql/logs/mysql-bin.log

#設定binlog清理時間

expire_logs_days = 7

#binlog每個日志檔案大小

max_binlog_size = 100m

#binlog緩存大小

binlog_cache_size = 4m

#最大binlog緩存大小

max_binlog_cache_size = 512m

重新開機服務。

執行mysqlbinlog指令恢複資料:

$> mysqlbinlog --stop-date="2019-05-31 23:59:59" /home/q/mysql/log/binlog/binlog.000009 | mysql -utester -p123456 #根據日志檔案binlog.000008将資料恢複到2019-05-31 23:59:59以前的操作。

總結:資料庫的運維對于測試人員來說仍然是非常重要的,比如:非常重要也不太容易建構的測試資料需要做備份操作時,資料庫的運維就顯得很有技術含量,掌握資料的基本運維可以使測試工作做得更出色,同時也會讓開發刮目相看,朋友們一起加油~

備注:我的個人公衆号已正式開通,緻力于測試技術的分享,包含:大資料測試、功能測試,測試開發,API接口自動化、測試運維、UI自動化測試等,微信搜尋公衆号:“無量測試之道”,或掃描下方二維碼:

mysql資料庫運維方案

 添加關注,一起共同成長吧。