在新的主與從之間創建複製:
mysql
1. 配置主服務器中的配置文件my.cnf,二進制日誌文件和服務器IDsql
[mysqld]服務器
log-bin=mysql-bin ###最好與數據文件分離dom
server-id=1ide
2. 開啓主服務器spa
3. 創建用於鏈接主服務器的用戶 線程
CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY '密碼';日誌
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';orm
4. 獲得主服務器的狀態信息server
mysql> flush tables with read lock
mysql> show master status;
5. 在主服務器上,釋放讀鎖
mysql> unlock tables;
6. 配置從服務器中的配置文件my.cnf,服務器ID
[mysqld]
server-id=2
7. 開啓從服務器
8. 在從服務器上設置主配置
mysql> CHANGE MASTER TO
-> MASTER_HOST='主服務器IP',
-> MASTER_USER='用戶名',
-> MASTER_PASSWORD='密碼',
-> MASTER_LOG_FILE='當前的二進制日誌文件',
-> MASTER_LOG_POS=2063;
MySQL使用3個線程進行復制:
一個在主服務器上
Binlog dump thread 當從服務器鏈接主服務器時,主服務器創造了一個線程,發送二進制日誌內容到從服務器。使用SHOW PROCESSLIST,能夠識別這個線程
兩個在從服務器上
Slave I/O thread 當在從服務器上執行START SLAVE時,從服務器創造了這個線程,鏈接上主服務器,請求主服務器傳送更新的二進制日誌,而後讀取複製到從服務器上面造成中繼日誌。使用SHOW SLAVE STATUS\G,能夠看到Slave_IO_running
Slave SQL thread 從服務器創造了這個線程,從中繼日誌裏讀取執行事件
問題:slave stop
set global sql_slave_skip_counter=1
slave start
主主複製:
auto-increment-increment #增加量#
auto-incremnet-offset #起始值#
開啓crash-safe功能
relay_log_info_repository=TABLE
relay_log_recovery=ON
主上:
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_support_xa = 1
如何阻止主更新直到從跟上:
1.在主上執行
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
2.在從上執行
mysql> SELECT MASTER_POS_WAIT('log_name', log_pos);
3.在主上執行
mysql> UNLOCK TABLES;