博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MariaDB复制架构中应该注意的问题
阅读量:4982 次
发布时间:2019-06-12

本文共 3259 字,大约阅读时间需要 10 分钟。

一、复制架构中应该注意的问题:     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 STATUS\G;中查看一下选项         Seconds_Behind_Master: 0     4、如何确定主从节点数据是否一致:         percona-tools     5、数据不一致如何修复?         重新复制

转载于:https://www.cnblogs.com/fansik/p/7839130.html

你可能感兴趣的文章
jQuery EasyUI API 中文文档 - ComboBox组合框
查看>>
“ORA-12545: 因目标主机或对象不存在,连接失败”怎么办?
查看>>
DataList数据绑定的一个简单代码
查看>>
新闻页面的链接可以简单地实现了
查看>>
Internal关键字
查看>>
HIS项目框架搭建流程
查看>>
Access Control
查看>>
使用mpvue开发小程序教程(一)
查看>>
NOIP2013普及组 -SilverN
查看>>
substring和substr小结
查看>>
onbeforeunload与onunload事件
查看>>
android端的的网络访问
查看>>
escape()、encodeURI()、encodeURIComponent()区别详解
查看>>
retry
查看>>
使用jQuery插件轻松实现动态流动的网页布局
查看>>
[转]6个HelloWorld
查看>>
C调用C++接口
查看>>
Golang系列:抓取网页内容
查看>>
jquery扩展的两个方法与区别 $.extend $.fn.extend
查看>>
CodeForces_937C Save Energy!(贪心)
查看>>