Mysql安装
-
镜像
为了方便,我直接选择了
bitnami/mysql:5.7.36
,说明文档:https://registry.hub.docker.com/r/bitnami/mysql -
docker-compose.yml
version: '3.8' services: mysql-master: image: bitnami/mysql:5.7.36 container_name: mysql-master restart: always ports: - '3306:3306' volumes: # 初始化数据库,只能在master节点,不需要可以删除 - ./init.sql:/docker-entrypoint-initdb.d/init.sql # node1的数据卷映射 - ./node1:/bitnami/mysql/data environment: - BITNAMI_DEBUG=true # 时区 - TZ=Asia/Shanghai # 默认编码集 - MYSQL_CHARACTER_SET=utf8mb4 - MYSQL_COLLATE=utf8mb4_general_ci # Root密码 - MYSQL_ROOT_PASSWORD=123456 # 主从复制用户 - MYSQL_REPLICATION_USER=repl-user # 主从复制密码 - MYSQL_REPLICATION_PASSWORD=123456 # 主从复制角色 - MYSQL_REPLICATION_MODE=master mysql-slave: image: bitnami/mysql:5.7.36 container_name: mysql-slave restart: always volumes: - ./node2:/bitnami/mysql/data ports: - '3307:3306' depends_on: # 分开部署可以去除该项 - mysql-master environment: - BITNAMI_DEBUG=true # 时区 - TZ=Asia/Shanghai # 默认编码集 - MYSQL_CHARACTER_SET=utf8mb4 - MYSQL_COLLATE=utf8mb4_general_ci # ROOT用户 - MYSQL_ROOT_USER=root # Root密码 - MYSQL_ROOT_PASSWORD=123456 # 主从复制用户 - MYSQL_REPLICATION_USER=repl-user # 主从复制密码 - MYSQL_REPLICATION_PASSWORD=123456 # 主从复制角色 - MYSQL_REPLICATION_MODE=slave # 主节点IP地址 - MYSQL_MASTER_HOST=192.168.246.135 # 主节点IP端口 - MYSQL_MASTER_PORT_NUMBER=3306 # 主节点ROOT用户 - MYSQL_MASTER_ROOT_USER=root # 主节点ROOT密码 - MYSQL_MASTER_ROOT_PASSWORD=123456
-
部署
-
将准备好的文件全部上传至服务器,如以下目录
. ├── docker-compose.yml # docker-compose ├── init.sql # 初始化SQL ├── node1 # node1数据卷 └── node2 # node2数据卷
-
授权
non-root
我们选择的镜像有个特殊的地方,他在运行的时候不是root用户,而是一个non-root用户1001,因此我们需要为数据卷授权。
注意:node1,node2文件夹,在下次需要重新初始化数据库的时候,需要删除,再创建,授权。这样才会执行初始化SQL
$ chown -R 1001 ./node1 $ chown -R 1001 ./node1 $ tree -ug . ├── [root root ] docker-compose.yml ├── [root root ] init.sql ├── [1001 root ] node1 └── [1001 root ] node2
-
启动容器
docker compose up --detach --scale mysql-master=1 --scale mysql-slave=1
-