数据库集群的主从复制模型完整实现

author author     2022-10-25     373

关键词:

主从配置过程: 参看:     https://mariadb.com/kb/en/library/setting-up-replication/     https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html


主服务器192.168.27.7配置:

[[email protected] ~]$vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_file_per_table
log_bin
server-id=1


[[email protected] ~]$systemctl start mariadb.service 

MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       245 |
+--------------------+-----------+
1 row in set (0.00 sec)

[[email protected] ~]$mysql < hellodb_InnoDB.sql


MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |      7655 |
+--------------------+-----------+
1 row in set (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to [email protected]'192.168.27.%' identified by 'centos';
Query OK, 0 rows affected (0.00 sec)


从服务器192.168.27.17服务配置:

从服务器上的配置:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
innodb_file_per_table
server_id=2

注意:默认的server_id是0;
MariaDB [(none)]> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 0     |
+---------------+-------+
1 row in set (0.01 sec)


查看帮助:
MariaDB [(none)]> help change master to;
CHANGE MASTER TO
  MASTER_HOST='master2.mycompany.com',
  MASTER_USER='replication',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master2-bin.001',
  MASTER_LOG_POS=4,
  MASTER_CONNECT_RETRY=10;


MariaDB [(none)]> CHANGE MASTER TO
    ->   MASTER_HOST='192.168.27.7',
    ->   MASTER_USER='repluser',
    ->   MASTER_PASSWORD='centos',
    ->   MASTER_PORT=3306,
    ->   MASTER_LOG_FILE='mariadb-bin.000001',
    ->   MASTER_LOG_POS=245,
    ->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected (0.02 sec)




MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.27.7
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 10
              Master_Log_File: mariadb-bin.000001
          Read_Master_Log_Pos: 245
               Relay_Log_File: mariadb-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mariadb-bin.000001
             Slave_IO_Running: No     线程未启动;
            Slave_SQL_Running: No     线程未启动;
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 245     复制的起始位置;
              Relay_Log_Space: 245
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No     可以启用加密;
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 0
1 row in set (0.00 sec)


中继日志已经创建;
[[email protected] ~]$ll /var/lib/mysql/
total 28724
-rw-rw---- 1 mysql mysql    16384 Feb 25 06:37 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Feb 25 06:37 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 Feb 25 06:37 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Feb 25 06:37 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Feb 25 05:09 ib_logfile1
-rw-rw---- 1 mysql mysql      264 Feb 25 05:15 mariadb-bin.000001
-rw-rw---- 1 mysql mysql       21 Feb 25 05:10 mariadb-bin.index
-rw-rw---- 1 mysql mysql      245 Feb 25 06:38 mariadb-relay-bin.000001
-rw-rw---- 1 mysql mysql       27 Feb 25 06:38 mariadb-relay-bin.index
-rw-rw---- 1 mysql mysql       84 Feb 25 06:38 master.info
drwx------ 2 mysql mysql     4096 Feb 25 05:09 mysql
srwxrwxrwx 1 mysql mysql        0 Feb 25 06:37 mysql.sock
drwx------ 2 mysql mysql     4096 Feb 25 05:09 performance_schema
-rw-rw---- 1 mysql mysql       52 Feb 25 06:38 relay-log.info
drwx------ 2 mysql mysql        6 Feb 25 05:09 test


启动从服务器上的复制线程:

MariaDB [(none)]> start slave;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    4
Current database: *** NONE ***

Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| test               |
+--------------------+


MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.27.7
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000002
          Read_Master_Log_Pos: 245     读取的日志的位置;
               Relay_Log_File: mariadb-relay-bin.000005
                Relay_Log_Pos: 531
        Relay_Master_Log_File: mariadb-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 245  执行的日志的位置;
              Relay_Log_Space: 1113
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0     落后的时间差;
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)


主服务器的读写操作:

主服务器的日志位置;
MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |      8217 |
| mariadb-bin.000002 |       245 |
+--------------------+-----------+
2 rows in set (0.00 sec)



主服务器的写:
MariaDB [(none)]> create database wangdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |      8217 |
| mariadb-bin.000002 |       332 |
+--------------------+-----------+
2 rows in set (0.00 sec)

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.27.7
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000002
          Read_Master_Log_Pos: 332
               Relay_Log_File: mariadb-relay-bin.000003
                Relay_Log_Pos: 618
        Relay_Master_Log_File: mariadb-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 332
              Relay_Log_Space: 9153
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)


从服务器:

从服务器瞬间同步:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| test               |
| wangdb             |
+--------------------+
6 rows in set (0.00 sec)



停止从服务器;并在主服务器上更新操作;
MariaDB [(none)]> create database wangdb2;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create database wangdb3;
Query OK, 1 row affected (0.00 sec)

从服务器;
[[email protected] ~]$systemctl stop mariadb.service 
[[email protected] ~]$
[[email protected] ~]$
[[email protected] ~]$systemctl start mariadb.service 

unknown [(none)]> show databases;
No connection. Trying to reconnect...
Connection id:    4
Current database: *** NONE ***

+--------------------+
| Database           |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| test               |
| wangdb             |
| wangdb2            |
| wangdb3            |
+--------------------+
8 rows in set (0.00 sec)



从服务器上的relay-log.info记录的是
[[email protected] ~]$ls /var/lib/mysql/
aria_log.00000001  ibdata1      mariadb-relay-bin.000004  master.info  performance_schema  wangdb
aria_log_control   ib_logfile0  mariadb-relay-bin.000005  mysql        relay-log.info      wangdb2
hellodb            ib_logfile1  mariadb-relay-bin.index   mysql.sock   test                wangdb3
[[email protected] ~]$
[[email protected] ~]$cat /var/lib/mysql/relay-log.info 
./mariadb-relay-bin.000005
709
mariadb-bin.000002
510
8

[[email protected] ~]$cat /var/lib/mysql/master.info 
18
mariadb-bin.000002
510
192.168.27.7
repluser
centos
3306
60
0



0
1800.000

0

主服务器;
MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |      8217 |
| mariadb-bin.000002 |       510 |
+--------------------+-----------+
2 rows in set (0.00 sec)


redis_08_redis集群实现主从复制应对高并发(代码片段)

...段3.4小结四、主从复制不足五、尾声一、前言Redis搭建的集群有三个作用:1、Redis集群实现主从复制应对高并发2、Redis集群实现Sentinel哨兵应对高可用3、Redis集群实现RedisCluster应对大数据量二、主从复制搭建实现方式包括三种... 查看详情

redis主从复制和集群配置

redis主从复制概述1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读... 查看详情

redis集群方案之主从复制(待实践)

...置在Redis中,要实现主从复制架构非常简单,只需要在从数据库的配置文件中加上如下命令即可:slaveof主数据库地址主数据库端口主数据库不需要任何配置。 参考:https://redis.io/topics/replication(官方文档)http://www.cn 查看详情

构建高可用的redis服务(主从复制/哨兵/集群底层原理)(代码片段)

...复制的优缺点二、哨兵1、工作模式2、哨兵的优缺点三、集群1、集群的配置2、集群的优缺点高可用的Redis服务高可用:常见于分布式系统,指通过系统设计使能够提供服务的时间达到较高值。若系统能一直运行,则可... 查看详情

redis主从复制哨兵和集群区别

目录1、主从复制(Replication)1.1主从数据库1.2主从复制的特点1.3主从复制的优缺点2、哨兵(Sentinel)2.1Redis哨兵主要功能2.2Redis哨兵高可用原理2.3Redis哨兵故障切换的过程2.4Redis哨兵模式的工作方式2.5Redis哨兵模式的优缺点3、集群(Cluster)... 查看详情

redis主从复制-哨兵-集群相关部署(代码片段)

Redis主从复制+哨兵+集群一.主从复制-哨兵-集群二.主从复制1.主从复制的作用2.主从复制流程3.部署Redis主从复制三.哨兵模式1.哨兵模式的原理2.哨兵模式的作用3.哨兵结构由两部分组成,哨兵节点和数据节点部署哨兵模式... 查看详情

实现redis主从复制

...,我们可以部署Redis主从复制架构,Redis主从复制也是Redis集群最简单的实现方式,此篇就来看下如何部署Redis主从架构。  此次实验,笔者准备了3台Rocky 查看详情

memcached集群之通过repcached实现主从复制(待实践)

暂时了解有这东西,不搭建了。Mamcached可以通过Repcached实现主从复制。有以下优缺点:优点:1、能够实现Cache的冗余功能2、主从之间可以互相读写(亮点) 参考:http://www.jb51.net/article/29803.htmhttp://www.linuxidc.com/Linux/2014-08/10602... 查看详情

redis集群方案之twemproxy+haproxy+keepalived+sentinel+主从复制(待实践)

首先说明一下,Twemproxy+HAProxy+Keepalived+Sentinel+主从复制-这里提到的技术不一定全部都用上,但是全部用上之后可以达到高可用。主从复制:实现数据一式多份的保障。Sentinel哨兵模式:实现主从节点的切换,比如主节点挂了之后... 查看详情

mysql主从复制架构实现(代码片段)

文章目录一、MySQL集群概述1.集群的主要类型2.如何衡量高可用3.常用的集群架构二、MySQL复制介绍1.什么是MySQL复制2.MySQL复制原理3.MySQL复制架构1)双机热备(AB复制)2)级联复制3)并联复制(一主多从)4)双主复... 查看详情

redis数据库主从哨兵群集(代码片段)

redis集群一、Redis集群理论前言与介绍1.1前言1.2Redis群集介绍二、Redis三种模式2.1主从模式2.2哨兵模式2.3Cluster群集三、实验搭建3.1Redis主从复制模式3.1.1实验环境3.1.2三台服务器安装Redis5.0.73.1.3Master节点3.1.4Slaves节点3.1.5在Master节点... 查看详情

数据库集群的级联复制完整实现

...的二进制日志保存在从服务器的中继日志;并应用到本地数据库;    但是中间这个从服务器是即便是开启二进制日志的记录功能,他 查看详情

redis主从复制哨兵和集群区别

...:http://www.kongzid.com/目录1、主从复制(Replication)1.1主从数据库1.2主从复制的特点1.3主从复制的优缺点2、哨兵(Sentinel)2.1Redis哨兵主要功能2.2Redis哨兵高可用原理2.3Redis哨兵故障切换的过程2.4Redis哨兵模式的工作方式2.5 查看详情

九redis三种集群模式

...为了避免单点故障,可以使用多台redis服务器组成redis集群。redis支持三种集群模式。一、主从模式至少需要两台redis服务器,一台主节点(master)、一台从节点(slave),组成主从模式的Redis集群。通常... 查看详情

redis的高可用实现方案:哨兵与集群(代码片段)

...从复制主从复制概念主从复制的作用主从复制流程:集群:概念:数据存储原理:集群的功能限制:集群的通信原理 查看详情

redis6主从复制及集群(代码片段)

...理一主多仆薪火相传反客为主问题分析从机宕机主机宕机集群搭建集群集群操作存储数据读取数据 故障恢复主从复制主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主&... 查看详情

redis大型攻略之主从复制哨兵模式群集模式

文章目录redis前言主从复制:哨兵:集群:Redis主从复制概述作用工作流程搭建Redis主从复制配置redis前言主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的主从复制主要... 查看详情

深入学习redis:主从复制(代码片段)

...包括持久化、主从复制(及读写分离)、哨兵和集群。其中持久化侧重解决的是Redis数据的单机备份问题(从内存到硬盘的备份);而主从复制则侧重解决数据的多机热备。此外,主从复制还可以实现负载... 查看详情