本文目錄一覽:
如何實現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-tw/n/308383.html