• MariaDB复制架构中应该注意的问题


    一、复制架构中应该注意的问题:
    1、限制从服务器只读
    在从服务器上设置read_only=ON,此限制对拥有SUPPER权限的用户均无效;
    阻止所有用户(在从服务器执行一下命令并保持此线程,也就是执行后不退出改终端):
    mysql> FLUSH TABLES WITH READ LOCK;
    2、如何保证主从复制的事务安全?
    在master节点启用参数:
    sync_binlog=ON
    如果用到的为InnoDB存储引擎:
    innodb_flush_logs_at_trx_commit=ON
    innodb_support_xa=ON
    sync_master_info
    在slave节点:
    skip_slave_start=ON(手动启动salve线程)
    sync_relay_log
    sync_relay_log_info
    二、主主复制:
    互为主从:
    1、数据不一致;(只能二选其一)
    2、自动增长id:
    配置一个节点使用奇数id
    auto_increment_offset=1
    auto_increment_increment=2
    另外一个节点使用偶数id
    auto_increment_offset=2
    auto_increment_increment=2
    配置步骤:
    1、各节点使用一个唯一server_id;
    2、都启用binary_log和relay_log;
    3、创建拥有复制权限的用户账号;
    4、定义自动增长id字段的数值范围为奇偶;
    5、均把对方指定为主节点,并启动复制线程;
    三、半同步复制
    master:
    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    mysql> SET GLOBAL VARIABLES rpl_semi_sync_master_enabled=1;
    mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
    mysql> SHOW GLOBAL STATUS LIKE '%semi%';
    slave
    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    mysql> SET GLOBAL VARIABLES rpl_semi_sync_master_enabled=1;
    四、复制过滤器:
    让从节点仅复制指定的数据库,或指定数据库的指定表;
    有两种实现方式
    1、主服务器仅向二进制日志中记录与特定数据库(特定表)相关的事件;
    问题:时间还原无法实现:不建议使用
    binlog_do_db= # 数据库白名单列表
    binlog_ignore_db= # 数据库黑名单列表
    2、从服务器SQL_THREAD在replay中继日志中的事件时,仅读取与特定数据库(特定表)相关的事件并应用于本地
    问题:会造成网络及磁盘IO浪费
    库级复制
    replicate_do_db= # 复制库的白名单
    replicate_ignore_db= # 复制库的黑名单
    表级复制
    replicate_do_table= # 复制表的白名单
    replicate_ignore_table= # 复制表的黑名单
    五、基于SSL复制:
    前提:支持SSL
    查看方式:SHOW GLOBAL VARIABLES LIKE '%ssl%';
    1、master配置证书和私钥:并且创建一个要求必须使用SSL连接的复制账号;
    GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'fansik'@'192.168.1.1' IDENTIFIED BY 'fanjinbao' REQUIRE SSL;
    2、slave端使用CHANGE MASTER TO命令时指明ssl相关选项;
    MASTER_SSL = {0|1}
    MASTER_SSL_CA = 'ca_file_name'
    MASTER_SSL_CAPATH = 'ca_directory_name'
    MASTER_SSL_CERT = 'cert_file_name'
    MASTER_SSL_CRL = 'crl_file_name'
    MASTER_SSL_CRLPATH = 'crl_directory_name'
    MASTER_SSL_KEY = 'key_file_name'
    MASTER_SSL_CIPHER = 'cipher_list'
    MASTER_SSL_VERIFY_SERVER_CERT = {0|1}
    MASTER_TLS_VERSION = 'protocol_list'
    IGNORE_SERVER_IDS = (server_id_list)
    六、与复制功能相关的文件:
    master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等;
    relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系;
    七、复制的监控和维护:
    1、清理日志:
    SHOW BINARY LOGS;
    PURGE BINARY LOGS TO 'mysql-bin.000008'; # 清理8之前的日志
    2、复制监控
    SHOW MASTER STATUS;
    SHOW BINLOG EVENTS;
    SHOW BINARY LOGS;
    SHOW SLAVE STATUS;
    SHOW PROCESSLIST;
    3、从服务器是否落后于主服务:
    SHOW SLAVE STATUSG;中查看一下选项
    Seconds_Behind_Master: 0
    4、如何确定主从节点数据是否一致:
    percona-tools
    5、数据不一致如何修复?
    重新复制
  • 相关阅读:
    关于回调函数的初探
    细节决定成败
    数据的导航与跳转
    如何在同一页面显示父子表的内容
    从Request到Response之间的所有事件发生的顺序
    如何更改网站的一些公共数据
    如何实现计数器
    DataTable.Select方法
    登出代码
    如何构建自定义控件
  • 原文地址:https://www.cnblogs.com/fansik/p/7839130.html
Copyright © 2020-2023  润新知