maridb 主从复制
maridb(>10.0)主从复制
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 #通用配置
[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 #添加配置
[mysqld]
server-id = 1
log_bin = /data/mysql/maridb-bin/maridb-bin.log重启master数据库
root@xyx-test01:~# /etc/init.d/mysql restart
root@xyx-test01:~# ls /data/mysql/maridb-bin/ #生成日志文件
maridb-bin.000001 maridb-bin.indexslave添加配置
server-id = 2
relay_log = /var/lib/mysql/maridb-bin/maridb-relay-bin.log重启slave数据库
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,导出老数据过程不锁表root@xyx-test01:/data# mysqldump -uzabbix -pzabbix --master-data=2 --single-transaction zabbix |gzip > zabbix.sql.gz
日志样例
-- 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:
MariaDB [zabbix]>GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'replica'@'%' identified by 'replica';
MariaDB [zabbix]>flush privileges;
5.同步数据
导入数据
root@xyx0001:/var/lib/mysql# nohup mysql -uzabbix -pzabbix zabbix < zabbix.sql &
启动同步(slave)
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 主从复制的更多相关文章
- maridb 10.3 主从复制,待机情况下从库 cpu 占用率高的处理方法
发现两台从库,一直都在CPU 占用率 60% 90% 中浮动, 但是写库却很正常.搜了一大把没找到答案,把参数测试了一下得出以下结论 slave my.cnf 添加如下参数 #只读模式 read_o ...
- win下maridb 10.1.8下主从复制配置
主库配置 server_id=1read-only=0replicate-do-db=mydatalog-bin=mysql-bin 主库权限设置 GRANT replication slave ON ...
- 重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践
一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- [原]Redis主从复制各种环境下测试
Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 C ...
- MySQL+Amoeba实现数据库主从复制和读写分离
MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...
- Redis主从复制
大家可以先看这篇文章ASP.NET Redis 开发对Redis有个初步的了解 Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此 ...
- MySQL主从复制(Master-Slave)实践
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...
- 2.快速部署MySQL主从复制
1.快速部署MySQL主从复制 [root@mysql ~]# mysql -uroot -p123456 -S /data/3307/mysql.sock -e "show slave ...
随机推荐
- DNS原理及实战配置指南
目录 DNS简介 DNS域名结构介绍 顶级域名 DNS工作原理 工作模式和端口 资源记录 安装bind(详细) 实战:配置一个正反向解析 实战:配置DNS转发 实战:配置DNS主从 实战:子域授权 实 ...
- target runtime com.genuitec.runtime.genuitec.jee60 is not defined
选中项目,右键 -> Properties -> Project Facets -> 在Runtimes 里 选择用Tomcat运行,然后 Apply -> OK. 问题解决.
- Codeforces 884E E. Binary Matrix
题 OvO http://codeforces.com/contest/884/problem/E 884e 解 考虑并查集,每个点向上方和左方的点合并,答案即为1的总数减去需要合并的次数 由于只有1 ...
- 浅析flex 布局
Flex基本概念: 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis).主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end: ...
- sklearn PCA的使用
import numpy as np from sklearn.decomposition import PCA # 训练数据 train_data = np.array([[1, 2, 3], [4 ...
- CDOJ 1264 人民币的构造 区间问题+数论
人民币的构造 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status ...
- 【CUDA 基础】3.3 并行性表现
title: [CUDA 基础]3.3 并行性表现 categories: - CUDA - Freshman tags: - nvprof toc: true date: 2018-04-15 21 ...
- Vue_(组件通讯)父组件向子组件传值
Vue组件 传送门 父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 1.定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件 2.准备获取数据:c ...
- TCP层shutdown系统调用的实现分析
概述 shutdown系统调用在tcp层会调用两个函数,对于ESTABLISHED状态需要调用tcp_shutdown关闭连接,对于LISTEN和SYN_SENT状态则需要以非阻塞模式调用tcp_di ...
- Ubuntu16 升级nodejs版本
Ubuntu16下,使用apt-get下载的nodejs最新版本为v4.2.6,而react-native需要v8.x及以上的版本 解决方法在网上找到了这一篇博客Ubuntu安装最新版nodejs,用 ...