1. 主從複製 (主寫從讀) 主服務器: 一、改server-id 配置文件中 server-id = 10 二、啓用二進制日誌 與數據目錄分離與權限 log-bin=/tmp/binlogs/mysql-bin 三、建立有複製權限的賬號 grant replication client, replication slave on *.* to repl@'172.16.%.%' identified by 'repl'; flush privileges; . 從服務器: 一、改server-id 配置文件中 server-id = 200 二、啓用中繼日誌 relay-log=/tmp/relaylogs/relay-bin # 關閉二進制日誌 三、鏈接主服務器 change master to master_host='172.16.43.200',master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=312; 四、啓動複製線程 start slave; . 使用場景: 常見,適合於多重應用場景,從服務器位置的變化而變化 . 主從複製演進 --多從複製(演進多個從服務器,從服務器server-id必定要不同) 使用場景: 1 臺遠程容災 1 臺關鍵本地主備 1 臺開發測試學習之用 . 2. 雙主複製 (互爲主從,可讀可寫) 配置注意: service-id 不可相同 均開啓二進制日誌與中繼日誌 log-bin=/data/binlogs/mysql-bin relay-log=/data/relaylogs/relay-log 均受權複製帳號給對方 grant replication client, replication slave on *.* to repl@'172.16.%.%' identified by 'repl'; flush privileges; 均鏈接對方服務器 change master to master_host='172.16.43.200',master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=312; 均啓動複製線程 start salve; . *** 自動增加列的配置要隔開 auto-increment-offset = 1 auto-increment-increment = 2 *** 數據不一致時,須要手動同步(利用二進制) . 使用場景: 遠程辦公,兩地職權相等 . 雙主複製演進 --多源複製 -- mysql 5.6 多源須要加入不一樣的connection_name 例: change master 'connection_name' ... 多源複製操做須要在不一樣庫之間操做 使用場景: 數據收集,中央集權式 . --環形複製 注意雙主模型的配置便可 . 3. GTID主從 -- mysql 5.6+ MariaDB 10.0+ 配置過程 主服務器: 1. 配置文件中新增 log-slave-updates=true master-info-repository=TABLE relay-log-info-repository=TABLE sync-master-info=1 slave-parallel-threads=2 binlog-checksum=CRC32 master-verify-checksum=1 slave-sql-verify-checksum=1 binlog-rows-query-log_events=1 report-port=3306 report-host=master.king.com 2. 建立有複製權限的賬號 grant replication client, replication slave on *.* to repl@'172.16.%.%' identified by 'repl'; flush privileges; . 從服務器: 1. 配置文件中 與主服務器無異,惟一不一樣server-id 2. 鏈接主服務器 change master to master_host='172.16.43.200', master_port=3306, master_user='repl', master_use_gtid=cuurent_pos; 3. 啓動從服務器 start slave; . 4. 半同步複製 (在一主多從的場景中,多從的一致複製狀態回饋變成了不小的延遲 爲了解決這個問題,出現了半同步的快速響應) . 主服務器: install plugin rpl_semi_sync_master soname 'semisync_master.so'; show global variables like '%semi%'; set global rpl_semi_sync_master_enabled=ON; set global rpl_semi_sync_master_timeout=1000; . 從服務器: install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; set global rpl_semi_sync_slave_enabled=ON; stop slave; start slave; . 在主服務器驗正半同步複製是否生效: show global status like '%semi%'; . 使用場景: 適合高併發快速響應用戶的環境 . 5. 多級複製 (中間節點必須開啓二進制日誌與中繼日誌) . 多級複製演進 --多級分發複製 中間分發節點的庫類型爲blackhole,僅保存二進制,爲其餘從複製節點作分發 . 6. 安全複製 (主服務器(CA)開啓需求驗證,客戶端發送由服務器頒發的證書) 主服務器: 1. 配置文件中加入 ssl-ca=/usr/local/mysql/ssl/cacert.pem ssl-cert=/usr/local/mysql/ssl/master.crt ssl-key=/usr/local/mysql/ssl/master.key 2. 配置文件注意修改 server-id 3. 登錄服務器並受權 grant replication client, replication slave on *.* to repl@'172.16.%.%' identified by 'repl' require ssl; flush privileges; . 從服務器: 1. 配置文件中 與主服務器無異,不一樣是server-id與證書信息 2. 鏈接服務器時指明證書信息 change master to master_host='172.16.43.200',master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=312, master_ssl=1, master_ssl_ca='/usr/local/mysql/ssl/cacert.pem',master_ssl_cert='/usr/local/mysql/ssl/slave.crt',master_ssl_key='/usr/local/mysql/ssl/slave.key'; 3. 啓動服務器 start slave . 測試: 查看ssl狀態在主從上 show slave status\G -> ssl這些項 使用mysql --ssl-ca=/path --ssl-cert=/path --ssl-key=/path信息登錄主服務器