mariadb-10.1主从复制

Mariadb版本:10.1.11

架构:node1.example.com(192.168.180.100)作为主服务器

node2.example.com(192.168.180.101)作为从服务器

主从复制原理图:

Master:node1.example.com                        Slave:node2.example.com

主从复制原理介绍:MySQL的二进制日志会记录所有对数据库进行更改的操作,也就是说只要是会对数据库产生修改的操作都会被记录到二进制日志中去。记录二进制日志的主要目的有两方面:

1、恢复(recovery)

2、复制(replication)

MySQL的复制就是基于二进制日志而完成的,其工作原理如下:

当Master的数据有更改的时候,Master会主动通知Slave,让Slave主动来Master要取二进制日志,于是Slave开启一个I/O thread,向Master请求二进制日志中记录的语句;Master将二进制日志中记录的语句发给Slave,Slave则将这些语句存到中继日志中,进而从中继日志中读取一句,执行一句,直到所有的语句被执行完。而经SQL语句从中继日志中读取出来,再一一执行的进程叫做SQL thread;将这些语句执行完之后,从服务器的数据就和主服务器的数据相同了,这就是所谓的MySQL主从复制;

由MySQL的主从复制原理可知:

1、Master必须开启二进制日志;

2、Slave必须开启中继日志;

3、Slave需关闭二进制日志;

4、Slave需连接到Master。

5、Master和Slave的server-id不得相同。

主从复制的配置:

Master(192.168.180.100):

1、改server-id;

2、启用二进制日志;

3、创建拥有复制权限的账号。

Slave(192.168.180.101):

1、改server-id;

2、启用中继日志;

3、连接主服务器;

4、启用复制线程。

实现过程:

Master:

[[email protected] ~]# vim /etc/my.cnf 
    log-bin=/data/binlogs/mysql-bin
    server-id   = 1
#创建拥有复制权限的账号
MariaDB [(none)]> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘repluser‘@‘192.
                    168.180.101‘ IDENTIFIED BY ‘redhat‘;
MariaDB [(none)]> FLUSH PRIVILEGES;

Slave:

[[email protected] ~]# vim /etc/my.cnf
    #log-bin=/data/binlogs/mysql-bin       #找到这一行,注释
    #binlog_format=mixed             #找到这一行,注释
    server-id   = 10             #在配置文件里修改这一行
    relay-log = /data/relaylogs/relay-bin   #添加这一行
[[email protected] ~]# mkdir /data/relaylogs
[[email protected] ~]# chown -R mysql:mysql /data/relaylogs/
[[email protected] ~]# service mysqld restart
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘192.168.180.100‘, MASTER_USER=‘repluser‘,
         MASTER_PASSWORD=‘redhat‘;
    
    MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.180.100
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 658
               Relay_Log_File: relay-bin.000006
                Relay_Log_Pos: 537
        Relay_Master_Log_File: mysql-bin.000004
             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: 658
              Relay_Log_Space: 1526
              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
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
      Replicate_Do_Domain_Ids: 
  Replicate_Ignore_Domain_Ids: 
                Parallel_Mode: conservative
MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> START SLAVE;
    
    MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.180.100
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 658
               Relay_Log_File: relay-bin.000006
                Relay_Log_Pos: 537
        Relay_Master_Log_File: mysql-bin.000004
             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: 658
              Relay_Log_Space: 1526
              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
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
      Replicate_Do_Domain_Ids: 
  Replicate_Ignore_Domain_Ids: 
                Parallel_Mode: conservative

到这里,MySQL的主从复制就已经搭建完成了,接下来,我们做一个验证。验证过程是这样的:1、在Master端创建数据库mydb,并在mydb数据库里创建表t1,并插入数据;

2、在Slave端查看是否有这样的库和表和表中的数据,当然前提是从服务器里面没有这样的表和库;

Master端:

MariaDB [(none)]> CREATE DATABASE mydb;
MariaDB [(none)]> USE mydb;
MariaDB [mydb]> CREATE TABLE t1 (ID INT NOT NULL);
MariaDB [mydb]> INSERT INTO t1 VALUES(1), (2), (3), (4);
MariaDB [mydb]> SELECT * FROM t1;
+-------+
| ID  |
+-------+
|   1  |
|   2  |
|   3  |
|   4  |
+-------+

Slave端进行查看:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
+--------------------+
MariaDB [(none)]> USE mydb;
Database changed
MariaDB [mydb]> SHOW TABLES;
+----------------+
| Tables_in_mydb |
+----------------+
| t1             |
+----------------+

MariaDB [mydb]> SELECT * FROM t1;
+----+
| ID |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+

至此,说明MySQL主从复制正常。。。

时间: 2024-10-07 00:17:36

mariadb-10.1主从复制的相关文章

MariaDB 10.3 主从半同步复制

本文介绍MariaDB主从半同步复制,以上一篇<MariaDB 10.3 主从复制>为基础,介绍主从半同步复制配置. 1. 简介 MariaDB从10.3.3开始已经把半同步插件加入到Server中,因此在配置主从半同步时,不再需要加载插件,本文所用的MariaDB版本为10.3.7. 2. 查看半同步复制参数 MariaDB01主 MariaDB02从 3. 启动半同步复制 MariaDB01 master启用命令:SET GLOBAL rpl_semi_sync_master_enable

MariaDB 10 基于OpenSSL的主从复制

需求架构 准备工作 主从服务器时间同步 # 主从服务器同时配置crontab任务,与NTP服务器同步时间即可 */5 * * * * ntpdate 172.16.0.1 &>/dev/null 部署配置 主库配置 vi /etc/my.cnf server-id = 1 # 在复制架构中,需保持全局唯一 log-bin = mysql-bin # 默认在数据目录下 sync_binlog = 1 # 设置mariadb每次在提交事务前会将二进制日志同步到磁盘,保证服务器崩溃时不会丢失事件

关于MariaDB.10.5.1 主从复制介绍

提示:本博文演示环境是基于centos7.2 x86_64位,最小化安装系统,MariaDB.10.5.1二进制安装来进行的 一.简单介绍下slave库的并行复制模式 slave_parallel_mode的 slave并行复制的5种模式:官方给的5种模式 Description: Controls what transactions are applied in parallel when using parallel replication. optimistic: tries to app

What&#39;s is new in MariaDB 10.0(MySQL创始人Monty演讲)

视频地址(请使用翻墙软件观看): http://www.youtube.com/watch?v=4Th7JeRxPlo&feature=youtu.be PDF在附件里. What's is new in MariaDB 10.0(MySQL创始人Monty演讲),布布扣,bubuko.com What's is new in MariaDB 10.0(MySQL创始人Monty演讲)

MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据。

MariaDB 10.0.X中,动态列(Dynamic Columns),可以支持 JSON 格式来获取数据. 为了兼容传统SQL语法,MariaDB 10和MySQL5.7支持原生JSON格式,即关系型数据库和文档型NoSQL数据库集于一身. 使用说明: ###表结构 create table assets (   item_name varchar(32) primary key, -- A common attribute for all items   dynamic_cols  blo

mariadb 10 多源复制(Multi-source replication) 业务使用场景分析,及使用方法

mariadb 10 多源复制(Multi-source replication) 业务使用场景分析,及使用方法 官方mysql一个slave只能对应一个master,mariadb 10开始支持多源复制,一个slave可以有多个master,分别从各自的master复制不同的DB. 这个特性可以用在OLAP环境中,传统电商DB都是拆了再拆,分库分表,sharding,而OLAP环境或者大数据平台环境,通常需要各种数据的聚合,多个平台多个DB数据的复合查询,而这些数据分散在各个库中,怎么办了,当

MariaDB 10之TokuDB存储引擎

TokuDB存储引擎,你可以把它看做是ARCHIVE存储引擎的升级版,它拥有了密集压缩,并且支持事务. 压缩比: Engine Compression Table size [MB] InnoDB  none  2272 InnoDB  KEY_BLOCK_SIZE=8  1144 InnoDB  KEY_BLOCK_SIZE=4  584 MyISAM  none  1810 MyISAM  compressed with myisampack  809 Archive  default  2

总结一下,MariaDB 10(MySQL5.6企业版分支)的主要新特性

① 支持48核的CPU,而5.5支持24核的CPU ② 内存热数据持久化,我们知道当系统重启或者mysql进程重启后,Innodb的内存池里面的热数据全部清空,需要重新把磁盘的数据缓存进来,然后根据 LRU最近最少使用原则,把热数据保持在内存里,冷数据踢出到磁盘里.这个过程是缓慢的.5.6里改进了这一点,会自动把内存的热数据导出到磁盘里,这样 mysql重启后,会立即从磁盘里导入Innodb内存池,减少了与磁盘IO的交互. ③ 在线DDL功能.5.5版本里,修改表结构会导致锁表,例如用户进件会卡

使用RPM包离线安装MariaDB 10.0.20 , 基于CentOS 6.6-x86-64

使用RPM包[离线]安装 MariaDB 10.0.20,基于CentOS 6.6-x86-64 Minimal 湘中朱生 2015-07-01 于深圳福田 QQ: 872007255 MariaDB交流群: 198111730 文档说明: 1. 网上有很多关于MariaDB/Mysql数据库的安装技术博客文档,主要有源码编译安装和Yum源安装,有些写得很规范优秀,但很少有基于离线RPM包安装的. 2. 源码编译安装对于初学者而言门槛过高, 很容易打击MariaDB初学者学习探索的积极性; Yu

mariadb 10.1查看per connection内存消耗

在mariadb 10.1版本中,在information_schema.processlist表中,新增了几个字段,其中有一个memory_used,其记录的是连接的内存消耗. 同时新增了一个状态变量memory_used,其记录的应该是所有连接加起来消耗的内存(官方并没有特别详细地解释https://mariadb.com/kb/en/mariadb/show-processlist/),应该类似于oracle pga的概念. 为了再检查下mysql占用内存远超过buffer pool的原因