二、具体操作
1、创建目录(/app/mysql/):
--mysql-one
--logs
--data
--conf
--my.cnf
--mysql-two
--logs
--data
--conf
--my.cnf
2、主主配置文件
mysql-one: my.cnf
[mysqld]
server_id = 1
log-bin= mysql-bin
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
read-only=0
relay_log=mysql-relay-bin
log-slave-updates=on
auto-increment-offset=1
auto-increment-increment=2
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
mysql-two: my.cnf
[mysqld]
server_id = 2
log-bin= mysql-bin
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
read-only=0
relay_log=mysql-relay-bin
log-slave-updates=on
auto-increment-offset=2
auto-increment-increment=2
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
3、创建容器
//创建并启动容器;
//mysql-one
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /app/mysql-one/logs:/logs -v /app/mysql-one/data:/var/lib/mysql -v /app/mysql-one/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7
//mysql-two
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /app/mysql-two/logs:/logs -v /app/mysql-two/data:/var/lib/mysql -v /app/mysql-two/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7
4、容器设置详细
mysql-one容器设置:
//进入mysql-one容器
docker exec -it monemysql mysql -u root -p
//启动mysql命令,刚在创建窗口时我们把密码设置为:123456
//创建一个用户来同步数据
//这里表示创建一个slave同步账号slave,允许访问的IP地址为%,%表示通配符
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
//查看状态,记住File、Position的值,在mtwo中将用到
show master status;
小技巧:
查看容器IP:
docker inspect monemysql | grep IPA
mysql-two容器设置:
//进入mysql-two容器
docker exec -it mysql mysql -u root -p
//启动mysql命令,刚在创建窗口时我们把密码设置为:123456
//设置主库链接,master_host即为容器IP,master_log_file和master_log_pos即为在mone容器中,通过show master status查出来的值;
change master to master_host='10.21.14.165',master_user='slave',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=443,master_port=3306;
//创建一个用户来同步数据
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
//启动同步
start slave ;
//查看状态
show master status;
设置完后,再次进入Mysql-one容器
//进入mone容器
//启动mysql命令,刚在创建窗口时我们把密码设置为:root
docker exec -it mysql mysql -u root -p
//设置mysql-two主库链接,参数详细说明同上
change master to master_host='10.21.14.166',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=443,master_port=3306;
//启动同步
start slave ;
配置完成之后,可以验证双主配置是否正确
在mysql-one容器中,查看:
show slave status\G;
在mysql-two容器中,查看:
show slave status\G;
当红框两个Running状态都为Yes时,说明双主配置成功了~
三、验证
1、在mysql-one库中操作:
create database mone_demo;
use mone_demo;
create table userinfo(username varchar(50),age int);
insert into userinfo values('Tom',18);
select * from userinfo;
2、在mysql-one库操作完后,在mysql-two库中查看验证
首先查看数据库,发现数据库已经同步过来了,继续验证:
发现表的数据也同步过来了。
3、在mysql-two库中,在此库,此表中,新增记录
insert into userinfo values('mtwo',20);
在mysql-one库中查看,发现在mysql-two库中新增的记录,确实也同步到mysql-one库中来了哦~
4、继续走一波验证,在mysql-two库中,新增一个数据库,看是否同步到mysql-one库中
create database mtwo_demo;
在mysql-one库中,查看验证,查看数据库:
发现在mysql-two库新增的数据库,已经同步到了mysql-one容器中来了
作者:soane1983
链接:https://www.jianshu.com/p/079a51ecede4
共同学习,写下你的评论
评论加载中...
作者其他优质文章