maridb(>10.0)主从复制

1.环境说明

  • 测试环境

  1. 系统版本:Ubuntu 16.04.5 LTS
    内核版本:4.4.0-141-generic x86_64
    MariaDB版本:mysql Ver 15.1 Distrib 10.0.36-MariaDB
    主服务器:192.168.100.179   xyx-test01.lingda.com
    从服务器:192.168.100.70     xyx0001.lingda.com

2.MariaDB配置

  • /etc/mysql/mariadb.conf.d/50-server.cnf #通用配置

    1. [mysqld]
      binlog-format=ROW
      log-slave-updates=True           # slave更新是否记入日志
      master-info-repository=TABLE
      relay-log-info-repository=TABLE # 此两项为打开从服务器崩溃二进制日志功能,信息记录在事物表而不是保存在文件
      sync-master-info=1               # 值为1确保信息不会丢失
      slave-parallel-threads=1         #同时启动多少个复制线程,最多与要复制的数据库数量相等即可
      binlog-checksum=CRC32           # 效验码
      master-verify-checksum=1         # 启动主服务器效验
      slave-sql-verify-checksum=1     # 启动从服务器效验
      binlog-rows-query-log-events=1   # 用于在二进制日志详细记录事件相关的信息,可降低故障排除的复杂度;
  • master #添加配置

    1. [mysqld]
      server-id               = 1
      log_bin                 = /data/mysql/maridb-bin/maridb-bin.log
  • 重启master数据库

    1. root@xyx-test01:~# /etc/init.d/mysql restart
      root@xyx-test01:~# ls /data/mysql/maridb-bin/             #生成日志文件                        
      maridb-bin.000001 maridb-bin.index                              
  • slave添加配置

    1. server-id               = 2
      relay_log               = /var/lib/mysql/maridb-bin/maridb-relay-bin.log
  • 重启slave数据库

    1. root@xyx0001:~# /etc/init.d/mysql restart

3.导出数据

  • 保证数据一致性

    主要考虑的问题是maridb从节点slave是在主节点master运行了一段时间之后才接入,常规同步时锁表(master)导出老数据,记录当前二进制日志文件maridb-bin.log和位置postion,但锁表会影响业务正常使用;故采用方法二:通过gtid的方式同步,导出老数据的时候文件开头自带当前二进制日志文件名、位置postion、gtid值,导出数据时带入参数: --master-data=2,记录二进制日志文件名、位置postion、gtid值 --single-transaction,导出老数据过程不锁表

    1. root@xyx-test01:/data# mysqldump -uzabbix -pzabbix --master-data=2 --single-transaction zabbix |gzip > zabbix.sql.gz
  • 日志样例

  1. -- CHANGE MASTER TO MASTER_LOG_FILE='maridb-bin.000005', MASTER_LOG_POS=3554718;
    --
    -- GTID to start replication from
    --
    28 -- SET GLOBAL gtid_slave_pos='0-1-465';

4.创建同步权限用户

master:

  1. MariaDB [zabbix]>GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'replica'@'%' identified by 'replica';
    MariaDB [zabbix]>flush privileges;

5.同步数据

  • 导入数据

  1. root@xyx0001:/var/lib/mysql# nohup mysql -uzabbix -pzabbix zabbix < zabbix.sql &
  • 启动同步(slave)

  1. MariaDB [(none)]> SET GLOBAL gtid_slave_pos='0-1-465';
    MariaDB [(none)]> CHANGE MASTER TO
       -> MASTER_HOST='192.168.100.179',
       -> MASTER_USER='replica',
       -> MASTER_PASSWORD='lingdasa',
       -> MASTER_PORT=3306,
       -> MASTER_USE_GTID=slave_pos;
    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.100.179
                    Master_User: replica
                    Master_Port: 3306
                  Connect_Retry: 60
                Master_Log_File: maridb-bin.000007
            Read_Master_Log_Pos: 87457185
                  Relay_Log_File: maridb-relay-bin.000007
                  Relay_Log_Pos: 64698613
          Relay_Master_Log_File: maridb-bin.000007
                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: 64698321
                Relay_Log_Space: 192672037
                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: 2839
    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: Slave_Pos
                    Gtid_IO_Pos: 0-1-884
  • 部分参数说明

Slave_IO_Running: Yes、Slave_SQL_Running: Yes #表示同步状态正常

Master_Log_File和Relay_Master_Log_File 对应文件名相同,则slave当前读的日志和master当前最新的日志文件相同

Exec_Master_Log_Pos <= Read_Master_Log_Pos #slave同步的二进制日志位置小于等于主上二进制日志位置

 

maridb 主从复制的更多相关文章

  1. maridb 10.3 主从复制,待机情况下从库 cpu 占用率高的处理方法

    发现两台从库,一直都在CPU 占用率 60% 90% 中浮动, 但是写库却很正常.搜了一大把没找到答案,把参数测试了一下得出以下结论 slave  my.cnf 添加如下参数 #只读模式 read_o ...

  2. win下maridb 10.1.8下主从复制配置

    主库配置 server_id=1read-only=0replicate-do-db=mydatalog-bin=mysql-bin 主库权限设置 GRANT replication slave ON ...

  3. 重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践

    一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库 ...

  4. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  5. [原]Redis主从复制各种环境下测试

    Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 C ...

  6. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...

  7. Redis主从复制

    大家可以先看这篇文章ASP.NET Redis 开发对Redis有个初步的了解 Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此 ...

  8. MySQL主从复制(Master-Slave)实践

    MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...

  9. 2.快速部署MySQL主从复制

      1.快速部署MySQL主从复制 [root@mysql ~]# mysql -uroot -p123456 -S /data/3307/mysql.sock -e "show slave ...

随机推荐

  1. BZOJ 3881[COCI2015]Divljak (AC自动机+dfs序+lca+BIT)

    显然是用AC自动机 先构建好AC自动机,当B中插入新的串时就在trie上跑,对于当前点,首先这个点所代表的串一定出现过,然后这个点指向的fail也一定出现过.那么我们把每个点fail当作父亲,建一棵f ...

  2. markdown 使用总结

    Markdown介绍 Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber).它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文 ...

  3. HDU 3826 Squarefree number ( 唯一分解定理 )

    题目链接 题意 : 给出一个数.问其能不能被任何一个平方数整除.如果可以则输出 No 即不是 Square-free Number .否则输出 Yes 分析 : 首先 N 有 1e18 那么大.不能暴 ...

  4. HDU 5726 GCD (2016多校、二分、ST表处理区间GCD、数学)

    题目链接 题意 : 给出一个有 N 个数字的整数数列.给出 Q 个问询.每次问询给出一个区间.用 ( L.R ) 表示.要你统计这个整数数列所有的子区间中有多少个和 GCD( L ~ R ) 相等.输 ...

  5. DOM对象属性

    事件  onmouseover 鼠标以上事件  onmouseout    鼠标离开事件  onclock 鼠标点击事件  onfocus 获取焦点 onblur 失去焦点 oninput  输入事件 ...

  6. RESTful API是什么?

    1. REST 是Repersentational State Transfer的缩写 翻译为"表述性状态传递",那么什么是表述性状态传递呢?为了理解这个词语,我们从"R ...

  7. Linux 解压小全

    .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .zip 解压:unzip FileName.zip 压缩:zi ...

  8. java编程出现的错误对应的解决方法

    error: could not open D:\java\jre1.8\lib\amd64\jvm.cfg 解决方法:把java的环境变量%JAVA_HOME%/bin上移到最上面 优化 查看网页源 ...

  9. smarty 模板中输出时间戳为年月日格式

    日期:{:date('Y-m-d',$v['addtime'])}  // $v['addtime']数据库中的时间戳 输出结果: 日期:{:date('Y-m-d H:i:s',$v['addtim ...

  10. drawable SVG 使用

    Android会使用一些规则来去帮我们匹配最适合的图片.什么叫最适合的图片?比如我的手机屏幕密度是xxhdpi,那么drawable-xxhdpi文件夹下的图片就是最适合的图片.因此,当我引用andr ...