MaridDB主从复制,双主模型,半同步的配置

一、主从复制

MariaDB是将客户端上传的数据从主节点复制一份到从节点,从而可以提高读性能,而这种方式并不能提升写性能,因为每一份数据都会在从节点上写一份

缺点:为了增加读写性能,数据库都是将数据 先存入内存中,随后同步到数据文件中,也就是磁盘上,两者同步是异步同步,也就是说,从节点上的数据是落后于主节点的

复制过程:

客户端写入数据---->主服务器的事务日志内存---->事物日志文件---->同步到数据文件---->通过二进制文件---从服务器的IO线程---->中继日志--->通过SQL线程来重放中继日志

实现:

主数据库服务器

[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=log-bin
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO [email protected]"192.168.1.%" IDENTIFIED BY 'centos';  #授权主从复制账户
MariaDB [(none)]> FLUSH PRIVILEGES;  #刷新
MariaDB [(none)]> SHOW MASTER STATUS;  #查看当前使用的是哪一个二进制日志,还有POS的位置,需要在从节点使用  
+----------------+----------+--------------+------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| log-bin.000001 |      489 |              |                  |
+----------------+----------+--------------+------------------+

从服务器

[[email protected] ~]# vim /etc/my.cnf
server_id=2
relay_log=relay-log
read_only=ON
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.151',MASTER_USER='test',MASTER_PASSWORD='centos',MASTER_LOG_FILE='log-bin.000001',MASTER_LOG_POS=489;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;
  Slave_IO_Running: Yes  #这两项需要为yes,代表开启IO线程和SQL线程
  Slave_SQL_Running: Yes

测试在主节点创建数据库或者插入数据,即可同步

二、双主模型

双主模型,容易造成数据不一致,一般不建议使用

主机A

[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=log-bin
relay_log=relay-log

MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO [email protected]"192.168.1.%" IDENTIFIED BY 'centos';
CHANGE MASTER TO MASTER_HOST='192.168.1.152',MASTER_USER='test',MASTER_PASSWORD='centos',MASTER_LOG_FILE='log-bin.000001',MASTER_LOG_POS=489;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;

主机B

[[email protected] ~]# vim /etc/my.cnf
[mysqld]
server_id=2
log_bin=log-bin
relay_log=relay-log

MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO [email protected]"192.168.1.%" IDENTIFIED BY 'centos';
CHANGE MASTER TO MASTER_HOST='192.168.1.151',MASTER_USER='test',MASTER_PASSWORD='centos',MASTER_LOG_FILE='log-bin.000001',MASTER_LOG_POS=489;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;

三、半同步复制

半同步复制是有一台主机同步写磁盘,当客户端写入数据,主数据库服务器将立刻将数据写入指定从服务器,立即同步,然后在相应客户端,以证明有一份完整的数据,以防主服务器故障

实现半同步复制需要向数据库添加主服务器添加semisync_master.so,从服务器添加semisync_slave.so

主服务器

MariaDB [none]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
MariaDB [none]> SET GLOBAL rpl_semi_sync_master_enabled=ON;	#开启同步写数据文件
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |
| rpl_semi_sync_master_timeout       | 10000 |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+	

从服务器

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';                        
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | OFF   |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+			

MariaDB [none]> STOP SLAVE IO_THREAD;
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
MariaDB [none]> START SLAVE IO_THREAD;
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';                        
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | OFF   |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+

原文地址:http://blog.51cto.com/10492754/2125260

时间: 2024-10-24 15:52:53

MaridDB主从复制,双主模型,半同步的配置的相关文章

MySQL运维进阶-MySQL双主(master-master)+半同步(Semisync Repl

MySQL --> MariaDB --> Percona-Server MySQL: oracle ,commutity : 社区版 5.5 5.6 5.7 8.0MariaDB:5.5 10.xPercona:Percona-ServerInnoDB --> XtraDBXtrabackuppercona-tools: 存储引擎:引擎:也称为表类型,表级别概念,不建议在同一个库中的表上使用不同的ENGINE:CREATE TABLE ... ENGINE STORAGE_ENGINE

实现MySQL主从复制、双主模型的简单案例

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. MySQL复制的基本原理 MySQL复制解决的基本问题 让一台MySQL服务器的数据与其他MySQL服务器的数据保持同步. MySQL复制的工作原理 MySQL复制的工作原理图如下所示(图来自高性能MySQL第3版) MySQL主从复制的基本步骤: 1.启动主库上的二进制文件,并把数据更改记录到二进制日志中: 2.备库将主库上的二进制日志复制到自身的中继日志中: 3.备库读取自身的中继日志中的事

LVS+Keepalived双主模型的实现

拓扑结构: Client LVS1 LVS2 RS1 RS2 192.168.2.1 DIP 192.168.2.128 VIP 192.168.2.198 DIP 192.168.2.129 VIP 192.168.2.199 192.168.2.130 192.168.2.131 实现双主模型我们需要配置两个虚拟路由器组,也就是每台主机需要配置两段 vrrp_instance,每个虚拟接口配置虚拟IP,LVS1与LVS2的同一组virtual_router_id内互为主备,这里如果不明白可以

mysql的主从,主主,半同步,SSL复制

本实验的目的是实现两台主机上的MySQL数据复制,以及基于SSL的复制. *要注意的两点问题所在: 1,版本问题:复制双方的版本最好一致,若不同,从节点的版本必须高于主节点的版本 2,复制起点问题:(1),从0开始,使用于均为新建服务器.(2),中间开始,就需要完全备份主服务上的数据,并将数据恢复至从服务器: 从服务器从备份时主服务器二进制日志所在位置开始复制. 实验环境: node1:MASTER MariaDB 172.16.18.1 node2:SALVE    MariaDB 172.1

haproxy+keepalived双主模型及动静分离的实现

实验目标: 1.haproxy统计页面的输出机制: 2.haproxy动静分离机制: 3.基于keepalived的高可用实现: 环境: vm8虚拟机 操作系统: centos 6.4 内核版本: 2.6.32-358.el6.x86_64 注: (1) 每个haproxy各有两块网卡,外网网卡选择Bridge,内网网卡选择Vmnet2; (2) 内部两台web服务器的网卡都是选择Vmnet2; 一.准备工作: 1.各节点IP地址相关设置 node1:  ifconfig eth1 192.16

keepalived基于nginx实现双主模型

准备环境 Director 1 Director 2 Web Server Nginx1 Web Server Nginx DIP:172.18.42.100 DIP:172.18.42.22 RIP:172.18.42.111 RIP:172.18.42.222 VIP:172.18.42.119(MASTER) VIP:172.18.42.120(BACKUP) VIP:172.18.42.119(BACKUP) VIP:172.18.42.120(MASTER) VIP:172.18.42

mysql的主从,主主,半同步

主配置文件 [mysqld] datadir=/data/mydata log-bin=/data/binlogs/master-bin socket=/var/lib/mysql/mysql.sock innodb_file_per_table=on server-id=1 sync_binlog=on  #在事务提交时,立即把bin-log缓存区中的事件立即刷写到磁盘到的二进制日志区上,保证从服务器尽早同步数据 innodb_flush_log_at_trx_commit=on  #当使用i

keepalived实现nginx的高可用(双主模型)

实验环境: RS1:rip(172.16.125.7),安装httpd软件包: RS2:rip(172.16.125.8),安装httpd软件包: director1(7-1.lcs.com):vip(172.16.125.100),dip(172.16.125.5),安装nginx.keepalived软件包. director2(7-2.lcs.com):vip(172.16.125.110),dip(172.16.125.6),安装nginx.keepalived软件包. 首先关闭所有节点

keepalived,代理及双主模型

Linux常见集群:将多台主机结合起来创造冗余集群,通过缩短平均修复时间提高系统可用性 LB:lvs,nginx HA:Keepalived,heartbeat,corosync,cman HP:高性能集群 并行处理: 分布式存储:HDFS: 分布式计算:YARN batch:MapReduce in-memory:spark stream:sotrm 流式处理系统 Keepalived: keepalived简介keepalived是一个基于VRRP协议来实现IPVS的高可用的解决方案.对于L