MySQL 基于 GTID 的主从复制和多实例配置

配置基于 GTID 的主从复制

1.修改 master 和 slave 的配置文件

server-id=113

gtid_mode=on

enforce-gtid-consistency=on

replicate-do-db=gateway_target # 如果只需同步部分表,就在 slave 上配置这两个额外项

replicate-do-table=gateway_target.t_target_snapshot

2.导出 master 的库和表结构到 slave,先停止 master

mysqldump -d --master-data  -uroot -pAdmin123 -B gateway_target  > 115.sql

mysqladmin -uroot -p password  -S /tmp/mysql3307.sock < 115.sql

3.启动 slave 主从复制

mysql -uroot -proot -S /tmp/mysql3307.sock mysql

change master to master_host=‘192.168.50.115‘,master_port=3306, master_user=‘root‘, master_password=‘Admin123‘, master_auto_position=1;

start slave;

show slave status;

4.配置多源复制*

master-info-repository = table

relay-log-info-repository = table

START SLAVE FOR CHANNEL ‘master1‘;

MySQL多实例

1.创建实例目录

mkdir -p /var/lib/mysql{3307,3308}/data && chown -R mysql:mysql /var/lib/mysql{3307,3308}/data

2.初始化实例的数据库

mysqld --no-defaults --initialize-insecure --basedir=/usr --datadir=/var/lib/mysql3307/data --user=mysql --explicit_defaults_for_timestamp

遇到问题: mysqld: Can‘t create directory ‘/var/lib/mysql3307/data/‘ (OS errno 17 - File exists)

原因:ubuntu 有一个 AppArmor, 类似于 SELinux, 是一个系统安全应用程序, 定义了个别应用程序可以访问的系统资源, 如果不设置, 即使改了用户组权限也没用.

vi /etc/apparmor.d/usr.sbin.mysqld

/var/lib/mysql3307/ r,

/var/lib/mysql3308/ r,

/var/lib/mysql3307/** rwk,

/var/lib/mysql3308/** rwk,

systemctl restart apparmor

3.配置文件

[mysqld_multi]

mysqld=/usr/bin/mysqld_safe

mysqladmin=/usr/bin/mysqladmin

user=root

pass=root

[mysqld3307]

port=3307

socket=/tmp/mysql3307.sock

datadir=/var/lib/mysql3307/data

skip-external-locking

log-error=/var/lib/mysql3307/data/mysql3307_error.log

pid-file=/var/lib/mysql3307/data/mysql3307.pid

server-id=3307

4.设置实例密码

mysqladmin -uroot -p password  -S /tmp/mysql3307.sock

mysqladmin -uroot -p password  -S /tmp/mysql3308.sock

5.运行多实例,多实例不会影响默认实例的运行

mysqld_multi start | stop | report

6.设置远程登录

mysql -uroot -proot -S /tmp/mysql3307.sock mysql

update user set host=‘%‘ where user=‘root‘;

grant all privileges  on *.* to ‘root‘@‘%‘;

flush privileges;

sudo firewall-cmd --zone=public --add-port=3307/tcp --permanent && sudo firewall-cmd reload

原文地址:https://www.cnblogs.com/wanglongbiao/p/11507445.html

时间: 2024-10-07 04:11:22

MySQL 基于 GTID 的主从复制和多实例配置的相关文章

Mysql 基于GTID的主从复制及切换

参考 http://imysql.com/tag/gtid http://mysqllover.com/?p=594 Mysql 基于GTID的主从复制及切换 一.主从复制配置 两个mysql服务的my.cnf 中相关内容配置 [mysqld] #从复制数据库表设置 replicate-wild-ignore-table = mysql.%,information_schema.%,innodb.%,innodb_log.%,performance_schema.%,test.%,tmp.% #

企业——MYSQL(基于GTID)的主从复制

一.什么是主从复制? 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 二.主从复制的作用(好处,或者说为什么要做主从) 1.做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失. 2.架构的扩展.业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能. 3.读写分离,使数据库能支撑更大的并发.在报表中尤其重要.由于部分报表sql语句非常的

MySQL基于GTID的主从复制

1.什么是GTID? 1.全局唯一,一个事务对应一个GTID 2.替代传统的binlog+pos复制:使用master_auto_position=1自动匹配GTID断点进行复制 3.MySQL5.6开始支持 4.在传统的主从复制中,slave端不用开启binlog:但是在GTID主从复制中,必须开启binlog 5.slave端在接受master的binlog时,会校验GTID值 6.为了保证主从数据的一致性,多线程同时执行一个GTID 2.组成 Master_UUID:序列号举例:ceb0c

mysql主从之基于gtid的主从复制

一 GITD介绍 1.1 gtid的含义 Global Transaction Identifier,全局事务标识 阿里云的rds目前已经使用gtid 基于gtid的主从复制原理 每个mysql数据库上都有一个唯一uuid 每个事务生成一个id gtid由上面两者组合: uuid+事务id 1.2 优势 相对使用binlog+位置的方法来说 gtid让配置主从更加方便 从提升为主时比较方便 二 配置 2.1 主库的配置 [mysqld] bind-address=0.0.0.0 port=330

基于GTID的主从复制数据库

基于GTID的主从复制数据库 全局身份识别 GTID(global transaction identifier) 为了实现主备数据库的强一致性 GTID = source_id:transaction_id source_id 表示执行事务的主库 transaction_id 是一个序列号,表示这个主库上执行的第 n 个事务. server_uuid是系统自动生成的,用来的替代server_id,因为source_id是手工设置的,可能会有冲突 数据库的安装和初始化 server33,44:

基于GTID的主从复制搭建

前置检查 server-id = 10,master/slave不允许重复 log-bin gtid-mode = ON enforce-gtid-consistency = ON 1,利用mysqlpump复制master数据到slave,搭建基于GTID的主从复制,缺少GTID处理方法,暂不成功. mysqlpump --host= --user= --password= --single-transaction --default-parallelism=4 --compress-outp

Mysql基于GTID搭建主从同步

一.GTID的概念 1.全局事务标识:global transaction identifiers.2.GTID是一个事务一一对应,并且全局唯一ID.3.一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致.4.GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制.而是使用MASTER_AUTO_POSTION=1的方式开始复制.5.MySQL-5.6.5开始支持的,MySQL-5.6.10后开始完善.6.在传统的sl

docker下部署MySQL8基于GTID的主从复制

安装docker#yum install docker添加docker镜像仓库#vim /etc/docker/daemon.json {"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]} 拉取mysql镜像*# docker pull mysql 创建mysql容器# docker run -dit --name lisamysql001 -p 33307:3307 -e MYSQLROOTPAS

linux下mysql基于mycat做主从复制和读写分离之基础篇

Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , mycat1.6-RELEASE jdk1.7及其以上版本2.实现步骤一(mycat实现读写分离) 1.首先在两台服务器安装mysql 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rp