MySQL主從,雙主,半同步及SSL複製

1. 主從複製 (主寫從讀)
    主服務器:
        1、改server-id 配置文件中
        server-id       = 10
        2、啓用二進制日誌 與數據目錄分離與權限
        log-bin=/tmp/binlogs/mysql-bin
        3、創建有複製權限的帳號
        grant replication client, replication slave on *.* to repl@'172.16.%.%' identified by 'repl';
        flush privileges;
.
    從服務器:
        1、改server-id 配置文件中
        server-id       = 200
        2、啓用中繼日誌
        relay-log=/tmp/relaylogs/relay-bin
        # 關閉二進制日誌      
        3、連接主服務器
        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;
        4、啓動複製線程
        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信息登陸主服務器


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章