跨伺服器備份: 伺服器A:192.168.5.193 測試資料庫TestDB 伺服器B:192.168.5.194 目標:將伺服器A上的測試資料庫定時備份到伺服器B中 需要技術: mysqldump + crontab 步驟: 1. 修改mysql遠程連接訪問許可權 修改mysql的配置文件/mysq ...
跨伺服器備份:
伺服器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';
說明:
- username:你將創建的用戶名
- host:指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%
- password:該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸伺服器
GRANT privileges ON databasename.tablename TO 'username'@'host'
說明:
- privileges:用戶的操作許可權,如SELECT,INSERT,UPDATE等,如果要授予所的許可權則使用ALL
- databasename:資料庫名
- 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的數據。
/可以看到這裡備份成功了/
- 使用crontab進行定時備份
crontab -e後
1 * * * * ~/backupDatabases.sh
以上命令使得,每小時的第一分鐘,對資料庫進行備份,當然也可以隨意修改一些時間。