以前一直使用mysqldump+crontab的方式對MySQL數據庫進行備份,這種方式用來對博客進行備份還是比較實用的,但是在備份VPN數據庫這樣實時性要求比較高的場合就顯得不夠用了,於是打算利用主從服務器進行備份。
修改主服務器的配置文件/etc/my.cnf
,在[mysqld]
段加入以下內容:
server-id=1 log-bin binlog-do-db=''#需要備份的數據庫 binlog-ignore-db=''#不需要備份的數據庫
然後重啟mysql服務
/etc/init.d/mysqld restart
打開mysql shell,執行命令
mysql > show master status;
查看當前二進制文件的文件名及偏移位置,並記錄下File和Position的值
修改從服務器的配置文件/etc/my.cnf
,在[mysqld]
段加入以下內容`
server-id=2 master-host='主服務器IP地址' master-user='主服務器的備份帳號' master-pass='主服務器的備份密碼' master-port='3306'#主服務器端口 master-connect-retry=60 # replicate-do-db=''#需要備份的數據庫 replicate-ignore-db=‘’#不需要備份的數據庫
將需要備份的數據庫手動導入從服務器,然後重啟mysql服務
/etc/init.d/mysqld restart
打開mysql shell,執行命令停止slave
mysql > stop slave;
接著,根據前面從主服務器上得到的二進制文件名以及偏移位置信息,設置從服務器
mysql > CHANGE MASTER TO ->MASTER_HOST='master_host_name', ->MASTER_USER='replication_user_name', ->MASTER_PASSWORD='replication_password', ->MASTER_LOG_FILE='recorded_log_file_name', ->MASTER_LOG_POS=recorded_log_position;
然後啟動slave
mysql > start slave;
查看slave狀態
mysql > show slave status\G;
這時候,如果顯示
Slave_IO_Running: Yes
並且
Slave_SQL_Running: Yes
就說明已經配置成功