MySQL主從複製

來源:互聯網
上載者:User

標籤:style   http   io   ar   os   使用   sp   strong   on   

測試環境:master: CentOS 6.6 (x86_64), MySQL5.6.22slave: Windows 8(x86_64), MySQL5.6.19 相關名詞:主從複製,讀寫分離,資料備份 Replication允許將master資料庫的資料複製到多個slave資料庫上,replication預設是非同步,因此slave不需要永久的串連到master,slave可以不線上,一旦slave線上後,會把master最新的資料增量同步處理下來,replication允許複製整個database,或者某個database,或者某張表。 1, 關閉master資料庫,編輯master的/usr/my.cnf,my.ini,增加配置:
[mysqld]log-bin=mysql-binserver-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
重啟mysql 2, 關閉slave資料庫,編輯slave的my.ini,增加配置
[mysqld]server-id=2
重啟mysql 3, 在master上建立replication帳號
mysql> CREATE USER ‘repl‘@‘%.mydomain.com‘ IDENTIFIED BY ‘slavepass‘;mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘%.mydomain.com‘;

mysql> FLUSH PRIVILEGES;
 4, 擷取master資料庫binary log的名稱和位置開啟第一個master session將資料庫鎖定,只允許讀操作
mysql> FLUSH TABLES WITH READ LOCK;
 開啟另一個master session, 查看binary log的name、position
mysql > SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 | 73       | test         | manual,mysql     |+------------------+----------+--------------+------------------+
 如果你的master資料庫之前沒有使用binary log,這時候你看到的name和postion是空的,則在後面的操作中name=‘‘,position=4 如果你的資料庫已經有資料了,需要在replication之前就匯入到slave中,請保持master讀鎖,使用mysqldump將master的資料匯出來並匯入到slave資料庫中。具體請參考第5步。 如果你的資料庫之前沒有資料,或者你不想要之前的資料了,則可以釋放master鎖,有2種方式釋放:1)直接退出第一個session2)執行:
mysql> UNLOCK TABLES;
然後跳到第7節 5, 在master上使用mysqldump建立資料快照說明:此節的目的是,如果master在replication之前已經有資料了,則需要在replication之前將這些資料從master資料庫中匯出,然後匯入到slave資料庫;這個操作完成之後就可以replication了;如果你的master之前沒有資料,則跳過此節。在master機器的shell上,執行以下命令,將整個db匯出到dbdump.db檔案中。(加上--master-data則在匯出時先鎖定表,然後再導資料,最後釋放鎖)-uroot -p參數可選,是指定master資料庫帳號密碼用的
shell> mysqldump -uroot -p --all-databases --master-data > dbdump.db
 6, 將資料匯入到slave資料庫-uroot -p參數可選,是指定slave資料庫帳號密碼用的
shell> mysql -uroot -p < dbdump.db
 7, 在slave上設定master資料庫連接資訊
mysql> CHANGE MASTER TO    ->     MASTER_HOST=‘master_host_name‘,    ->     MASTER_USER=‘replication_user_name‘,    ->     MASTER_PASSWORD=‘replication_password‘,    ->     MASTER_LOG_FILE=‘recorded_log_file_name‘,    ->     MASTER_LOG_POS=recorded_log_position;
 8, 啟動slave線程
mysql> START SLAVE;
 9, 當你不想replication了,可以在slave上停止slave線程
mysql> STOP SLAVE;
停止後你也可以重新start slave,replication機制會自動將這段時間master上的資料更新同步到slave。 10, 思考:在項目中我們可以利用replication實現資料庫讀寫分離,從而提升伺服器效能。master資料庫用於寫,slave資料庫用於讀。http://dev.mysql.com/doc/connector-j/en/connector-j-master-slave-replication-connection.html 11, 參考資料:http://dev.mysql.com/doc/refman/5.6/en/replication.html 12, 

MySQL主從複製

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.