MySQL Master/Slave Master/Master
MySQL Master/Slave原理分析:
單向同步是基於MySQL的二進位制日誌的(binlog),所以要開啟二進位制日誌功能(預設開啟)。MySQL將所有更新的內容記錄到二進位制日誌中,Master/Slave透過三個執行緒來完成同步。在Master上有一個執行緒,用來傳送二進位制日誌,在Master上show processlistG可以檢視執行緒的名字(Binlog Dump)。在Slave上有兩個執行緒,I/O執行緒用來連線Master,接受來自Master的更新二進位制日誌,並把它儲存到中繼日誌(relay log)中,SQL執行緒用來讀取中繼日誌中SQL語句並執行更新操作。
Master/Slave優點:
系統服務穩定:當Master當機時,可以切換Slave服務。
系統服務速率加快:更新操作在Master上進行,查詢操作在Slave上進行,達到了負載均衡的效果,減輕了Master的負載,加快服務響應時間。
系統資料易備份、恢復:資料備份可以在Slave上進行而不干擾Master的服務。
注意:
一切更新操作要在Master上進行,否則會造成Master/Slave同步衝突。
兩個資料庫版本要相同,或者slave比master版本高!
[@more@]MySQL安裝過程可以參考附件指令碼。
Master:192.168.10.21
Slave:192.168.10.22
Master:
建立同步賬戶,並給予許可權
grant all on test.* to mysql@192.168.10.22 identified by 'mysql';
flush privileges;
配置/etc/my.cnf
在[mysqld]下新增配置引數
log-bin=mysql-bin 啟動二進位制日誌系統,預設啟動binlog-do-db=test 二進位制需要同步的資料庫名
server-id=1binlog-ignore-db=mysql 避免同步 mysql 使用者配置,以免不必要的麻煩
/etc/init.d/mysql restart
Slave:
配置 /etc/ my.cnf 檔案
在[mysqld]下新增一下引數
server-id=2 從伺服器 ID 號,不要和主 ID 相同,
如果設定多個從伺服器,每個從伺服器必
須有一個唯一的server-id值,必須與主服
務器的以及其它從伺服器的不相同。可以
認為server-id值類似於IP地址:這些ID值
能唯一識別複製伺服器群集中的每個服務
器例項。
master-host=192.168.10.21 指定主伺服器 IP 地址
master-user=mysql 指定在主伺服器上可以進行同步的使用者名稱
master-password=mysql 密碼
master-port=3306 同步所用的埠
master-connect-retry=60 斷點重新連線時間
replicate-ignore-db=mysql 遮蔽對 mysql 庫的同步,以免有麻煩
replicate-do-db=test 同步資料庫名稱
在[mysqld]下新增一下引數
server-id=2 從伺服器 ID 號,不要和主 ID 相同,
如果設定多個從伺服器,每個從伺服器必
須有一個唯一的server-id值,必須與主服
務器的以及其它從伺服器的不相同。可以
認為server-id值類似於IP地址:這些ID值
能唯一識別複製伺服器群集中的每個服務
器例項。
master-host=192.168.10.21 指定主伺服器 IP 地址
master-user=mysql 指定在主伺服器上可以進行同步的使用者名稱
master-password=mysql 密碼
master-port=3306 同步所用的埠
master-connect-retry=60 斷點重新連線時間
replicate-ignore-db=mysql 遮蔽對 mysql 庫的同步,以免有麻煩
replicate-do-db=test 同步資料庫名稱
/etc/init.d/mysqld restart
在Master上執行 show master satus;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 196 | test | mysql |
+------------------+----------+--------------+------------------+
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 196 | test | mysql |
+------------------+----------+--------------+------------------+
在Slave上執行show slave statusG
.......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running: Yes
........
說明資料正在同步,如果執行結果是empty,執行以下操作
在slave上執行以下命令:
slave stop;
change master to master_host='192.168.10.21', master_user='mysql',
master_password='mysql, master_log_file='mysql-bin.000011',
master_log_pos=196;
slave start;
slave stop;
change master to master_host='192.168.10.21', master_user='mysql',
master_password='mysql, master_log_file='mysql-bin.000011',
master_log_pos=196;
slave start;
測試方法:在Master上更新test資料庫,檢視Slave test資料庫的內容是否更新。
搭建雙向同步
其實原理很簡單,只需要把Master/Slave變成 Master/Master就行。配置簡單,倒著順序再配置一遍就行
在Master配置新增:
master-host=192.168.10.22
master-user=mysql
master-password=mysql
master-port=3306
master-connect-retry=60
replicate-ignore-db=mysql
replicate-do-db=test
master-user=mysql
master-password=mysql
master-port=3306
master-connect-retry=60
replicate-ignore-db=mysql
replicate-do-db=test
/etc/init.d/mysqld restart
在Slave執行操作:
grant all on test.* to mysql@192.168.10.21 identified by 'mysql';
flush privileges;配置新增:
log-bin=mysql-bin
binlog-do-db=test
binlog-ignore-db=mysql 避免同步 mysql 使用者配置,以免不必要的麻煩
/etc/init.d/mysqld restart
flush privileges;配置新增:
log-bin=mysql-bin
binlog-do-db=test
binlog-ignore-db=mysql 避免同步 mysql 使用者配置,以免不必要的麻煩
/etc/init.d/mysqld restart
首先實現Master/Slave的第一個優點:資料備份可以在Slave上進行而不干擾Master的服務
採用scp服務進行備份
192.168.10.16是檔案伺服器
192.168.10.22是Slave
首先需要開啟ssh服務,在Slave上使用ssh-keygen生成公鑰檔案id_rsa.pub
ssh-copy-id -i .ssh/id_rsa.pub westos@192.168.10.16
Slave採用ssh登入檔案伺服器不需要密碼了
測試:ssh westos@192.168.10.16
發現直接進入檔案伺服器
備份指令碼見附件
備份週期
crontab -e 每天凌晨備份資料庫
0 0 * * * /opt/mysqldump.sh(備份指令碼)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14663377/viewspace-1058460/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL master/slaveMySqlAST
- MySql的Master/SlaveMySqlAST
- mysql master和slave配置MySqlAST
- mysql slave 轉為 masterMySqlAST
- MySQL 5.5 Master/Slave 配置MySqlAST
- Redis master and slaveRedisAST
- mysql master slave 主從同步MySqlAST主從同步
- mysql 同步 master-slave薦MySqlAST
- Mysql Slave群切換MasterMySqlAST
- Mysql Slave群切換Master (=)MySqlAST
- Mongodb的master-slave模式與master-master模式實驗MongoDBAST模式
- Mysql5.6 Master+MasterMySqlAST
- mysql建立master/slave詳細步驟MySqlAST
- 利用mysql slave 修復master MyISAM tableMySqlAST
- MySQL master and slave have equal MySQL server UUIDsMySqlASTServerUI
- MySQL錯誤之mysql.slave_master_infoMySqlAST
- Mysql 5.6 Master和Slave 主備切換MySqlAST
- MYSQL的master/slave資料同步配置(轉)MySqlAST
- Jenkins : 安裝 master 和 slaveJenkinsAST
- 用mysqldump --master-data 建立slaveMySqlAST
- Mysql Master-slave複製簡單配置記錄MySqlAST
- mysql master-slave複製錯誤[解決事例]MySqlAST
- MYSQL5的master slave資料同步配置(轉)MySqlAST
- mysql5.6,master/slave架構,master,不寫bingo原因,無法開啟同步複製MySqlAST架構Go
- slave之Seconds_Behind_Master析AST
- ! [rejected] master -> master (fetch first)AST
- mysql slave 跟進 master 的關鍵狀態指標MySqlAST指標
- Mysqldump實現mysql的master-slave主從複製MySqlAST
- master and slave have equal MySQL server UUIDs問題解決ASTMySqlServerUI
- MySQL 5.5.x 配置Master-Slave主從複製MySqlAST
- MySQL5.7 Master-Master主主搭建for Centos7MySqlASTCentOS
- Setup MariaDB Master/Slave Replication for Docker MariaDBASTDocker
- The slave I/O thread stops because master and slave have equal MySQL server UUIDthreadASTMySqlServerUI
- Innobackupex實現mysql線上搭建master-slave主從複製MySqlAST
- MySQL報錯Slave: received end packet from server, apparent master shutdownMySqlServerAPPAST
- Linux環境下MySQL5.6Master-Slave配置實戰LinuxMySqlAST
- change master 未指定master_log_fileAST
- 資料庫讀寫分離Master-Slave資料庫AST