一、简单主从模式配置步骤(必须要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主从复制及多主复制的更多相关文章

  1. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)

    之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...

  2. 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)

    前言:          原理与思想        这里选用GTID主从复制模式Mysql主从复制模式,是为了更加确保主从复制的正确性.健康性与易配性.这里做的是两服务器A,B各有Mysql实例331 ...

  3. MySQL 5.7 基于GTID主从复制+并行复制+半同步复制

    环境准备 IP HOSTNAME SERVICE SYSTEM 192.168.131.129 mysql-master1 mysql CentOS7.6 192.168.131.130 mysql- ...

  4. Mysql基于GTID主从复制

    Mysql5.6基于GTID全局事务的复制 什么是GTID?   GTID(Global Transaction Identifiers)是全局事务标识 当使用GTIDS时,在主上提交的每一个事务都会 ...

  5. mysql主从复制及双主复制

    之前做过一次在单台机器上的多实例的mysql,这次分开做,使用两台主机. 这里使用的主机地址分别为: MASTER:192.168.214.135 SLAVE  : 192.168.214.128 这 ...

  6. percona mysql server5.7基于gtid的主从复制

    配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...

  7. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...

  8. Mysql5.7实现主从复制、基于GTID的主从复制、并行复制

    (一.主从复制) 一.mysql主从复制原理    mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...

  9. 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)

    主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...

随机推荐

  1. AutoCompleteTextView和自定义的CursorAdapter

    用雅虎天气接口和AutoCompleteTextView开发天气应用(1) 2014/03/20 | 分类: ANDROID, 开发 | 2 条评论 | 标签: 天气, 安卓开发 分享到:5 jQue ...

  2. poco logging

    http://pocoproject.org/slides/110-Logging.pdf

  3. Nginx配置项优化详解【转】

    (1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...

  4. Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1) C.Producing Snow

    题目链接  题意  每天有体积为Vi的一堆雪,所有存在的雪每天都会融化Ti体积,求出每天具体融化的雪的体积数. 分析 对于第i天的雪堆,不妨假设其从一开始就存在,那么它的初始体积就为V[i]+T[1. ...

  5. 去除inline-block出现间距的几种方法

    display:inline-block,简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,之后的内联对象会排列在同一行 比如两个input,默认中间会产生一些间距 &l ...

  6. Simple Sort

    题目描述 You are given an unsorted array of integer numbers. Your task is to sort this array and kill po ...

  7. 《深入理解java虚拟机》第二章 Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域  

  8. 2017CCPC秦皇岛 E题String of CCPC&&ZOJ3985【模拟】

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985 题意: 给定一个字符串,由c和p组成,可以添加c或者p. 串中出现一 ...

  9. MySQL5.7使用错误解决:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)【取消或重设root密码】

    解决方法: 最简单方法: ⑴打开mysql中的my.ini(如果没有就将my-default.ini复制一份,并修改为my.ini): ⑵在[mysqld]下面空白行直接添加skip-grant-ta ...

  10. Django学习手册 - cookie / session

    cookie """ cookie属性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,s ...