MariaDB基于GTID主从复制及多主复制
一、简单主从模式配置步骤(必须要mysql5.6,此处以maridb10.0.10为例)
1、配置主从节点的服务配置文件
# vim /etc/my.cnf
1.1、配置master节点:
[mysqld]
log-bin=/data/binlogs/master-bin
binlog_format=row
server-id = 100
log-slave-updates = True
#gtid-mode = ON
#enforce-gtid-consistency=True
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info = 1
slave-parallel-threads = 2
binlog-checksum = CRC32
master-verify-checksum = 1
slave-sql-verify-checksum = 1
binlog-rows-query-log-events = 1
report-port = 3306
report-host = master.chinasoft.com
1.2、配置slave节点:
[mysqld]
log-bin=/data/binlogs/master-bin
binlog_format=row
server-id = 200
log-slave-updates = True
#gtid-mode = ON
#enforce-gtid-consistency=True
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info = 1
slave-parallel-threads = 2
binlog-checksum = CRC32
master-verify-checksum = 1
slave-sql-verify-checksum = 1
binlog-rows-query-log-events = 1
report-port = 3306
report-host = slave.chinasoft.com
修改文件报错可参考/data/mydata/下的错误日志定位
# tail centossz008.err
修改master的hostname
在hosts文件中添加master和slave的解析,将传给slave
192.168.8.40 master.chinasoft.com master
192.168.8.43 slave.chinasoft.com slave
# hostname master.chinasoft.com
# vim /etc/hosts
# scp /etc/hosts 192.168.8.42:/etc/
配置中可能碰到的错误:
2、创建复制用户
主服务器192.168.8.40:
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.%.%' IDENTIFIED BY 'replpass';
MariaDB [(none)]> FLUSH PRIVILEGES;
说明:192.168.%.% 是从节点服务器;如果想一次性授权更多的节点,可以自行根据需要修改;
3、为备节点提供初始数据集
锁定主表,备份主节点上的数据,将其还原至从节点;如果没有启用GTID,在备份时需要在master上使用show master status命令查看二进制日志文件名称及事件位置,以便后面启动slave节点时使用。
# mysqldump --all-databases --lock-all-tables --flush-logs --master-data=2 > all.sql
传给从服务器
# scp all.sql:192.168.8.43
4、启动从节点的复制线程
普通主从复制:
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000004',MASTER_LOG_POS=379;
启用GTID,需要使用如下命令:
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_USE_GTID=current_pos;
MariaDB [(none)]> start slave;
查看从服务器状态
MariaDB [(none)]> show slave status\G
可以通过在主服务器中导入一张大的数据表(总数量在4W行左右),通过从服务器观察是否启用了多线程复制:
主服务器:
MariaDB [db1]> CREATE TABLE `ehr_user` ( `LOB_NUMBER` varchar(255) NOT NULL, `SEX` varchar(255) DEFAULT '', `LAST_NAME` varchar(255) DEFAULT NULL, `EMPLOYEE_NUMBER` varchar(255) DEFAULT NULL, `PHONE` varchar(255) DEFAULT NULL, `NATIONAL_IDENTIFIER`
varchar(255) DEFAULT NULL, `EMAIL` varchar(255) DEFAULT NULL, `LOB_GROUP` varchar(255) DEFAULT NULL, `LOB` varchar(255) DEFAULT NULL, `BUG` varchar(255) DEFAULT NULL, `BUDU` varchar(255) DEFAULT NULL, `DD` varchar(255) DEFAULT NULL, `REGION`
varchar(255) DEFAULT NULL, `DS` varchar(255) DEFAULT NULL, `PEOPLE_TYPE` varchar(255) DEFAULT NULL, `ACTUAL_TERMINATION_DATE` varchar(255) DEFAULT NULL, `HIRE_DATE` timestamp NULL DEFAULT NULL, `FLAG` varchar(8) CHARACTER SET gbk COLLATE gbk_bin
DEFAULT '0', `LAST_UPDATETIME` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `EMAIL_NO_LOGIN` varchar(8) DEFAULT NULL, `LOB_NUMBER_BAK` varchar(255) DEFAULT NULL, PRIMARY KEY (`LOB_NUMBER`), KEY `EMPLOYEE_NUMBER` (`EMPLOYEE_NUMBER`),
KEY `FLAG` (`FLAG`) USING BTREE, KEY `LOB` (`LOB`) USING BTREE ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
MariaDB [db1]> source /root/ehr_user.sql
从服务器通过命令观察:
# watch -n .3 "mysql -e 'show processlist\G'"
# watch -n .5 "mysql -e 'show slave status\G'"
报错:
Last_IO_Error: error connecting to master 'repluser@192.168.8.40:3306' - retry-time: 60 retries: 86400 message: Can't connect to MySQL server on '192.168.8.40' (113 "No route to host")
发现是被防火墙阻挡了,在主服务器关闭防火墙
# service iptable stop
验证测试:
通过在主服务器上创建数据库、表,能否在从服务器看到
多主复制:
主服务器1: 192.168.8.40
主服务器2:192.168.8.43
从服务器:192.168.8.44
配置主服务器2:
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.%.%' IDENTIFIED BY 'replpass';
配置从服务器192.168.8.44:
修改配置文件
vim /etc/my.cnf
加入
relay-log=/data/binlogs/relay-bin
server-id = 300
注释掉
# bin-log=master-bin
重启服务
# service mysqld restart
MariaDB [(none)]> CHANGE MASTER 'm1' TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass';
MariaDB [(none)]> CHANGE MASTER 'm2' TO MASTER_HOST='192.168.8.43',MASTER_USER='repluser',MASTER_PASSWORD='replpass';
启动服务:
MariaDB [db1]> start all slaves;
观察服务是否启动正常:
MariaDB [(none)]> show slave 'm2' status\G
MariaDB [(none)]> show slave 'm1' status\G
报错:
Last_SQL_Error: Error 'Can't create database 'mydb'; database exists' on query. Default database: 'mydb'. Query: 'create database mydb'
解决方法:
主服务器m1:
从服务器执行(192.168.8.44):
MariaDB [(none)]> STOP SLAVE 'm1';
MariaDB [(none)]> CHANGE MASTER 'm1' TO MASTER_HOST='192.168.8.40',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000007',MASTER_LOG_POS=335;
再次验证OK
MariaDB基于GTID主从复制及多主复制的更多相关文章
- Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)
之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...
- 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)
前言: 原理与思想 这里选用GTID主从复制模式Mysql主从复制模式,是为了更加确保主从复制的正确性.健康性与易配性.这里做的是两服务器A,B各有Mysql实例331 ...
- MySQL 5.7 基于GTID主从复制+并行复制+半同步复制
环境准备 IP HOSTNAME SERVICE SYSTEM 192.168.131.129 mysql-master1 mysql CentOS7.6 192.168.131.130 mysql- ...
- Mysql基于GTID主从复制
Mysql5.6基于GTID全局事务的复制 什么是GTID? GTID(Global Transaction Identifiers)是全局事务标识 当使用GTIDS时,在主上提交的每一个事务都会 ...
- mysql主从复制及双主复制
之前做过一次在单台机器上的多实例的mysql,这次分开做,使用两台主机. 这里使用的主机地址分别为: MASTER:192.168.214.135 SLAVE : 192.168.214.128 这 ...
- percona mysql server5.7基于gtid的主从复制
配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...
- Mysql基于GTID复制模式-运维小结 (完整篇)
先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...
- Mysql5.7实现主从复制、基于GTID的主从复制、并行复制
(一.主从复制) 一.mysql主从复制原理 mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...
- 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)
主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...
随机推荐
- /dev/null 2>&1 什么意思
在Unix中,标准输入设备 stdin是0, stdout 是1, stderr是 2. /dev/null 2>&1这样的写法意思是将标准输出和错误输出全部重定向到/dev/nu ...
- ST表与树状数组
ST表 st表可以解决区间最值的问题.可以做到O(nlogn)预处理 ,O(1)查询,但是不支持修改. st表的大概思路就是用st[i][j]来表示从i开始的2的j次方个树中的最值,查询时就从左端点 ...
- python中的os模块
os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小…… 另 ...
- memcache、redis原理对比
一.问题: 数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求. 二.解决方案: 1.通过高速服务器Cache缓存数据库数据 2.内存数据库 ( ...
- P1450 [HAOI2008]硬币购物
题目描述 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. di,s<=100000 ...
- JavaSE学习总结(八)—— 异常处理(Exception)
一.理解异常及异常处理的概念 异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序. 异常不是错误 程序中关键的位置有异常处理,提高程序的稳定性 二.掌握Java异常处理机制 Jav ...
- 去除inline-block出现间距的几种方法
display:inline-block,简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,之后的内联对象会排列在同一行 比如两个input,默认中间会产生一些间距 &l ...
- pycharm sql语句警告
产生原因为没有配置数据库,配置数据库,似乎没什么作用 那么,直接去掉他的警告提示 找到setting->editor->inspections,然后找到右边sql下的 No data so ...
- Centos下新建用户及修改用户目录
Centos下新建用户及修改用户目录 Hillgo 关注 2015.09.22 01:32* 字数 154 阅读 3492评论 0喜欢 3 添加及删除用户 添加用户 test: adduser tes ...
- Entry point (0x08000000) points to a Thumb instruction but is not a valid Thumb code pointer.
1.菜单 project-options-linker-misc controls加入 --entry Reset_Handler --first __Vectors 2.导入startup_stm3 ...