主机
主----172.25.41.1
从----172.25.41.2
主从安装MySQL
异步复制
配置主存储
修改配置文件,添加复制来源以及服务id
log-bin=mysql-bin
server-id=1
启动服务器,从日志文件/var/log/mysqld.log 中获得初始密码
cat /var/log/mysqld.log |grep pass
使用命令进行安全初始化并修改密码
mysql_secure_installation
进入mysql配置同步用户,以及可同步服务器的IP
创建用户
create user 'octopus'@'172.25.41.%' identified by 'Zhangyu1998.';
授予复制权限
grant replication slave on *.* to 'octopus'@'172.25.41.%';
配置从存储
添加服务id,启动MySQL
server-id=2
启动服务器,从日志文件/var/log/mysqld.log 中获得初始密码
cat /var/log/mysqld.log |grep pass
使用命令进行安全初始化并修改密码
mysql_secure_installation
添加主服务器,设置为从服务器,其中MASTER_LOG_FILE
MASTER_LOG_POS参数通过命令查看主服务器的内容确认
show master status;
CHANGE MASTER TO
MASTER_HOST='172.25.41.1',
MASTER_USER='octopus',
MASTER_PASSWORD='Zhangyu1998.',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=2956;
开始结束复制
start/stop slave;
结果测试
主服务器上创建数据库octopus1;172.25.41.1
查看从服务器172.25.41.2
设置 GTID(Global transaction identifiers)
主从存储均设置为gtid模式
gtid_mode=on
enforce-gtid-consistency=true
主存储设置,添加插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
从存储添加插件
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
查看插件状态
SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%semi%';
关闭同步
stop slave;
设置从存储同步参数并开启同步
change master to master_host='172.25.41.1',master_user='octopus',master_password='Zhangyu1998.',master_auto_position=1;
start slave;
查看设置结果
此时在主服务器上操作数据库octopus,查看结果
查看mysql记录内容
半同步复制
主存储
SET GLOBAL rpl_semi_sync_master_enabled = 1
从存储
SET GLOBAL rpl_semi_sync_slave_enabled = 1
查看环境和状态变量
show variables like '%semi%';
show status like '%rpl_semi_sync%';
半同步复制失败后,自动修改为异步复制方式
测试,从存储关闭同步线程
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
主存储进行插入测试,默认10s超时
此时变为异步复制
查看变量确认
组复制
清除/var/lib/mysql下的所有文件(实际情况下删除之前需要先备份所有数据库)
编辑数据库配置文件,添加内容如下
# 服务器ID,另外两台配置为2,3
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
# 组名称,不能与组内用户的uuid重复
loose-group_replication_group_name="34ad2599-b01f-11e9-bcf3-52540095829b"
loose-group_replication_start_on_boot=off
# 本地IP地址其余两台设为172.25.41.2、172.25.41.3
loose-group_replication_local_address= "172.25.41.1:33061"
# 组内用户
loose-group_replication_group_seeds= "172.25.41.1:33061,172.25.41.2:33061,172.25.41.3:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="127.0.0.1,172.25.0.0/24"
loose-group_replication_enforce_update_everywhere_checks=ON
# 不设置主节点
loose-group_replication_single_primary_mode=OFF
Server示例
重新启动数据库,查看初始密码
进入数据库,修改初始密码,同时进行同步参数配置
# 初次进入数据库修改初始密码以便接下来的操作
alter user root@localhost identified by 'Zhangyu1998.';
# 关闭LOG_BIN文件
SET SQL_LOG_BIN=0;
# 创建同步用户
CREATE USER rpl_user@'%' IDENTIFIED BY 'Zhangyu1998.';
# 授权权限
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
# 刷新权限
FLUSH PRIVILEGES;
# 打开文件
SET SQL_LOG_BIN=1;
# 配置同步复制参数
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Zhangyu1998.' FOR CHANNEL 'group_replication_recovery';
安装组复制插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
# 设置为主节点,只有主存储(1)需要设置命令
set GLOBAL group_replication_bootstrap_group=on;
# 设置兼容加入组参数(只有存储2、3需要执行该参数)
set global group_replication_allow_local_disjoint_gtids_join=on;
START GROUP_REPLICATION;
# 关闭设置主节点,只有主存储(1)需要设置该命令
set GLOBAL group_replication_bootstrap_group=on;
命令配置示例
查看插件
配置结果
SELECT * FROM performance_schema.replication_group_members;
建立数据库进行测试
注意(此时建立数据库时,需要加入主键,否则会在插入数据时产生错误)
查看发现数据库内容相同
Server2
Server1