MySQL5.7 基于GTID的多源复制
2017-06-07 11:49
701 查看
基于GTID的MySQL5.7的多源复制
主库1:192.168.1.246:3306
主库2:192.168.1.246:3307
从库1:192.168.1.246:3308安装5.7数据库
初始化5.7数据库,与之前不一样,命令如下(--defaults-file 一定为第一个参数)
./bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf --initialize --user=mysql
新登录进去后改密码,新建用户
set password for 'root'@'localhost'=password('root');
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
grant all privileges on *.* to 'root'@'%';
CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'repl';
grant replication slave on *.* to 'repl'@'192.168.1.%';
flush privileges;
3306端口上新建数据库db3306-新建表db_status
3307端口上新建数据库db3307-新建表db_status3307
CREATE TABLE `db_status3307` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`host` varchar(30) NOT NULL DEFAULT '',
`port` varchar(10) NOT NULL DEFAULT '',
`uptime_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=317 DEFAULT CHARSET=utf8;
insert into db_status3307(host,port) values('123456','3307');
搭建多源复制
把3306数据dump出,导入3308端口
/usr/local/mysql/bin/mysqldump -uroot -proot -h127.0.0.1 -P3306 --master-data=2 --single-transaction --databases --add-drop-database db3306 >3306.sql
/usr/local/mysql/bin/mysql -uroot -proot -h127.0.0.1 -P3308 < 3306.sql
配置CHANNEL 3306
CHANGE MASTER TO
MASTER_HOST = '192.168.1.246',
MASTER_PORT = 3306,
MASTER_USER = 'repl',
MASTER_PASSWORD = 'repl',
MASTER_AUTO_POSITION = 1 FOR CHANNEL '3306';
start slave;
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Retrieved_Gtid_Set: d023f67f-4a90-11e7-9eff-0800271d97b5:3
Executed_Gtid_Set: d023f67f-4a90-11e7-9eff-0800271d97b5:1-3
同样操作3307,数据dump出,导入3308端口
/usr/local/mysql/bin/mysqldump -uroot -proot -h127.0.0.1 -P3307 --master-data=2 --single-transaction --databases --add-drop-database db3307 >3307.sql
/usr/local/mysql/bin/mysql -uroot -proot -h127.0.0.1 -P3308 < 3307.sql
导入报错
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
此时3308 reset master;在执行导入
配置CHANNEL 3307
CHANGE MASTER TO
MASTER_HOST = '192.168.1.246',
MASTER_PORT = 3307,
MASTER_USER = 'repl',
MASTER_PASSWORD = 'repl',
MASTER_AUTO_POSITION = 1 FOR CHANNEL '3307';
start slave for channel '3307';
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Retrieved_Gtid_Set: 6e71bd59-4a97-11e7-ad35-0800271d97b5:9
Executed_Gtid_Set: 6e71bd59-4a97-11e7-ad35-0800271d97b5:1-9
多源复制处理报错与单机类似
命令 都加上 for channel '3307';
跳过错误
stop slave;
set gtid_next='6e71bd59-4a97-11e7-ad35-0800271d97b5:1';
begin;commit;
set gtid_next='AUTOMATIC';
start slave;
show slave status\G
主库1:192.168.1.246:3306
主库2:192.168.1.246:3307
从库1:192.168.1.246:3308安装5.7数据库
初始化5.7数据库,与之前不一样,命令如下(--defaults-file 一定为第一个参数)
./bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf --initialize --user=mysql
新登录进去后改密码,新建用户
set password for 'root'@'localhost'=password('root');
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
grant all privileges on *.* to 'root'@'%';
CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'repl';
grant replication slave on *.* to 'repl'@'192.168.1.%';
flush privileges;
3306端口上新建数据库db3306-新建表db_status
3307端口上新建数据库db3307-新建表db_status3307
CREATE TABLE `db_status3307` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`host` varchar(30) NOT NULL DEFAULT '',
`port` varchar(10) NOT NULL DEFAULT '',
`uptime_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=317 DEFAULT CHARSET=utf8;
insert into db_status3307(host,port) values('123456','3307');
搭建多源复制
把3306数据dump出,导入3308端口
/usr/local/mysql/bin/mysqldump -uroot -proot -h127.0.0.1 -P3306 --master-data=2 --single-transaction --databases --add-drop-database db3306 >3306.sql
/usr/local/mysql/bin/mysql -uroot -proot -h127.0.0.1 -P3308 < 3306.sql
配置CHANNEL 3306
CHANGE MASTER TO
MASTER_HOST = '192.168.1.246',
MASTER_PORT = 3306,
MASTER_USER = 'repl',
MASTER_PASSWORD = 'repl',
MASTER_AUTO_POSITION = 1 FOR CHANNEL '3306';
start slave;
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Retrieved_Gtid_Set: d023f67f-4a90-11e7-9eff-0800271d97b5:3
Executed_Gtid_Set: d023f67f-4a90-11e7-9eff-0800271d97b5:1-3
同样操作3307,数据dump出,导入3308端口
/usr/local/mysql/bin/mysqldump -uroot -proot -h127.0.0.1 -P3307 --master-data=2 --single-transaction --databases --add-drop-database db3307 >3307.sql
/usr/local/mysql/bin/mysql -uroot -proot -h127.0.0.1 -P3308 < 3307.sql
导入报错
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
此时3308 reset master;在执行导入
配置CHANNEL 3307
CHANGE MASTER TO
MASTER_HOST = '192.168.1.246',
MASTER_PORT = 3307,
MASTER_USER = 'repl',
MASTER_PASSWORD = 'repl',
MASTER_AUTO_POSITION = 1 FOR CHANNEL '3307';
start slave for channel '3307';
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Retrieved_Gtid_Set: 6e71bd59-4a97-11e7-ad35-0800271d97b5:9
Executed_Gtid_Set: 6e71bd59-4a97-11e7-ad35-0800271d97b5:1-9
多源复制处理报错与单机类似
命令 都加上 for channel '3307';
跳过错误
stop slave;
set gtid_next='6e71bd59-4a97-11e7-ad35-0800271d97b5:1';
begin;commit;
set gtid_next='AUTOMATIC';
start slave;
show slave status\G
相关文章推荐
- 基于GTID的MySQL多源复制配置
- MySQL5.7配置基于GTID的复制及GTID回退到传统模式的方法
- MySQL 5.7 基于GTID的半同步复制
- Mysql-5.7 基于GTID主从复制
- MySQL 5.6 基于GTID及多线程的复制详解
- MySQL 5.7 的多源复制
- MySQL主从复制之基于GTID及多线程
- Mysql-5.6基于GTID主从复制
- MySQL主从复制--MySQL5.6基于GTID及多线程复制
- MySQL-5.6.14基于GTID及多线程的复制
- MySQL(十五)之基于ssl加密搭建含有gtid特性的MySQL主从复制
- MySQL 5.7 的多源复制
- rhel6系统中,mysql 5.6复制新特性下主从复制配置[基于GTID] 推荐
- MySQL 5.7 传统复制到GTID在线切换
- MySQL 5.7的多源复制
- 基于Gtid的mysql主从复制 和 mysql-proxy 读写分离 - linux_夏日 - 51CTO技术博客
- MySQL 5.7 的多源复制
- 初试mysql5.7.2新特性:多源复制(MySQL 5.7 multi-source replication)
- MySQL5.6基于GTID同步复制,与如何实现MySQL负载均衡、读写分离。
- MySQL 5.6 基于GTID及多线程的复制详解