目录
1. 启动mysql master slave1 slave2容器
1. 修改主从配置文件(主开启log-bin日志,从开启只读)
2. 重启master容器,并查看log_bin是否开启、添加backup用户
环境准备
1. 按上一篇安装mysql
2. 创建目录
#创建以下目录(文件目录与my.cnf中配置项对应)
/usr/local/mysql/master #mysql master
|--conf
|--data
|--log
/usr/local/mysql/slave1 #mysql slave
|--conf
|--data
|--log
/usr/local/mysql/slave2
|--conf
|--data
|--log
cd /usr/local/mysql/
# 使docker容器有写入权限
chown -R polkitd:input *
3. 准备配置文件
#主
[root@localhost mysql]# more master/conf/my.cnf
[client]
socket=/apps/mysql/mysql.sock
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=/apps/mysql
datadir=/apps/mysql/data
log-error=/apps/mysql/log/error.log
socket=/apps/mysql/mysql.sock
pid-file=/apps/mysql/mysql.pid
character_set_server=utf8mb4
interactive_timeout = 120
wait_timeout = 120
max_allowed_packet = 32M
server_id=1
========================================================
#从
[root@localhost mysql]# more slave1/conf/my.cnf
[client]
socket=/apps/mysql/mysql.sock
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=/apps/mysql
datadir=/apps/mysql/data
log-error=/apps/mysql/log/error.log
socket=/apps/mysql/mysql.sock
pid-file=/apps/mysql/mysql.pid
character_set_server=utf8mb4
interactive_timeout = 120
wait_timeout = 120
max_allowed_packet = 32M
server_id=2
========================================================
[root@localhost mysql]# more slave2/conf/my.cnf
[client]
socket=/apps/mysql/mysql.sock
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=/apps/mysql
datadir=/apps/mysql/data
log-error=/apps/mysql/log/error.log
socket=/apps/mysql/mysql.sock
pid-file=/apps/mysql/mysql.pid
character_set_server=utf8mb4
interactive_timeout = 120
wait_timeout = 120
max_allowed_packet = 32M
server_id=3
启动Mysql服务
1. 启动mysql master slave1 slave2容器
# -e TZ指定时区 -p 映射端口 -v 挂载本地目录 -d 后台运行
#master
[root@localhost master]# docker run --name mysql_master -e TZ="Asia/Shanghai" -p 3301:3306 -v /usr/local/mysql/master/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/master/:/apps/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.21
#slave1
[root@localhost master]# docker run --name mysql_slave1 -e TZ="Asia/Shanghai" -p 3302:3306 -v /usr/local/mysql/slave1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/slave1/:/apps/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.21
#slave2
[root@localhost master]# docker run --name mysql_slave2 -e TZ="Asia/Shangh