mysql双机热备
MySQL雙機熱備
目錄:
1、說明
2、數據手工同步
3、修改主數據庫配置文件
4、修改從數據庫配置文件
5、主數據庫添加備份用戶
6、從數據庫設置為Slave
7、驗證
?
1、說明
? ? 1)數據庫版本要高于5.1
2)從數據庫的版本要 >= 主數據庫服務器的版本
3)數據庫操作所用工具為 :Navicat for MySQL
4)主數據庫IP:192.168.1.105
從數據庫IP:192.168.1.103
2、數據手工同步
? ? 目的:自動同步前,保證兩個數據庫的數據相同。
1)主數據(192.168.1.105)庫導出要備份的數據,示意圖如下:
2)從數據庫(192.168.1.103)導入主數據庫的備份數據,示意圖如下:
3、修改主數據庫配置文件
1)找到配置文件(主機IP:192.168.1.105)
5.6默認在數據文件夾中,名稱為my.ini(注意:不是在程序文件夾中,程序文件夾中的配置文件名為my-default.ini,修改后不起作用)
D:\ProgramData\MySQL\MySQL Server 5.6\my.ini
??????? 5.5修改安裝文件中夾中的my.ini
????????? E:\MySQL\MySQL Server 5.5\my.ini
2)修改配置文件,(最好備份一下原來的配置文件)
左邊為原來的文件,右邊為修改后的文件
[mysqld]?(MySql5.5要配置在這個節點下)
server_id =?105?(設置問IP的最后一位即可)
log_bin=mysql-bin?(二進制日志文件名稱)
binlog-do-db =childrendb (要備份的數據庫名稱)
log_bin_trust_function_creators=TRUE?(若涉及及同步函數或者存儲過程需要配置,否則主備會產生異常不能同步?)
示意圖如下:
3)重啟服務器
4、修改從數據庫配置文件
1)找到從數據庫的配置文件(主機IP:192.168.1.103)
2)修改配置文件
左邊為原來的文件,右邊為修改后的文件
server_id = 103 (設置問IP的最后一位即可)
示意圖如下:
3)重啟服務器
5、主數據庫添加備份用戶
1)選擇運行SQL文件窗口
2)運行命令
grantreplication slave on*.*to'kimmadbsyn'@'%' identified by'kimma2016';?
作用:只賦予這個用戶 “主從復制” 權限
示意圖如下:
3)這個用戶用于從服務器同步數據。
6、從數據庫設置為Slave
1)查詢主服務器(192.168.1.105)的日志名稱和pos:
命令行:
show master status;
示意圖如下:
2)從數據庫服務器(192.168.1.103)打開運行命令界面,并輸入以下內容:
命令行:
change master to
master_host='192.168.221.29',?
master_user='kimmadbsyn',?
master_password='kimma2016',?
master_log_file='mysql-log.000001',?
master_log_pos=331;
說明:
master_host:主服務器的IP地址?
master_user:主服務器設置的備份用戶
master_password:主服務器備份用戶密碼
master_log_file:主服務器的日志名稱
master_log_pos:主服務器的位置
示意圖如下:
3)開啟Slave
輸入命令
start slave;
?
7、驗證
1)查詢從服務器
命令:
show slave status;
2)添加一個表和數據后,驗證一下是否同步到從服務器。
?
?
配置參數說明
Server-id
ID值唯一的標識了復制群集中的主從服務器,因此它們必須各不相同。Master_id必須為1到232-1之間的一個正整數值,slave_id值必須為2到232-1之間的一個正整數值。
Log-bin
表示打開binlog,打開該選項才可以通過I/O寫到Slave的relay-log,也是可以進行replication的前提。
Binlog-do-db
表示需要記錄二進制日志的數據庫。如果有多個數據可以用逗號分隔,或者使用多個binlog-do-dg選項。
Binglog-ingore-db
表示不需要記錄二進制日志的數據庫,如果有多個數據庫可用逗號分隔,或者使用多binglog-ignore-db選項。
Replicate-do-db
表示需要同步的數據庫,如果有多個數據可用逗號分隔,或者使用多個replicate-do-db選項。
Replicate-ignore-db
表示不需要同步的數據庫,如果有多個數據庫可用逗號分隔,或者使用多個replicate-ignore-db選項。
Master-connect-retry
master-connect-retry=n表示從服務器與主服務器的連接沒有成功,則等待n秒(s)后再進行管理方式(默認設置是60s)。如果從服務器存在mater.info文件,它將忽略些選項。
Log-slave-updates
配置從庫上的更新操作是否寫入二進制文件,如果這臺從庫,還要做其他從庫的主庫,那么就需要打這個參數,以便從庫的從庫能夠進行日志同步。
Slave-skip-errors
在復制過程,由于各種原因導致binglo中的sql出錯,默認情況下,從庫會停止復制,要用戶介入。可以設置slave-skip-errors來定義錯誤號,如果復制過程中遇到的錯誤是定義的錯誤號,便可以路過。如果從庫是用來做備份,設置這個參數會存在數據不一致,不要使用。如果是分擔主庫的查詢壓力,可以考慮。
Sync_binlog=1 Or N
Sync_binlog的默認值是0,這種模式下,MySQL不會同步到磁盤中去。這樣的話,Mysql依賴操作系統來刷新二進制日志binary log,就像操作系統刷新其他文件的機制一樣。因此如果操作系統或機器(不僅僅是Mysql服務器)崩潰,有可能binlog中最后的語句丟失了。要想防止這種情況,可以使用sync_binlog全局變量,使binlog在每N次binlog寫入后與硬盤同步。當sync_binlog變量設置為1是最安全的,因為在crash崩潰的情況下,你的二進制日志binary log只有可能丟失最多一個語句或者一個事務。但是,這也是最慢的一種方式(除非磁盤有使用帶蓄電池后備電源的緩存cache,使得同步到磁盤的操作非常快)。
即使sync_binlog設置為1,出現崩潰時,也有可能表內容和binlog內容之間存在不一致性。如果使用InnoDB表,Mysql服務器處理COMMIT語句,它將整個事務寫入binlog并將事務提交到InnoDB中。如果在兩次操作之間出現崩潰,重啟時,事務被InnoDB回滾,但仍然存在binlog中。可以用-innodb-safe-binlog選項來增加InnoDB表內容和binlog之間的一致性。(注釋:在Mysql 5.1版本中不需要-innodb-safe-binlog;由于引入了XA事務支持,該選項作廢了),該選項可以提供更大程度的安全,使每個事務的binlog(sync_binlog=1)和(默認情況為真)InnoDB日志與硬盤同步,該選項的效果是崩潰后重啟時,在滾回事務后,Mysql服務器從binlog剪切回滾的InnoDB事務。這樣可以確保binlog反饋InnoDB表的確切數據等,并使從服務器保持與主服務器保持同步(不接收回滾的語句)。
Auto_increment_offset和Auto_increment_increment
Auto_increment_increment和auto_increment_offset用于主-主服務器(master-to-master)復制,并可以用來控制AUTO_INCREMENT列的操作。兩個變量均可以設置為全局或局部變量,并且假定每個值都可以為1到65,535之間的整數值。將其中一個變量設置為0會使該變量為1。
這兩個變量影響AUTO_INCREMENT列的方式:auto_increment_increment控制列中的值的增量值,auto_increment_offset確定AUTO_INCREMENT列值的起點。
如果auto_increment_offset的值大于auto_increment_increment的值,則auto_increment_offset的值被忽略。例如:表內已有一些數據,就會用現在已有的最大自增值做為初始值。
?
?
總結
- 上一篇: 【洛谷P2023】维护序列
- 下一篇: 达梦数据库管理工具介绍