mysql 容災備份


跨服務器備份:

服務器A:192.168.5.193
測試數據庫TestDB
服務器B:192.168.5.194
目標:將服務器A上的測試數據庫定時備份到服務器B中

需要技術:mysqldump + crontab

步驟:
1.修改mysql遠程連接訪問權限
修改mysql的配置文件/mysql/my.conf,將bind-address后面增加遠程訪問IP地址或者禁掉這句話就可以讓遠程機登陸訪問了。

2.增加服務器授權用戶
在服務器A上:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

說明:

  1. username:你將創建的用戶名
  2. host:指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%
  3. password:該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器
GRANT privileges ON databasename.tablename TO 'username'@'host'

說明:

  1. privileges:用戶的操作權限,如SELECT,INSERT,UPDATE等,如果要授予所的權限則使用ALL
  2. databasename:數據庫名
  3. tablename:表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用表示,如.*

本測試實例mysql語句為:

CREATE USER 'why'@'192.168.5.194' IDENTIFIED BY '123456';
GRANT privileges ON *.* TO 'why'@'192.168.5.194';
flush privileges;    /*刷新一下權限*/

這樣就建立了如下的用戶權限表,在服務器端查看一下,命令為:

select user,host from mysql.user;

3.在服務器B上編寫如下腳本

#!/bin/bash
my_user=why                                            #服務器B的用戶(必須是已經授權的)
my_pass=123456                                      #服務器A的用戶密碼
my_host=192.168.5.193                            #要連接的服務器A
my_db1=TestDB                                        #想要導出的服務器A的數據庫(需要授權)
mm_dir=/home/fabric/backup/t2.sql           #導出的地址
mysqldump_cmd=/usr/bin/mysqldump       #mysqldump的可運行指令地址

local_usr=root                                            #本地數據庫的用戶名
local_pass=000000                                    #本地數據庫的密碼
mysql_cmd=/usr/bin/mysql                        #mysql的可運行指令地址

$mysqldump_cmd -h $my_host -u $my_user -p$my_pass $my_db1 > $mm_dir
$mysql_cmd -u $local_usr -p$local_pass $my_db1 < $mm_dir

在命令行下進行測試,看看是否能夠備份。
查看服務器A上的數據,這里的圖形化工具是mysql workbench(使用起來還不錯)


運行如上腳本后,查看服務器B的數據。


/可以看到這里備份成功了/

  1. 使用crontab進行定時備份
    crontab -e后
1 * * * * ~/backupDatabases.sh

以上命令使得,每小時的第一分鍾,對數據庫進行備份,當然也可以隨意修改一些時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM