参考文档
#启动容器 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;
验证
#在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