mysql双机数据热备份_配置MySQL数据库双机热备份
1、mysql 數據庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好 mysql 數據庫提供了一種主從備份的機制,其實就是把主數據庫的所有的數據同時寫到備份數據庫中。實現 mysql 數據庫的熱備份?! ?、要想實現雙機的熱備首先要了解主從數據庫服務器的版本的需求。要實現熱備 mysql 的版本都要高于3.2,還有一個基本的原則就是作為從數據庫的數據庫版本可以高于主服務器數據庫的版本,但是不可以低于主服務器的數據庫版本。
3、設置主數據庫服務器:
a. 首先查看主服務器的版本是否是支持熱備的版本。然后查看 my.cnf(類 unix)或者 my.ini(windows)中 mysqld 配置塊的配置有沒有 log-bin (記錄數據庫更改日志),因為 mysql 的復制機制是基于日志的復制機制,所以主服務器一定要支持更改日志才行。然后設置要寫入日志的數據庫或者不要寫入日志的數據庫。這樣只有您感興趣的數據庫的更改才寫入到數據庫的日志中。
server-id=1 //數據庫的 id 這個應該默認是1就不用改動
log-bin=log_name //日志文件的名稱,這里可以制定日志到別的目錄 如果沒有設置則默認主機名的一個日志名稱
binlog-do-db=db_name //記錄日志的數據庫
binlog-ignore-db=db_name //不記錄日志的數據庫
以上的如果有多個數據庫用”,”分割開,然后設置同步數據庫的用戶帳號
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO ‘repl’@'%.mydomain.com’ IDENTIFIED BY ’slavepass’;
4.0.2 以前的版本, 因為不支持 REPLICATION 要使用下面的語句來實現這個功能
mysql> GRANT FILE ON *.*
-> TO ‘repl’@'%.mydomain.com’ IDENTIFIED BY ’slavepass’;
設置好主服務器的配置文件后重新啟動數據庫
b.鎖定現有的數據庫并備份現在的數據
mysql> FLUSH TABLES WITH READ LOCK;
備份數據庫有兩種辦法一種是直接進入到 mysql 的 data 目錄然后打包你需要備份數據庫的文件夾,第二種是使用 mysqldump 的方式來備份數據庫但是要加上”–master-data ” 這個參數,建議使用第一種方法來備份數據庫
c.查看主服務器的狀態
mysql> show master status\G;
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | test | manual,mysql |
+—————+———-+————–+——————+
記錄 File 和 Position 項目的值,以后要用的。
d.然后把數據庫的鎖定打開
mysql> UNLOCK TABLES;
4、設置從服務器
a.首先設置數據庫的配置文件
server-id=n //設置數據庫 id 默認主服務器是1可以隨便設置但是如果有多臺從服務器則不能重復。
master-host=db-master.mycompany.com //主服務器的IP地址或者域名
master-port=3306 //主數據庫的端口號
master-user=pertinax //同步數據庫的用戶
master-password=freitag //同步數據庫的密碼
master-connect-retry=60 //如果從服務器發現主服務器斷掉,重新連接的時間差
report-host=db-slave.mycompany.com //報告錯誤的服務器
b.把從主數據庫服務器備份出來的數據庫導入到從服務器中
c.然后啟動從數據庫服務器,如果啟動的時候沒有加上 “–skip-slave-start” 這個參數則進入到 mysql 中
mysql> slave stop; //停止 slave 的服務
d.設置主服務器的各種參數
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_host_name’, //主服務器的IP地址
-> MASTER_USER=’replication_user_name’, //同步數據庫的用戶
-> MASTER_PASSWORD=’replication_password’, //同步數據庫的密碼
-> MASTER_LOG_FILE=’recorded_log_file_name’, //主服務器二進制日志的文件名,前面要求記住的參
-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)
e.啟動同步數據庫的線程
mysql> slave start;
查看數據庫的同步情況吧。如果能夠成功同步那就恭喜了!
查看主從服務器的狀態
mysql> SHOW PROCESSLIST\G //可以查看 mysql 的進程看看是否有監聽的進程
如果日志太大清除日志的步驟如下
1.鎖定主數據庫
mysql> FLUSH TABLES WITH READ LOCK;
2.停掉從數據庫的 slave
mysql> slave stop;
3.查看主數據庫的日志文件名和日志文件的 position
show master status;
+—————+———-+————–+——————+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+—————+———-+————–+——————+
| louis-bin.001 | 79 | | mysql |
+—————+———-+————–+——————+
4.解開主數據庫的鎖
mysql> unlock tables;
5.更新從數據庫中主數據庫的信息
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_host_name’, //主服務器的IP地址
-> MASTER_USER=’replication_user_name’, //同步數據庫的用戶
-> MASTER_PASSWORD=’replication_password’, //同步數據庫的密碼
-> MASTER_LOG_FILE=’recorded_log_file_name’, //主服務器二進制日志的文件名,前面要求記住的參數
-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)
6.啟動從數據庫的 slave
mysql> slave start;
總結
以上是生活随笔為你收集整理的mysql双机数据热备份_配置MySQL数据库双机热备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php获取html中文本框内容_小猿圈P
- 下一篇: python控制语句第一章_python