本文目錄一覽:
如何實現Mysql數據庫的差異性備份和增量備份?
Ø 首先,我們需要開啟MySQL服務器的二進制日誌功能,其實現方法有很多種,最常用的是在MySQL的配置文件的mysqld項中加入log-bin=[filepath]項;也可以使用mysqld –log-bin=[filepath]重新啟動MySQL服務器。
Ø 其次,使用mysqldump對數據庫進行完全備份,它可以實現對數據據的聯機,非阻塞的熱備份,不會影響其他進程對數據庫的讀寫操作。(參考指令:mysqldump -uroot –password=123 –single-transaction –flush-logs –master-data=2 –all-databases –delete-master-logs d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)
Ø 第三,使用flush logs指令刷新創建新的二進制日誌。可以通過mysqladmin flush logs或者flush logs語句實現。最方便有效的方法是將它做成批處理文件,然後讓操作系統定期執行。
Ø 使用mysql *.sql進行完全備份的恢復。
Ø 使用mysqlbinlog logs-bin.[0-9]* | mysql進行增量備份的恢復。一般的,假設我們周日下午三點進行了完全備份並生成備份文件full_backup_20100415_3_PM.sql,周一周二中午一點進行了兩次增量備份,分別生成增量備份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00數據庫發生崩潰,需要進行數據庫恢復,此時正在記錄的二進制日誌為inc_backup_1_PM.0009,我們還需要恢復其中記錄的操作。具體的恢復操作為:
mysql full_backup_20100415_3_PM.sql
mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009
u 具體應用(結合T8項目)
根據上述分析,我們在T8項目使用MySQL增量備份,也需要三個步驟:
Ø 首選修改MySQL啟動配置文件my.cnf,在其中的mysqld項中增加log-bin選項,重新啟動MySQL 服務器以開啟二進制日誌功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如圖所示:
Ø 編寫完全備份可執行文件腳本:
Ø 編寫增量備份可執行文件腳本:
Ø 執行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。
Ø 執行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002。
其中full_backup_20100417_1_pm. sql和t8server-bin..000002分別是完全備份和增量備份文件。
要進行備份文件的恢復,只需執行命令:
u 總結
MySQL提供了很方便的完全+增量備份實現方法,我們只需調用系統內置的方法或者作出一些細微的配置就可以對MySQL數據庫進行備份和恢復。對於MyISAM數據庫和InnoDB數據庫,都可以通過mysqldump實現數據庫的完全邏輯備份,通過啟動二進制日誌(binary logs),可以記錄一個時間段內對數據庫的所有可能更新的操作,從而通過flush logs創建新的日誌而實現增量備份。
怎樣實現MySQL數據庫雙機熱備份
1、MySQL數據庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好MySQL數據庫提供了一種主從備份的機制,其實就是把主數據庫的所有的數據同時寫到備份數據庫中。實現MySQL數據庫的熱備份。
2、要想實現雙機的熱備首先要了解主從數據庫服務器的版本的需求。要實現熱備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數據庫如何實現雙機熱備的配置成功方案
1.mysql數據庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好mysql數據庫提供了一種主從備份的機制,其實就是把主數據庫的所有的數據同時寫到備份數據庫中。實現mysql數據庫的熱備份。
2.要想實現雙機的熱備首先要了解主從數據庫服務器的版本的需求。要實現熱備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是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。
MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。
由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
由於MySQL是開放源碼軟件,對於一般的個人使用者和中小型企業來說,MySQL提供的功能綽綽有餘,可以大大降低開發成本。
Linux作為操作系統,Apache 或Nginx作為 Web 服務器,MySQL 作為數據庫,PHP/Perl/Python作為服務器端腳本解釋器。由於這四個軟件都是免費或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個穩定、免費的網站系統,被業界稱為「LAMP「或「LNMP」組合。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/308383.html