最近公司打算把多个库合并
需要一主两从
在此留下笔记 以便日后使用
安装docker
yum install docker -y
启动docker 并设置开机启动
systemctl start docker
systemctl enable docker
查看版本
docker version
拉取镜像
docker pull mysql:5.7.22
创建目录结构
mkdir -p /data/mysql/data /data/mysql/conf
运行容器
docker run --name mysql -p 3306:3306 -v /data/mysql/data:/var/lib/mysql /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.22
--name 为容器指定名称,这里是master -p 将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3306端口 -v 映射目录 -e 设置环境变量,这里是指定root账号的密码为root -d 后台运行容器,并返回容器ID mysql:5.7.22 指定运行的镜像
设置环境变量,更多设置请参考 my.cnf
--server-id=1 服务器id
--log-bin=mysql-bin 日志文件前缀
#--replicate-do-db 可以指定同步哪个数据库,多个用逗号分隔
如--replicate-do-db=db1,db2
拷贝默认配置文件进行修改
容器内路径 /etc/mysql/mysql.conf.d/mysqld.cnf
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /data/mysql/conf
修改本地上配置文件
本地路径 /data/mysql/conf/mysqld.cnf
在[mysqld] 节点添加
#服务器id 同一局域网不要重复, 可以用ip后一位 server-id=1
#二进制日志开启, 指定文件前缀 log-bin=mysql-bin
#需要同步的数据库
replicate-do-db=db1,db2
重启容器
docker restart mysql
设置容器开机自动启动(也可以在创建容器时 设置环境变量(--restart=always)
docker update --restart=always mysql
主从配置
#创建连接账号(指定从库ip) 多个可以创建多个 GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'从库ip';
#查看marster 状态 记住File,Position 从库连接必要参数 show master status;
从库配置
进入从库执行sql
#停止同步 stop slave; #更改同步参数 master_log_file , master_log_pos 在主库获取
change master to master_host="主库ip", master_user="root", master_password="root", master_log_file="mysql-bin.000001", master_log_pos=2172; #开始同步
start slave; #刷新同步(马上生效) flush privileges; #查看同步状态 show slave status;
如果 Slave_IO_Running , Slave_SQL_Running 都是Yes 表示同步成功