搭建第一个节点
[root@slave2 ~]# cat /etc/my.cnf
server_id = 3
gtid-mode=on
enforce-gtid-consistency=on
log-bin=mysql-bin
log-slave-updates=true
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
binlog_format=ROW
# Group Replication configuration
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:33061"
loose-group_replication_group_seeds= "192.168.237.131:33061,192.168.237.132:33061"
loose-group_replication_bootstrap_group= off
重启mysql
/etc/init.d/mysql.server restart
配置复制用户:
mysql> CREATE USER 'repl'@'192.168.237.%' IDENTIFIED BY 'mysql';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.237.%';
执行change master命令:
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='mysql' FOR CHANNEL
'group_replication_recovery';
安装组复制插件:
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
启动组复制:
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
查看组复制成员状态:
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------
------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT |
MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------
------+
| group_replication_applier | fab79358-4c05-11e7-96aa-000c29e99435 | slave2 | 3308 |
ONLINE |
mysql> create database test;
Query OK, 1 row affected (0.02 sec)
mysql> use test;
Database changed
mysql> create table students(sid int primary key,sname varchar(10),gender int,dept_id int);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into students values(1,'a',1,1);
Query OK, 1 row affected (0.00 sec)
mysql> create table students2(sid int,sname varchar(10));
Query OK, 0 rows affected (0.07 sec)
mysql> insert into students2 values(1,'a');
ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.
该表没有主键,插入数据时报错。
添加第二个节点:
server_id = 4
log-bin=mysql-bin
gtid-mode=on
enforce-gtid-consistency=on
binlog-format=row
log-slave-updates=true
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
binlog_format=ROW
# Group Replication configuration
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "192.168.237.132:33061"
loose-group_replication_group_seeds= "192.168.237.131:33061,192.168.237.132:33061"
loose-group_replication_bootstrap_group= off
group_replication_allow_local_disjoint_gtids_join=ON #####在加入group之前的binlog记录的信息剔除掉
重启服务
/etc/init.d/mysql.server restart
在第二个节点上创建复制用户
mysql> CREATE USER 'repl'@'192.168.237.%' IDENTIFIED BY 'mysql';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.237.%';
在第二个节点上执行change master命令
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='mysql' FOR CHANNEL
'group_replication_recovery';
在第二个节点上安装插件
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
在第二个节点上启动组复制
mysql> START GROUP_REPLICATION;
查看两个节点的状态
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------
------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT |
MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------
------+
| group_replication_applier | d6f5df86-5d91-11e7-9848-000c29173afe | mycat | 3308 |
RECOVERING |
| group_replication_applier | fab79358-4c05-11e7-96aa-000c29e99435 | slave2 | 3308 |
ONLINE |
在第二个节点上已经能够看到被复制过来的数据:
mysql> use test;
mysql> select * from students;
+-----+-------+--------+---------+
| sid | sname | gender | dept_id |
+-----+-------+--------+---------+
| 1 | a | 1 | 1 |
验证数据同步
在第一个节点执行:
mysql> create database test2;
mysql> use test2;
Database changed
mysql> create students(sid int primary key,sname varchar(10));
mysql> create table students(sid int primary key,sname varchar(10));
mysql> insert into students values(1,'a');
在第二个节点查看:
mysql> use test2;
Database changed
mysql> select * from students;
+-----+-------+
| sid | sname |
+-----+-------+
| 1 | a |
在第二个节点操作:
mysql> insert into students values(2,'b');
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot
execute this statement
从节点不允许插入操作
在已运行的一个组复制集群中增加第三个节点:
在第一个节点上执行mysqldump
./mysqldump --master-data=2 --databases test2 -u root -p >test2.dump
将文件复制到第三个节点上
第三个节点的my.cnf配置和第二个节点相同
配置复制用户
将备份文件应用到第三个节点上
Source /root/test2.dump
安装组复制插件
启动复制
Start group_replication;
查看整个集群:
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+-------------
-+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT |
MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+-------------
-+
| group_replication_applier | 7d1a5504-948b-11e7-88e1-000c29173afe | mycat | 3308 |
ONLINE |
| group_replication_applier | 88befebf-949d-11e7-b8a7-000c2958aaef | slave4 | 3308 | ONLINE
|
| group_replication_applier | fab79358-4c05-11e7-96aa-000c29e99435 | slave2 | 3308 | ONLINE
多主模式搭建:
在两个节点的/etc/my.cnf中增加以下参数:
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
并重启mysql
/etc/init.d/mysql.server start
在两个节点上开启start group_replication
查看两个节点的状态都是非read_only模式:
mysql> select @@read_only;
+-------------+
| @@read_only |
+-------------+
| 0 |
在两个节点上分别写入数据都能同步到对方:
mysql> insert into students values(3,'a');
mysql> insert into students values(4,'b');
mysql> select * from students;
+-----+-------+
| sid | sname |
+-----+-------+
| 1 | a |
| 2 | b |
| 3 | a |
| 4 | b |
- 一、日常运维脚本
- 1.1 批量创建用户并赋予sudo权限
- 1.2 批量主机建立互信
- 1.3create_images.sh
- 1.4monitor.sh
- 1.5ftp脚本
- 1.6格式化分区
- 1.7简单的远程执行脚本
- 二、常用服务使用
- 1 ceph (分布式文件系统)
- 1.1 ceph 简介
- 1.2 准备环境
- 1.3 开始部署
- 1.4 cephfs挂载
- 1.5 RBD块存储
- 1.6 object 对象存储
- 1.7 集群扩展
- 1.7.1 增加删除MON
- 1.7.2 增加删除OSD
- 1.7.3 删除MDS
- 注意事项
- 遇到的问题
- 1.8ceph查找数据文件
- 1.9卸载并清理环境
- 2、mysql (数据库)
- 2.1 搭建
- 2.2 使用教程
- 2.2.1 mysql基础配置
- 2.2.1.1 用户权限管理
- 2.2.1.2用户资源限制
- 2.2.1.3 密码管理
- 2.2.1.4用户lock
- 2.2.2mysql语法详解
- 2.2.1建库、表语句
- 2.2.2.2 插入 insert
- 2.2.2.3更新 update
- 2.2.2.4删除 delete
- 2.2.2.5查询 select
- 2.2.6视图 索引 view index
- 2.2.7 修改 alert
- 2.2.2.8清理 truncate drop
- 2.2.9重命名 rename
- 示例语句
- 2.2.3mysql常用函数
- 2.3.1 对比操作符统概
- 2.3.2对比操作符详解
- 2.3.3逻辑操作符
- 2.2.4分配操作符
- 2.2.5流程控制函数
- 2.2.6字符串函数
- 2.2.7字符串对比函数
- 2.2.8数字函数
- 2.2.9日期和时间函数
- 2.2.10聚合/格式转换函数
- 2.2.11 子查询
- 示例语句
- 2.2.4 mysql 高级应用
- 2.2.4.1 存储过程 函数
- 2.2.4.2流程控制
- 2.2.4.3游标
- 2.2.4.4触发器
- 课堂练习
- 2.2.2.5 数据库设计
- 2.2.5.1 数据类型
- 2.2.5.2存储引擎
- 2.2.6Innodb内核
- 1、innodb事务和多版本控制
- 2、体系结构
- 3、InnoDB配置
- 4、buffer pool设置
- 5、其他配置
- innodb限制
- 2.7 字符集
- 2.8锁机制和事务
- 2.8.1锁机制
- 2.8.2事务
- 2.9分区
- 2.9.1 自动分区
- 2.10复制
- 2.11mysql搬移数据目录
- 2.12组复制 GR
- 简介
- 搭建
- 2.3日常运维
- 2.3.1定时任务
- 2.4mycat
- 2.4.1 报错分析
- 2.4.2 修改字符集
- 2.11 mycat使用
- 2.5遇到问题
- 2.5.1 表名库名忽略大小写
- 3、PAAS平台搭建
- 问题汇总
- 1、docker
- 2、日常运维
- 3.1 Kubernetes
- 3.1 kubernetes 高版本搭建
- 4、GlusterFS搭建
- 5、MooseFS搭建
- 5.1搭建
- 5.2运维
- 5.2.1 mfs日志解析
- 5.2.2清理mfs的垃圾数据
- 5.2.3元数据故障恢复
- 5.2.4 MFS优化
- 5.2.5 配置机架感知
- 5.2.6 客户端工具集
- 6、集群切换命令
- 7、ntp服务
- 8、monggoDB
- 8.1搭建单机
- 2、搭建集群及分片
- 9、MariaDB Galera Cluster
- 9.1源码安装MariaDB
- 9.2galera cluster 优劣
- 9.3 rpm安装mariadb
- 10 HAproxy1.7搭建
- 11、sysbench 搭建使用
- 0.5版本
- 12 percona-xtradb-cluster
- 13http服务相关
- 13.1 http状态码解析
- 14 zookeeper
- 14.1 zookeeper日志查看
- 14.2 配置解析
- 14.3 优化
- 15搭建私有pip源
- 16/var/log的日志文件解释
- 15 ansible的搭建及使用
- 15.1 搭建
- 15.2 使用说明
- 16. 搭建本地yum源
- zookeeper
- 优化
- 四、开发语言
- 1、GO语言
- 1.1go简介
- 1.1.1hello_world初识GO
- 1.1.2并发介绍
- 1.1.3 chan介绍
- 1.1.4多返回值
- 1.2go基础
- 1.2.1数据类型
- 1.2.2 go基础结构
- 1.2.3 const及变量介绍
- 1.2.3os和time介绍
- 1.2.4 字符串
- 1.2.5条件判断
- 1.2.6 homework
- go--help
- 1.3 go基础2
- 1.3.1 数组 array
- 1.3.2切片 slice
- 1.3.3 时间和日期
- 1.3.4指针类型
- 1.3.5函数
- 1.3.6可变参数
- 1.3.7 defer
- 1.3.8递归
- 1.9闭包
- 1.10 map
- 1.11 sort
- 1.12 struct 结构体
- 2.perl语言
- 2.1 安装lib包
- 3 python
- 1.语言基础
- 2、编程教学
- 2.1变量和序列
- 2.2 条件语句