主从、级联、主主、半同步、加密复制中的主、从、中间节点命令、选项总结

 

1) 主节点

    [mysqld]
    server_id=121  #唯一
    binlog_format=row  #建议添加
    log_bin=/data/logbin/mariadb-bin  #建议指定二进制日志路径,防止库与日志同时损坏,注意目录权限
    innodb_file_per_table  #建议表结构与数据库分开
    skip_name_resolve = on  #禁止主机名解析
    auto_increment_offset=1  #起始位置,主主复制(主节点1)使用
    auto_increment_increment=2  #步进值,主主复制(主节点1)使用
    auto_increment_offset=2  #起始位置,主主复制(主节点2)使用
    auto_increment_increment=2  #步进值,主主复制(主节点2)使用
    sync_binlog=0  #每次写立即同步二进制日志到磁盘,默认为1,关闭后,提升性能
    如果用到的为InnoDB存储引擎:
        innodb_flush_log_at_trx_commit=2  #每次事务提交立即同步日志写磁盘(默认为1,建议改成2)
        sync_master_info=#  #次事件后master.info同步到磁盘(关系不大)
    rpl_semi_sync_master_enabled=1;  #启动半同步复制功能
    rpl_semi_sync_master_timeout = 1000;超时长为1s
    加密通讯相关:
        ssl-ca=/etc/my.cnf.d/ssl/cacert.pem  #指定CA自签名证书路径
        ssl-cert=/etc/my.cnf.d/ssl/master.crt  #指定master节点证书路径
        ssl-key=/etc/my.cnf.d/ssl/master.key  #指定master节点私钥路径

 

2) 中间节点

    [mysqld]
    server_id=47  #唯一                                                                                                         
    binlog_format=row  #建议添加
    log_bin=/data/logbin/mariadb-bin  #建议指定二进制日志路径,防止库与日志同时损坏,注意目录权限
    innodb_file_per_table  #建议表结构与数据库分开
    skip_name_resolve = on  #禁止主机名解析
    log_slave_updates  #中间节点必须增加,否则主节点同步过来的二进制日志不写入二进制日志

 

3) 从节点

    [mysqld]
    server_id=120  #唯一
    read_only  #建议添加,防止写操作
    innodb_file_per_table  #建议表结构与数据库分开
    skip_name_resolve = on  #禁止主机名解析
    skip_slave_start=ON  #不自动启动slave(默认为off,即重启时会自动启动从节点的2个线程)
    sync_relay_log=#  ##次写后同步relay log到磁盘(默认为0)
    sync_relay_log_info=#  #次事务后同步relay-log.info到磁盘(默认为0)
    复制过滤器相关:
        rpl_semi_sync_master_enabled=1;  #启动半同步复制功能
        replicate_do_db=  指定复制库的白名单
        replicate_ignore_db=  指定复制库黑名单
        replicate_do_table= 指定复制表的白名单
        replicate_ignore_table=  指定复制表的黑名单
        replicate_wild_do_table= foo%.bar% 支持通配符
    加密通讯相关:
        ssl-ca=/etc/my.cnf.d/ssl/cacert.pem  #指定CA自签名证书路径
        ssl-cert=/etc/my.cnf.d/ssl/slave.crt  #指定slave节点证书路径
        ssl-key=/etc/my.cnf.d/ssl/ slave.key  #指定slave节点私钥路径

 

4) 其它命令选项

    mysql>set global sql_slave_skip_counter = #;  #从服务器忽略几个主服务器的复制事件
    mysql> FLUSH TABLES WITH READ LOCK;  #阻止所有用户, 包括主服务器复制的更新,不要使用
    mysql>reset slave;
        在从服务器清除master.info,relay-log.info, relay log,开始新的relay log ,注意:需要先stop slave;
    mysql>reset slave all;
        清除所有从服务器上设置的主服务器同步信息如:PORT, HOST, USER和 PASSWORD 等。
    grant replication slave on *.* to repluser@'192.168.36.%' identified by '123456';  #创建复制用户
    CHANGE MASTER TO 
        MASTER_HOST='192.168.36.121',
        MASTER_USER='repluser', 
        MASTER_PASSWORD='123456',
        MASTER_LOG_FILE='mariadb-bin.000014', 
        MASTER_LOG_POS=245;
        MASTER_SSL=1;  #启用加密用户(使用加密通讯时需要添加此内容)
    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';  #主节点安装半同步插件
    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';  #从节点安装半同步插件
    创建必须使用加密通讯的帐户
        grant replication slave on *.* to repluser2@'192.168.36.%' identified by '123456' require ssl;