程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫服務器 主從配置,mysql主從

MySQL數據庫服務器 主從配置,mysql主從

編輯:MySQL綜合教程

MySQL數據庫服務器 主從配置,mysql主從


A B 為兩台 MySQL 服務器,均開啟二進制日志,數據庫版本 MySQL 5.5 一、服務器參數   [A 服務器 192.168.1.100] server-id = 1 binlog-do-db = test binlog-ignore-db = mysql replicate-do-db = test replicate-ignore-db = mysql   sync-binlog = 1   [B 服務器 192.168.1.101] server-id = 2 binlog-do-db = test binlog-ignore-db = mysql replicate-do-db = test replicate-ignore-db = mysql sync-binlog = 1   重啟A、B的數據庫服務器 二、操作步驟   # A B 服務器停止同步 STOP SLAVE;   # A B 服務器清空MASTER日志 RESET MASTER;   # A B 服務器清空SLAVE日志 RESET SLAVE;   # A 服務器授權同步賬戶 (我們會同步一次復制數據庫文件,所以授權為192.168.1%) GRANT REPLICATION SLAVE ON *.* TO 'master_slave'@'192.168.1%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;   # A 服務器鎖表(鎖表狀態下不能終止mysql進程,否則會失敗) FLUSH TABLES WITH READ LOCK;(當線上正在運行數據庫時,進行鎖表操作,數據不在寫入)   # 如果使用SSH,需要重新開啟,復制數據庫文件。 tar -cvf /tmp/mysql-data.tar /www/mysql tar -xvf /tmp/mysql-data.tar -C /   # 查看 A 服務器主機狀態(記錄二進制開始文件,位置) SHOW MASTER STATUS;  

        # B 服務器鎖表(鎖表狀態下不能終止mysql進程,否則會失敗) FLUSH TABLES WITH READ LOCK;   # 修改 B 服務器配置 (修改為A服務器的主機狀態) CHANGE MASTER TO MASTER_HOST='192.168.1.100',MASTER_USER='master_slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=106; MASTER_LOG_FILE 對應A 服務器show master status中的File;MASTER_LOG_POS對應A 服務器show master status中的Position   上圖箭頭所指的兩個參數如果都為yes,就代表同步成功。 # 開啟 B 服務器同步進程 START SLAVE;   # 查看 B 服務器同步狀態是否正常 SHOW SLAVE STATUS; ------------------------------------------- 主從配置完畢,下面是互為主從 ------------------------------------------ 下面的屬於主主配置,一般很少會用到,可能會遇到沖突。   # 查看 B 服務器主機(記錄二進制開始文件,位置) SHOW MASTER STATUS;   # 修改 A 服務器配置  (修改為B服務器的主機狀態) CHANGE MASTER TO MASTER_HOST='192.168.1.101',MASTER_USER='master_slave',MASTER_PASSWORD='master_slave123!@#',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=106;   # 開啟 A 服務器同步進程 START SLAVE;   # 分別查看 A B 服務器同步狀態,確定是否成功 SHOW SLAVE STATUS;SHOW MASTER STATUS;   # 解鎖 A B 服務器 UNLOCK TABLES;   # 數據測試分別在 A B 服務器上創建表插入數據測試 DROP TABLE IF EXISTS `test`; CREATE TABLE `test` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `value` varchar(100) DEFAULT '0',   PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; INSERT INTO `test` VALUES ('1', 'Hello');   注意: 1. 數據庫目錄下的master.info的內容會覆蓋命令行或my.cnf中指定的部分選項,更改配置需刪除master.info 2. my.cnf中的master配置在MySQL 6.0以後會取消,官方建議使用動態的CHANGE MASTER 3. 如果只指定ignore-db而不指定do-db。則新創建數據庫的操作也會同步。 4. 一定要stop 主數據庫服務器的防火牆,不然從服務器不能遠程訪問主服務器。   互為同步配置實例: 1. A B 互為主從同步test, 不同步mysql: 兩個數據庫配置中均設置:binlog-do-db=test, binlog-ignore-db=mysql,replicate-do-db=test,replicate-ignore-db=mysql   2. A B 互為主從只同步test,不同步其他數據庫,新創建的也不會同步 兩個數據庫配置中均設置:binlog-do-db=test,replicate-do-db=test   3. A B 互為主從不同步mysql, 同步其他數據庫,譬如創建的新數據庫也會同步 兩個數據庫配置中均設置:binlog-ignore-db=mysql,replicate-ignore-db=mysql   4. A B 互為主從同步所有數據庫,包括新建的數據庫 兩個數據庫配置中均不設置上述四項   分享到:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved