1. 程式人生 > >Linux下mysql資料庫自動定時備份

Linux下mysql資料庫自動定時備份

對於網遊來說,資料庫中的資料尤其重要,實際運營中通常會有DBA或者運維人員對資料庫中資料進行日常備份,防止伺服器宕機或硬碟損壞導致的資料丟失問題

1.建立備份目錄


cd /home/game
mkdir backup
cd backup

2.建立備份shell指令碼


vi bkDatabaseName.sh
將以下內容複製貼上
#!/bin/bash
#!/bin/bashmysqldump -uusername -ppassword DatabaseName > /home/game/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql


把username 替換為實際的使用者名稱
把password 替換為實際的密碼
把DatabaseName 替換為實際的資料庫名

3.新增可執行許可權


chmod u+x bkDatabaseName.sh


新增可執行許可權之後先執行一下,看看指令碼有沒有錯誤,能不能正常使用


./bkDatabaseName.sh

4.新增計劃任務


檢測或安裝crontab

執行以下命令看是否安裝有crontab
crontab
如果錯“command not found”,則表明沒安裝;如果沒安裝,先安裝,參照以下部落格
CentOS下使用yum命令安裝計劃任務程式crontab
使用rpm命令從CentOS系統盤安裝計劃任務程式crontab

新增計劃任務

crontab -e
輸入以下內容並儲存

*/1 * * * * /home/backup/bkDatabaseName.sh

意思是每隔一分鐘執行一次bkDatabaseName.sh,crontab格式參照以下部落格

5.測試計劃任務是否執行


執行幾次“ll”命令看下是否有檔案建立就知道了。如果任務執行失敗,看以下日誌

tail -f /var/log/cron

輸出大概是這樣的:
Nov 23 18:00:01 app CROND[31215]: (mysql) CMD (/home/mysql/.wipefs)
Nov 23 18:00:01 app crontab[31219]: (mysql) LIST (mysql)
Nov 23 18:01:01 app CROND[31388]: (root) CMD (run-parts /etc/cron.hourly)
Nov 23 18:01:01 app run-parts(/etc/cron.hourly)[31388]: starting 0anacron
Nov 23 18:01:01 app run-parts(/etc/cron.hourly)[31397]: finished 0anacron
Nov 23 18:02:01 app CROND[31549]: (root) CMD (/home/game/backup/bkdd5.sh)

6.備份資料庫到遠端主機


scp d4tool_$(date +%Y%m%d_%H%M%S).sql [email protected]:/home/backup 

意思是將本地檔案複製到261這個主機的backup目錄下,scp命令參考如下部落格
scp命令

這樣每次用scp命令的時候都需要輸入261的登陸密碼,很不方便,需要免密輸入

7.scp無需輸密碼傳送檔案


兩種方法:1.配對祕鑰 2.用expect指令碼

配對祕鑰

在源主機A上用如下命令生成配對祕鑰:
[[email protected] ~]# ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e2:9e:98:7a:36:62:bc:d8:d1:b3:3c:fe:f8:4e:fd:9c [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|      . S        |
|   . . o         |
| .. o o .        |
| o+o=O . o .     |
|..+BB**   E      |
+-----------------+
直接enter就好,生成的rsa跟pub檔案都放在預設的/root/.ssh目錄下。將pub檔案拷貝到目標主機B上的/root/.ssh/authorized_keys中(如果沒有則建立一個),
scp id_rsa.pub [email protected]:/root/.ssh/authorized_keys 
這樣就ok了

用expect指令碼


#!/usr/bin/expect  
set timeout 10  
set host [lindex $argv 0]  
set username [lindex $argv 1]  
set password [lindex $argv 2]  
set src_file [lindex $argv 3]  
set dest_file [lindex $argv 4]  
spawn scp $src_file [email protected]$host:$dest_file  
 expect {  
 "(yes/no)?"  
  {  
    send "yes\n"  
    expect "*assword:" { send "$password\n"}  
  }  
 "*assword:"  
  {  
    send "$password\n"  
  }  
}  
expect "100%"  
expect eof 

注意程式碼剛開始的第一行,指定了expect的路徑,與shell指令碼相同,這一句指定了程式在執行時到哪裡去尋找相應的啟動程式。程式碼剛開始還設定了timeout的時間為10秒,如果在執行scp任務時遇到了程式碼中沒有指定的異常,則在等待10秒後該指令碼的執行會自動終止。

從以上程式碼剛開始的幾行可以看出,我為這個指令碼設定了5個需要手動輸入的引數,分別為:目標主機的IP、使用者名稱、密碼、本地檔案路徑、目標主機中的檔案路徑。如果將以上指令碼儲存為expect_scp檔案,則在shell下執行時需要按以下的規範來輸入命令:


./expect_scp 192.168.75.130 root 123456 /root/src_file /root/dest_file  

以上的命令執行後,將把本地/root目錄下的src_file檔案拷貝到使用者名稱為root,密碼為123456的主機192.168.75.130中的/root下,同時還將這個原始檔重新命名為dest_file
spawn代表在本地終端執行的語句,在該語句開始執行後,expect開始捕獲終端的輸出資訊,然後做出對應的操作。expect程式碼中的捕獲的(yes/no)內容用於完成第一次訪問目標主機時儲存金鑰的操作。有了這一句,scp的任務減少了中斷的情況。程式碼結尾的expect eof與spawn對應,表示捕獲終端輸出資訊的終止
使用expect需要了解的一點是:用expect速度會比較慢,因為需要等待返回的資料,然後輸入命令執行,沒有ssh金鑰登入的快速

相關推薦

Linuxmysql資料庫自動定時備份

對於網遊來說,資料庫中的資料尤其重要,實際運營中通常會有DBA或者運維人員對資料庫中資料進行日常備份,防止伺服器宕機或硬碟損壞導致的資料丟失問題 1.建立備份目錄 cd /home/game mkdir backup cd backup2.建立備份shell指令碼 vi

Linuxmysql自動定時備份

yaml val dev 目錄 lang 自動 blank UNC -- 1、查看磁盤空間情況: 既然是定時備份,就要選擇一個空間充足的磁盤空間,避免出現因空間不足導致備份失敗,數據丟失的惡果! 存儲到當前磁盤這是最簡單,卻是最不推薦的;服務器有多塊硬盤,最好是把備份存放到

Linuxmysql資料庫每天自動備份定時備份

1、檢視磁碟空間情況:既然是定時備份,就要選擇一個空間充足的磁碟空間,避免出現因空間不足導致備份失敗,資料丟失的惡果! 儲存到當前磁碟這是最簡單,卻是最不推薦的;伺服器有多塊硬碟,最好是把備份存放到另一塊硬碟上;有條件就選擇更好更安全的儲存介質;# df -h Filesys

linux啟用定時任務對mysql資料庫進行定時備份

                                          &

Linuxmysql資料庫自動備份與還原 遠端備份和本地備份

Linux系統下Mysql備份還原 MySql的還原與備份 1 備份     mysqldump -u root -p shop > /home/andy/shop20150910.sql   

Linuxmysql資料庫定時備份並刪掉3天前的備份檔案

1.首先檢查下有沒有安裝crond,命令為service crond status,如果出現unrecognized service,則說明沒有安裝,如果出現    crond is stopped。如果出現crond (pid  1956) is running...則表示

LinuxOracle資料庫自動備份Shell指令碼

1.在伺服器建立備份目錄,並賦予許可權 mkdir -p /backup/P_DATA  #新建shell指令碼存放路徑 mkdir -p /backup/P_DB_BACK  #新建Oracle資料庫備份目錄 chown -R oracle:oinstall /backup/P

windows環境 Mysql資料庫自動備份

確定mysqldump 命令是否可用1,在 dos模式 下,進入對應mysql bin 目錄。 如 本例為 C:\Program Files\MySQL\MySQL Server 5.7\bin2,輸入如下命令C:\Program Files\MySQL\MySQL Serv

linux mysql資料庫備份和還原

#mysqldump db_name >/path/name.sql 上面的命令意思是把一個庫匯出到一個SQL檔案. 當然,你直接在有ROOT密碼的機子上執行以上命令一定會報錯.所以,請用 #mysqldump db_name >/path/na

Linuxmysql資料庫的多例項實現

準備環境: centos7 安裝 yum install mariadb-server 規劃實現多例項的目錄結構、 埠:3306,3307, 3308 每個例項存放資料庫的資料夾 /data/mysql{3306,3307,3308} /data/mysql/3306/{etc,

linuxmysql自動補全工具mycli

習慣了在bash命令列下的tab自動補全功能,在linux下安裝mysql,或者是mariadb後發現不能自動補全,這就讓我很難受,所以我找到了一個很強大的工具可以實現自動補全 這個工具就是mycli,這個工具很強大,先來看一下 我用的是centos7下的ma

Linuxmysql資料庫安裝

Linux下mysql資料庫的安裝 本文主要介紹通過tar.gz進行資料庫的安裝,也可通過yum進行直接安裝 該筆記基於mysql5.5.61版本。 1、安裝mysql 1)、上傳mysql的tar包到/usr目錄下 2)、安裝mysql 解壓mysq

LinuxTomcat日誌自動定時打包完美實現

一、場景 1、環境 CentOS 7.0,Tomcat 8.0.33 ,(jdk-1.8.0_171) 2、目的 隨著時間推移,tomcat下的日誌檔案catalina.out越來越大,當檢視日誌時效率低下。所以,為了方便日誌的查閱,將catalina.out

mysql定時執行某一儲存過程,並實現mysql資料庫定時備份

mysql儲存過程 1、儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。 語法:CREATE PROCEDURE  過程名([[IN|OU

LinuxMySQL資料庫主從同步配置

Linux下MySQL資料庫主從同步配置 一.配置mysql主資料庫#172.30.65.122 mysql -u root-p#進入控制檯 create databasecesudb#建立資料庫測速db insert intomysql.user(Host,User,Pa

9、Linuxmysql資料庫安裝與配置實操

1、安裝 sudo yum -y install mysql-server 2、 sudo vim /etc/my.cnf 將字符集設定成UTF-8 3、將mysql設定為隨系統啟動 sudo chkconfig mysqld on sudo chkco

AWS LinuxMySQL資料庫的安裝與配置

1.root使用者登入Linux,使用yum 命令安裝MySQL,安裝完畢後,mysql 資料庫路徑在/var/lib/mysql ,配置檔案路徑為/etc/my.cnf sudo yum install mysql sudo yum install mysql-ser

LinuxMySQL資料庫操作的常用命令列

一.linux下啟動mysql的命令:             1. mysqladmin start           2. /ect/init.d/mysql start (前面為mysql的安

MYSQL資料庫自動定期備份和恢復工具

MYSQL資料庫備份主要有兩種方式: 1. 只備份資料,不備份資料機構。   SQL:   SELECT * FROM table_name INTO OUTFILE 'filepath'  FIELDS TERMINATED BY '|' ENCLOSED BY '"'

Linuxmysql資料庫一主一從同步配置

MySQL主從同步配置 mmj 16.09.29 1.確認執行環境 1.1確認主從IP 主伺服器(master):192.168.3.10 從伺服器(slave):192.168.3.18 1.2確認資料庫版本 都為5.5.31 2.主伺服器上配置 2.1修改MySQ