docker mysql 读写分离

2022-04-18  本文已影响0人  街头民工

参考文档

#启动容器 one
docker run --name monemysql -d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=root -v /Users/mac/project/docker/mysql/mone/data:/var/lib/mysql  --privileged=true  mysql:latest

#拷贝配置文件文件
Docker cp monemysql:/etc/mysql/my.cnf my.cnf 
#删除
Docker rm monemysql
#重新启动
docker run --name monemysql -d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=root -v /Users/mac/project/docker/mysql/mone/data:/var/lib/mysql -v /Users/mac/project/docker/mysql/mone/conf/my.cnf:/etc/mysql/my.cnf --privileged=true  mysql:latest


#启动容器 two
docker run --name mtwomysql -d -p 3318:3306 -e MYSQL_ROOT_PASSWORD=root -v /Users/mac/project/docker/mysql/mtwo/data:/var/lib/mysql   --privileged=true  mysql:latest


Docker cp mtwomysql:/etc/mysql/my.cnf my.cnf 

docker run --name mtwomysql -d -p 3318:3306 -e MYSQL_ROOT_PASSWORD=root -v /Users/mac/project/docker/mysql/mtwo/data:/var/lib/mysql -v /Users/mac/project/docker/mysql/mtwo/conf/my.cnf:/etc/mysql/my.cnf  --privileged=true  mysql:latest

#进入mone容器
docker exec -it monemysql mysql -u root -p
 
#启动mysql命令,刚在创建窗口时我们把密码设置为:root

 
#创建一个用户来同步数据
#这里表示创建一个slave同步账号slave,允许访问的IP地址为%,%表示通配符

#数据库8版本的时候  建密码要用 sha256_password
CREATE USER 'houcl'@'%' IDENTIFIED WITH sha256_password by '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'houcl'@'%';

GRANT ALL PRIVILEGES ON *.* TO 'houcl'@'%';

FLUSH PRIVILEGES;

#查看状态,记住File、Position的值,在mtwo中将用到
show master status;


#进入mtwo容器
docker exec -it mtwomysql mysql -u root -p
 
#启动mysql命令,刚在创建窗口时我们把密码设置为:root

#设置主库链接,master_host即为容器IP,master_log_file和master_log_pos即为在mone容器中,通过show master status查出来的值;
change master to master_host='172.17.0.2',master_user='houcl',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=1290,master_port=3306;

#创建一个用户来同步数据
CREATE USER 'houcl'@'%' IDENTIFIED WITH sha256_password by '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'houcl'@'%';

GRANT ALL PRIVILEGES ON *.* TO 'houcl'@'%';

FLUSH PRIVILEGES;

#启动同步
start slave;
 
#查看状态
show master status;

#进入mone容器
#启动mysql命令,刚在创建窗口时我们把密码设置为:root
docker exec -it monemysql mysql -u root -p
 
#设置mtwo主库链接,参数详细说明同上
change master to master_host='172.17.0.3',master_user='houcl',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=1288,master_port=3306;

#启动同步
start slave ;

#分别在两个容器查看,显示 yes 就可以了
show slave status\G;
image.png

验证

#在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;

#然后去two 数据库查看是否存在相同数据
show databases

#在two 容器添加数据 然后去one 库查看
insert into userinfo values('mtwo',20);

#在启动MySQL服务的命令里加入记录错误日志的参数。
#示例如下:
log-error=/data/mysql/error/error.err
#查看到的最终结果为:
show variables like ‘log_error%’;
#修改文件夹的权限

重置 slave

reset slave

暂停 slave

Stop slave

删除用户

drop user houcl
上一篇 下一篇

猜你喜欢

热点阅读