天天看點

用python備份mysql資料庫的腳本

一、前言      

       剛剛開始學python,還在看一套簡單的python教學視訊,但還未看完,簡單的寫了個mysql備份腳本,也算是第一個python腳本的處女座哈~~,因為才剛剛才開始,對python 的class 、function、build-in function 、子產品 等等,怎麼使用,什麼時候使用都沒什麼概念 ,由于第一個,是以僅此記錄一下吧,也歡迎路過的pythoner賜教。

二、腳本

環境:Centos 6.3

Python  2.6.6     

腳本如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<code>#!/usr/bin/env python</code>

<code># author: kuangl</code>

<code># -*- coding: utf-8 -*-</code>

<code># filename: mysql_back_zhubao.py</code>

<code>import</code> <code>os</code>

<code>import</code> <code>time</code>

<code>import</code> <code>string</code>

<code>''' defined variable '''</code>

<code>databases</code><code>=</code><code>[</code><code>'kaixin'</code><code>]</code>

<code>sql_user</code><code>=</code><code>'root'</code>

<code>sql_pwd</code><code>=</code><code>[</code><code>'kwqsk123p;/$'</code><code>]</code>

<code>''' Defining the remote backup variables '''</code>

<code>jv_test01_ip</code><code>=</code><code>"192.168.1.16"</code>

<code>jv_test01_user</code><code>=</code><code>"kuangl"</code>

<code>jv_test01_port</code><code>=</code><code>'61239'</code>

<code>jv_test01_dir</code><code>=</code><code>"/home/kuangl/zhubao_mysql/"</code>

<code>''' Create the backup file directory '''</code>

<code>mkdir_dir</code><code>=</code><code>"/home/kuangl/backup/jewelvary/"</code><code>+</code><code>time.strftime(</code><code>'%Y%m'</code><code>)</code><code>+</code><code>"/"</code>

<code>if</code> <code>not</code> <code>os.path.exists(mkdir_dir):</code>

<code>os.mkdir(mkdir_dir)</code>

<code>print</code> <code>'Successfully created directory'</code><code>, mkdir_dir</code>

<code>''' Start backup of database to the specified directory '''</code>

<code>for</code> <code>database_name </code><code>in</code> <code>databases:</code>

<code>os.chdir(mkdir_dir)</code>

<code>today_sql</code><code>=</code><code>mkdir_dir</code><code>+</code><code>database_name</code><code>+</code><code>'_'</code><code>+</code><code>time.strftime(</code><code>'%Y%m%d'</code><code>)</code><code>+</code><code>'.sql'</code>

<code>sql_comm</code><code>=</code><code>"mysqldump -u %s -p'%s' %s &gt; %s"</code><code>%</code><code>(sql_user,sql_pwd[</code><code>0</code><code>],database_name,today_sql)</code>

<code>if</code> <code>os.system(sql_comm) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>print</code> <code>database_name,</code><code>'is backup successfully!'</code><code>‍</code>

<code>else</code><code>:</code>

<code>print</code> <code>database_name,</code><code>'is backup Failed!!'</code>

<code>time.sleep(</code><code>3</code><code>)</code>

<code>scp_comm</code><code>=</code><code>"scp -P%s %s %s@%s:%s "</code><code>%</code> <code>(jw_admin_port,today_sql,jw_admin_user,jw_admin_ip,jw_admin_dir)</code>

<code>if</code> <code>os.system(scp_comm) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>print</code> <code>today_sql,</code><code>'This file backup to jv_test01 success!'</code>

<code>print</code> <code>today_sql,</code><code>'This file backup to jv_test01  Failed!!'</code>

三、測試

<code>[kuangl@jv</code><code>-</code><code>test01 ~]$ .</code><code>/</code><code>mysql_back_zhubao.py</code>

<code>kaixin </code><code>is</code> <code>backup successfully!</code>

<code>kaixin_20130806.sql                                                                                                                                  </code><code>100</code><code>%</code> <code>1997KB</code>   <code>2.0MB</code><code>/</code><code>s   </code><code>00</code><code>:</code><code>00</code>

<code>/</code><code>home</code><code>/</code><code>kuangl</code><code>/</code><code>backup</code><code>/</code><code>jewelvary</code><code>/</code><code>201308</code><code>/</code><code>kaixin_20130806.sql This </code><code>file</code> <code>backup to jv</code><code>-</code><code>test01 success!</code>

本文轉自 kuangling 51CTO部落格,原文連結:http://blog.51cto.com/kling/1265359